How To Port a Theme: The Nottach Way
This first draft will probably have confusing parts so if you get stuck let me know and I'll make it clearer.
Backing Up:
The first thing you're going to want to do is backup the files you will be editing. I recommend making a CWM zip of the backed up files. That way if you bootloop you can easily flash back.
Steps To Backup:
You will most likely be theming framework-res.apk and systemui.apk at first. I will show you how to back them up. If you theme other files in the future be sure to add the original to your backup CWM update by repeating these steps. *note* this installer will only install files to the /system directory.
Pull /system/framework/framework-res.apk and /system/app/SystemUI.apk from your device using either adb or root explorer.
Download this pre-scripted zip and extract it to a folder of your choosing.
Place your original framework-res and systemui in their repective folders (framework;app).
Next zip the system and META-INF folders at the root of the extracted folder and be sure to choose a compression of "store" or "none".
Copy the new zip to your SD and try to flash it. Just to make sure it works.
File Structure of the New Zip should be:
Code:
META-INF
-(unchanged contents)
system
-app
--systemui.apk
-framework
--framework-res.apk
If it doesn't flash the most common mistake would be not choosing "store" or "none" for compression.
Once you've got your back-up working you can begin theming.
Basic Theming:
These are my steps. They may seem backwards to some but I can get a quality port out in under an hour this way.
Getting the needed files.
Find a hdpi theme of your choosing.
Using winRAR extract the themes framework-res.apk and systemui.apk (if present).
Extract each apk to its own folder.
You should now have all the icons you should need inside each drawable-hdpi folder you just extracted, one for framework-res and one for systemui.
Have a look through the drawable-hdpi folders. These are the only two folders you'll need so you can delete the others if you wish.
Prepping.
Extract your back-up Zip to a new folder and name that folder after the theme you are working on.
First open framwork-res.apk with winrar.
Navigate to /res/drawable-hdpi
Copying Images.
You'll want to set both your winRAR window and the themes drawable folder side by side.
Next overwrite the icons/images in winRAR with the icons/images in the themes folder. Make sure to only choose the icons/images that are in the /res/drawable-hdpi winRAR. Dont just drag them all in, this will undoubtly leave you with unused icons that will bloat your framework.
Once youve copied over all the images you need, overwriting the originals.
Close the archive (winRAR).
Do the same for systemui.apk, only choosing the needed files.
Tips: If porting a CM7 theme a lot of file renaming will be required. First, sort all the files based on their prefixes (eg. framework-res_; com_android_systemui_; etc). Then, use all file renamer to easily delete XX characters from the left side. You'll need to have a look at what I mean to really get it.
Tips: Some themes lack a systemui.apk but will instead have the images needed for systemui.apk inside their framework-res.apk.
Tips: If a theme doesnt have enough battery icons you will have to make more to suit your framework-res. Do this by spanning the gaps with copies. For instance, if there are only 20 icons and you need 100, make 5 copies of each and name appropriately. This is the biggest pain about a 1% battery.
Once you've overwriten all the images in framework-res and sytemui go ahead and zip up your package following the same steps as the backup, naming the zip appropriately. Don't forget the "store" or "none" compression.
Now try to flash it. If it works it most likely won't be perfect, this is a first draft.
If it doesn't work, again check your compression and zip file structure.
Now take notes of things that are wrong or need fixing, text colors particularly. We will fix them in the next steps.
Editing the status bar.
Now that you can see what needs fixing in the status bar we will decompile your original (backup) systemui.apk and edit the xmls. I will assume you have apkmanager and know how to use it. There are other guides for that so I won't go to deep into it. Look here for a video tutorial on apkmanager.
Decompile systemui.apk
Make edits to XMLs.
These are the edits I make most often.
/res/layout/status_bar.xml -
Code:
<TextView android:textSize="16.0sp" android:textStyle="bold" android:gravity="left|center" android:id="@id/onsText" android:paddingLeft="6.0px" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:maxLength="[COLOR="Red"]0[/COLOR]" /> [COLOR="red"]///HIDES CARRIER TEXT[/COLOR]
Click to expand...
Click to collapse
/res/layout/status_bar_expanded.xml -
Code:
<com.android.systemui.statusbar.DateView android:textAppearance="?android:textAppearanceLarge" android:textColor="[COLOR="Red"]#ffffffff[/COLOR]" android:layout_gravity="center_vertical" android:id="@id/dateLabel" android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" /> [COLOR="red"]///DATE TEXT COLOR[/COLOR]
Click to expand...
Click to collapse
/res/values/drawable.xml -
Code:
<item type="drawable" name="shade_bgcolor">[COLOR="Red"]#ff162939[/COLOR]</item> [COLOR="red"]///NOTIFICATION TITLE BACKGROUND (eg. Ongoing)[/COLOR]
Click to expand...
Click to collapse
/res/values/style.xml -
Code:
<style name="TextAppearance.StatusBar.Title" parent="@android:style/TextAppearance.StatusBar">
<item name="android:textAppearance">?android:textAppearanceSmall</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">[COLOR="red"]#ffffffff[/COLOR]</item> [COLOR="red"]///NOTIFICATION TITLE TEXT (eg. No Notifications)[/COLOR]
</style>
Click to expand...
Click to collapse
After making your xml edits recompile, be sure to delete the edited files and resources.arsc from the keep folder during recompiling. If you don't you won't see any changes.
If you compiled with no errors you're good to go. If you have errors then you have a mistake in your code. You can check the apkmanager log for line number errors.
Once recompiled you will have unsignedSystemUI.apk in your place_here_for_modding folder. Open it in winRAR along with your previous version of SystemUI.apk from the first draft and drag the images from the first draft drawable-hdpi folder into the new unsignedSysemUI.apk's corresponding folder, overwriting the images there. Now rename unsignedSystemUI.apk to SystemUI.apk and overwrite your first draft version. This is your second draft SystemUI.apk and we will create a second draft framework-res.apk in the next step using these same steps.
Editing the framework.
We will now decompile your original (backup) framework-res.apk and edit the xmls. Again using apkmanager.
Decompile systemui.apk
Make edits to XMLs.
These are the edits I make most often.
/res/drawable/progress_horizontal.xml - sliders & volume bars
Code:
<?xml version="1.0" encoding="UTF-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@id/background">
<shape>
<corners android:radius="5.0dip" />
<gradient android:startColor="#ff262223" android:endColor="#ff414042" android:angle="270.0" android:centerY="0.13" android:centerColor="#ff262223" />
<stroke android:width="2.0px" android:color="#ff999999" />
</shape>
</item>
<item android:id="@id/secondaryProgress">
<clip>
<shape>
<corners android:radius="5.0dip" />
<gradient android:startColor="#80[COLOR="red"]547f8c[/COLOR]" android:endColor="#a0[COLOR="red"]87cce2[/COLOR]" android:angle="-90.0" android:centerY="0.13" android:centerColor="#80[COLOR="red"]547f8c[/COLOR]" />
<stroke android:width="2.0px" android:color="#ff999999" />
</shape>
</clip>
</item>
<item android:id="@id/progress">
<clip>
<shape>
<corners android:radius="5.0dip" />
<gradient android:startColor="#ff[COLOR="red"]547f8c[/COLOR]" android:endColor="#ff[COLOR="red"]87cce2[/COLOR]" android:angle="-90.0" android:centerY="0.13" android:centerColor="#ff[COLOR="Red"]547f8c[/COLOR]" />
<stroke android:width="2.0px" android:color="#ff999999" />
</shape>
</clip>
</item>
</layer-list>
Click to expand...
Click to collapse
/res/values/styles.xml - text colors
Code:
<style name="TextAppearance.Widget.IconMenu.Item" parent="@style/TextAppearance.Small">
<item name="textColor">[COLOR="red"]#ff555555[/COLOR]</item> [COLOR="red"]///POP UP MENU TEXT COLOR[/COLOR]
</style>
Code:
<style name="Theme.ExpandedMenu" parent="@style/Theme">
<item name="listViewStyle">@style/Widget.ListView.Menu</item>
<item name="textColor">[COLOR="red"]#ff555555[/COLOR]</item> [COLOR="red"]///SECONDARY MENU TEXT COLOR[/COLOR]
<item name="windowAnimationStyle">@style/Animation.OptionsPanel</item>
<item name="background">@null</item>
[COLOR="red"]///DELETED LINE[/COLOR]
</style>
Code:
<style name="TextAppearance.WindowTitle" parent="@style/TextAppearance">
<item name="textSize">14.0sp</item>
<item name="textStyle">bold</item>
<item name="textColor">[COLOR="Red"]#ffffffff[/COLOR]</item> [COLOR="red"]///WINDOW TITLE TEXT (App Title Bar)[/COLOR]
</style>
Code:
<style name="TextAppearance.StatusBar.Title" parent="@style/TextAppearance.StatusBar">
<item name="textStyle">bold</item>
<item name="textColor">[COLOR="red"]#ffffffff[/COLOR]</item> [COLOR="red"]///STATUS BAR TITLE (May be same as SystemUI?)[/COLOR]
</style>
Code:
<style name="TextAppearance.StatusBar.EventContent.Title" parent="@style/TextAppearance.StatusBar.EventContent">
<item name="textSize">16.0sp</item>
<item name="textStyle">bold</item>
<item name="textColor">[COLOR="red"]#ffffffff[/COLOR]</item> [COLOR="red"]///FIRST LINE OF NOTIFICATION[/COLOR]
</style>
Code:
<style name="TextAppearance.StatusBar.EventContent" parent="@style/TextAppearance.StatusBar">
<item name="textColor">[COLOR="red"]#ffffffff[/COLOR]</item> [COLOR="red"]///2ND LINE OF NOTIFICATION[/COLOR]
</style>
Code:
<style name="Widget.Button" parent="@style/Widget">
<item name="textAppearance">?textAppearanceSmallInverse</item>
<item name="textColor">[COLOR="red"]#ffffffff[/COLOR]</item> [COLOR="red"]///BUTTON TEXT COLOR[/COLOR]
<item name="gravity">center</item>
<item name="background">@drawable/btn_default</item>
<item name="focusable">true</item>
<item name="clickable">true</item>
</style>
Click to expand...
Click to collapse
After making your xml edits recompile, be sure to delete the edited files and resources.arsc from the keep folder during recompiling. If you don't you won't see any changes.
If you compiled with no errors you're good to go. If you have errors then you have a mistake in your code. You can check the apkmanager log for line number errors.
Now following the same steps as we did for SystemUI we will overwrite the images in the new unsignedframework-res.apk with those from the first draft framework-res.apk. By dragging from one winRAR window to the other. Once you've done that rename the new apk and overwrite the first draft version. Create a new update zip, using "store" or "none", and flash it. You should now see the text edits you just made.
Advanced Tips
.9 Images.
--If a .9.png is all (every pixel) one color then the .9 patch does not matter.
Hex editing.
--It is not always necessary to decompile to make text color or slider edits. Instead if know what color you're looking for you can use a hex editor to make the edits.
--For instance, to change text colors without decompiling you would.
Open framework-res.apk in winRAR.
Extract resources.arsc
Open resources.arsc in a hex editor.
Search for the color in this format BB GG RR AA, as opposed to usual aarrggbb. (Red = ffff0000 = 00 00 FF FF)
Replace with desired color following same format.
Save and overwrite original by dragging new version into winRAR.
--To change slider colors without decompiling you would.
Open framework-res.apk in winRAR.
Extract /res/drawable/progress_horizontal.xml
Open progress_horizontal.xml in a hex editor.
Search for 08 00 00 1C.
After each instance examine the next four pairs.
The first few will be grey but eventually youll come to a color.
That's where you start editing. (6 total)
Replace with desired color following same format.
Save and overwrite original by dragging new version into winRAR.
Undoing Moto's Status Bar Edits.
Post #15
Adding an Animated PullDown Shade.
[RESOURCES] - Theming the Atrix 4G: tools, processes, locations, etc.
Spot on work! Thanks a lot! I am planning to see if I can make a clean minimalistic theme once I can figure out how to do theming correctly
Motorola Atrix 2.3.4 bl unlocked full debian weptop and themed
Small donation on it's way to you for all your hard work!
Confirmation number: 3W612387P3801853H.
Awesome work! Hopefully I will get some time to understand this and port a theme or two
Nottach said:
Advanced Tips
.9 Images.
--If a .9.png is all (every pixel) one color then the .9 patch does not matter.
Hex editing.
--It is not always necessary to decompile to make text color or slider edits. Instead if know what color you're looking for you can use a hex editor to make the edits.
--For instance, to change text colors without decompiling you would.
Open framework-res.apk in winRAR.
Extract resources.arsc
Open resources.arsc in a hex editor.
Search for the color in this format BB GG RR AA, as opposed to usual aarrggbb. (Red = ffff0000 = 00 00 FF FF)
Replace with desired color following same format.
Save and overwrite original by dragging new version into winRAR.
--To change slider colors without decompiling you would.
Open framework-res.apk in winRAR.
Extract /res/drawable/progress_horizontal.xml
Open progress_horizontal.xml in a hex editor.
Search for 08 00 00 1C.
After each instance examine the next four pairs.
The first few will be grey but eventually youll come to a color.
That's where you start editing. (6 total)
Replace with desired color following same format.
Save and overwrite original by dragging new version into winRAR.
Click to expand...
Click to collapse
Can i ask you a question seeing though you know abit about framework modding can you see were i have gone wrong here - http://forum.xda-developers.com/showthread.php?t=1195549
I can live with it but i would rather change it to a light gray or a different color? Or if not how would i be able to change the text in these pop up windows so i can see them properly? Any help would be very nice & not had a reply about this yet? Can you help? you can private message me if you would prefer
Thanks in advance
Png sizes
Okay do the PNG/.9.png from the ported theme have to be the same size as the ones in the Atrix drawable-hdpi?
Thanks a lot on the tutorial it helped me figure out how to edit the XMl files.
D$G said:
Okay do the PNG/.9.png from the ported theme have to be the same size as the ones in the Atrix drawable-hdpi?
Thanks a lot on the tutorial it helped me figure out how to edit the XMl files.
Click to expand...
Click to collapse
Not necessarily. As long as the .9 patch is ok then it should work. though it may look weird if theres a themed background. such as a aosp buuton on motoblur background. trial and error is your best bet there.
I'm guessing that this is a generic tutorial for most, if not all android devices?
XCellPhoneSalesRep said:
I'm guessing that this is a generic tutorial for most, if not all android devices?
Click to expand...
Click to collapse
You are correct.
If I change some icons in other .apks like the blur-res.apk, will the updater script you posted include that when it updates?
redz22 said:
If I change some icons in other .apks like the blur-res.apk, will the updater script you posted include that when it updates?
Click to expand...
Click to collapse
Yes, those are in the /system directory so it will work. Just make sure to put them in the right folder (framework). That disclaimer is more for those editing something in /data.
How to "undo" MotoBlurs Status Bar
As many of you themers out there have mostly likely noticed, Moto has screwed with the Status Bar layout in GingerBread which makes theming difficult. I will show you how to revert to the way it was in Froyo.
I will show you you how to perform these edits:
Change the Date Background back to status_bar_header_background.
Change the Title Background back to title_bar_portrait.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
1. Decompile SystemUI.apk
2. Open /res/layout/status_bar_expanded.xml
---First we'll change the Date Background.
---Out of the box it calls the drawable title_bar_portrait. In Froyo its called status_bar_header_background. So in order to go back to that we will change:
Code:
<LinearLayout android:orientation="horizontal" android:background="@drawable/title_bar_portrait" android:paddingTop="3.0dip" android:paddingRight="3.0dip" android:paddingBottom="5.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content">
---to:
Code:
<LinearLayout android:orientation="horizontal" [COLOR=Red]android:background="@drawable/status_bar_header_background"[/COLOR] android:paddingTop="3.0dip" android:paddingRight="3.0dip" android:paddingBottom="5.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content">
Click to expand...
Click to collapse
---And add your status_bar_header_background png to drawables-hdpi. It can be either .png or .9.png. If it's a .9.png make sure it's in decompiled form, with the 1 pixel border, or else you will get an error during recompiling.
Click to expand...
Click to collapse
---Next we'll have the title background use the existing title_bar_portrait image instead of the shade_bgcolor.
---So we change:
Code:
<com.android.systemui.statusbar.NotificationLinearLayout android:orientation="vertical" android:id="@id/notificationLinearLayout" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Title" android:id="@id/noNotificationsTitle" android:background="@drawable/shade_bgcolor" android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/status_bar_no_notifications_title" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Title" android:id="@id/ongoingTitle" android:background="@drawable/shade_bgcolor" android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/status_bar_ongoing_events_title" />
<LinearLayout android:orientation="vertical" android:id="@id/ongoingItems" android:layout_width="fill_parent" android:layout_height="wrap_content" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Title" android:id="@id/priorityTitle" android:background="@drawable/shade_bgcolor" android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/status_bar_priority_events_title" />
<LinearLayout android:orientation="vertical" android:id="@id/priorityItems" android:layout_width="fill_parent" android:layout_height="wrap_content" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Title" android:id="@id/latestTitle" android:background="@drawable/shade_bgcolor" android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/status_bar_latest_events_title" />
<LinearLayout android:orientation="vertical" android:id="@id/latestItems" android:layout_width="fill_parent" android:layout_height="wrap_content" />
</com.android.systemui.statusbar.NotificationLinearLayout>
---To:
Code:
<com.android.systemui.statusbar.NotificationLinearLayout android:orientation="vertical" android:id="@id/notificationLinearLayout" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Title" android:id="@id/noNotificationsTitle" [COLOR=Red]android:background="@drawable/title_bar_portrait"[/COLOR] android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/status_bar_no_notifications_title" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Title" android:id="@id/ongoingTitle" [COLOR=Red]android:background="@drawable/title_bar_portrait"[/COLOR] android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/status_bar_ongoing_events_title" />
<LinearLayout android:orientation="vertical" android:id="@id/ongoingItems" android:layout_width="fill_parent" android:layout_height="wrap_content" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Title" android:id="@id/priorityTitle" [COLOR=Red]android:background="@drawable/title_bar_portrait"[/COLOR] android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/status_bar_priority_events_title" />
<LinearLayout android:orientation="vertical" android:id="@id/priorityItems" android:layout_width="fill_parent" android:layout_height="wrap_content" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Title" android:id="@id/latestTitle" [COLOR=Red]android:background="@drawable/title_bar_portrait"[/COLOR] android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/status_bar_latest_events_title" />
<LinearLayout android:orientation="vertical" android:id="@id/latestItems" android:layout_width="fill_parent" android:layout_height="wrap_content" />
</com.android.systemui.statusbar.NotificationLinearLayout>
Click to expand...
Click to collapse
---No need to add an image as it already exists.
Click to expand...
Click to collapse
3. Compile SystemUI.apk, be sure to delete the old status_bar_expanded.xml from the keep folder.
4. Done.
Hi,
Very cool to see someone documenting what they are doing! Keep up the good work.
Cheers!
I've been waiting for this! Love you so much...in brotherly way
I came into this android world with guns.blazing. a fresh newb and learnt to flash/root/oc etc. At one point I had stayed up 4 days in a row (using a different,but similar guide) trying to tweak a theme. Hell I was only trying to change the battery icon! I never got it,till this day. In gonna give it another shot (havent tried in months) using this guide. If finally get it,ill post a very detailed step by step video on youtube. One question though,when adding the icon I want to the framework folder,do I delete the one already there,or just let it overwrite? Thats one thing I never understood fully
Sent from my MB860 using XDA Premium App
brd912 said:
I came into this android world with guns.blazing. a fresh newb and learnt to flash/root/oc etc. At one point I had stayed up 4 days in a row (using a different,but similar guide) trying to tweak a theme. Hell I was only trying to change the battery icon! I never got it,till this day. In gonna give it another shot (havent tried in months) using this guide. If finally get it,ill post a very detailed step by step video on youtube. One question though,when adding the icon I want to the framework folder,do I delete the one already there,or just let it overwrite? Thats one thing I never understood fully
Sent from my MB860 using XDA Premium App
Click to expand...
Click to collapse
Im thinking you mean in the decompiled projects folder. you overwrite the image in that folder but during recompiling when given the prompt, you delete the old one from the keep folder. if you delete it from keep it will replace it with the one from the project.
When I decompile systemui.apk, it gave me 'an error occured'. Is it normal?
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
I am not responsible for your device.
You must be rooted.
The lastest uploads can be found HERE and HERE.
I will not be taking any more requests. Honestly, I'm just tired of modding this apk. I've got it how I like it, and I made a couple of other versions based off of what users have said they wanted.
If you want something different that what's posted here, you'll have to mod it yourself. See the section below to learn how to do that. It's not difficult, not "overly" time consuming, and the tools are free.
If you need help with how to complete the mods, or questions about the process in general, I will of course be more than willing to help you out. Just ask.
MIY (Mod It Yourself)
Have you used the instructions below to make your own unique mods to the Pixel 2 Launcher?
If so, you should share them with everyone! Post them up and I'll link to them here in the first post.
Also, let me know whether or not you found the instructions easy to understand.
I've heard that a lot of Android newbies have hopped on board with the release of the Pixel 2 series. If that's you, welcome to the wonderful world of Android!
Due to this, I'm going to take this tutorial from the top and break it down step by step.
The Setup
Tools Required:
A computer
Java installed: https://java.com/en/
A rooted Pixel 2 XL - How to root Pixel 2 XL
Proper drivers for the Pixel 2 XL.
Apktool - https://ibotpeaches.github.io/Apktool/ (scroll down and download the newest version)
Platform Tools (newest version - 16.0.2, at the time of this writing) - https://developer.android.com/studio/releases/platform-tools.html (Choose your OS version - Windows, OS, or Linux)
Text Editor - I use Notepad++ https://notepad-plus-plus.org/download/v7.5.1.html
7zip - a free zip extractor. Not necessary, but definitely better than using Windows built-in zip tool.
Step 1 - Ensure you have USB Debugging enabled on your phone
If you don't know how to do that:
Go to Settings>System>About Phone
Tap on "Build Number" seven times. You will see a message that says you are now a developer
Go back one screen to Settings>System
Click on "{ } Developer Options"
Scroll down a tiny bit to the "Debugging" section
Turn on "USB Debugging"
Plug your phone into your PC and answer the prompt on your phone to "Allow USB debugging?" Check the checkbox to "Always allow from this computer," then click "OK."
Step 2 - Ensure you have the proper drivers for the Pixel 2 XL installed on your PC. Plugging up your phone to your PC should cause Windows to automatically download and install them for you, or if you've ever had a Pixel or Nexus phone in the past, then you probably already have them; but if not, you can get them from here - https://developer.android.com/studio/run/win-usb.html
Step 3 - If necessary, download and install Notepad++ or whatever text editor you downloaded.
Step 4 - Create a new folder somewhere and call it whatever you like. We are going to put all of the stuff we just downloaded in said folder. For the purposes of this tutorial we'll call the folder MyAndroidMods.
Step 5 - Download Apktool from the link above and put it in in the MyAndroidMods folder. Rename the apktool_2.3.0.jar (version 2.3.0 at the time of this writing) to just apktool.jar
Step 5.5 - Download the Apktool Windows wrapper script - https://ibotpeaches.github.io/Apktool/install/ (This step is not necessary, but it makes things easier, trust me)
- Do as the instructions say, and right-click the hyperlink "wrapper script" text, and choose "Save Link As..." from the context menu. Save it as "apktool.bat" to the MyAndroidMods folder.
- If you should accidentally save it as "apktool.bat.txt," just delete the ending ".txt" part so that it becomes just "apktoo.bat" Windows will ask you if you're sure you want to change it because changing it might make the file unstable. Just click "Yes."
- The point of the apktool.bat file is that when we get to the command line part we will only have to type "apktool (perform command here)" instead of "java -jar apktool.jar (perform command here)." Believe me, every second saved is great.Step 6 - Dowload the Platform Tools using the link provided above. It doesn't matter where you save the zip.
Step 7 - Extract the "platform-tools-latest-windows" zip. It doesn't matter where.
Step 8 - Copy all of the contents from inside the extracted "platform-tools-latest-windows\platform-tools" folder into your MyAndroidMods folder.
Step 9 - On your PC, go to C:\Windows\System32
Step 10 - Scroll down until you find the "cmd.exe" file.
Step 11 - Copy the cmd.exe file into your MyAndroidMods folder (this way we won't have to CD into your folder)
Step 13 - On your phone, go to /system/priv-app/NexusLauncherPrebuilt and copy the NexusLauncherPrebuilt.apk to your phone's Main Storage.
Step 14 - Plug your phone into your PC if it's not already.
Step 15 - On your phone, click the "USB charging this device" notification and change it to "Transfer files."
Step 15 - Copy or move the NexusLauncherPrebuilt.apk from your phone's Main Storage to the MyAndroidMods folder on your PC.
Step 16 - On your phone, go to /system/framework and copy the framework-res.apk to your phone's Main Storage.
Step 17 - Copy or move the framework-res.apk from your phone's Main Storage to the MyAndroidMods folder on your PC.
Step 18 - THE SET UP IS NOW COMPLETE! CONGRATULATIONS!
Ensure that your MyAndroidMods folder looks like the image below. Notice everything is in the root of the MyAndroidMods folder. Ensure that there is: apktool.bat, apktool.jar, cmd.exe, all the platform tool files, framework-res.apk, and the NexusLauncherPrebuilt.apk.
Using Apktool
For the purposes of this tutorial, we will only be concerning ourselves with three apktool commands:
- Installing the framework
- Decompiling an apk
- Recompiling an apk
Step 1 - The first thing we need to do is install the framework. To do that:
- Double click the cmd.exe in your MyAndroidMods folder
- In the command prompt window that opens up, type:
Code:
apktool if framework-res.apk
- You should then see a message that says, "Framework installed to:.......", like so:
Step 2 - Decompiling the Launcher.apk
- In the command prompt window, type:
Code:
apktool d NexusLauncherPrebuilt.apk
- Once that process is finished, it should look like this:
Step 3 or the last step after you've made your mods - Recompiling the apk
- In the command prompt window, type:
Code:
apktool b NexusLauncherPrebuilt -c
- Once that process is finished, it should look like this:
The Good Stuff - How to Make the Mods
Open up the files mentioned in the sections below using your favorite text editor.
To remove the text from ONLY the home screen:
Go to /res/values/styles.xml, and find this section:
Code:
<style name="BaseIcon.Workspace" parent= [user=262514]@style[/user]/BaseIcon">
<item name="android:shadowColor">?workspaceShadowColor</item>
<item name="android:shadowRadius">2.0</item>
<item name="ambientShadowColor">?workspaceAmbientShadowColor</item>
<item name="ambientShadowBlur">2.5dip</item>
<item name="keyShadowColor">?workspaceKeyShadowColor</item>
<item name="keyShadowBlur">1.0dip</item>
<item name="keyShadowOffset">0.5dip</item>
</style>
Add this line somewhere in between the <style> brackets:
Code:
<item name="android:textColor">#00000000</item>
** This will also remove the text from the applications inside folders on the home screen when in the "dark theme." Continue reading towards the bottom to find out how to add that text back.
SAVE THE FILE
To remove the text from the app drawer:
Go to res/values/styles.xml, and find this section:
Code:
<style name="BaseIcon">
<item name="android:textColor">?android:textColorSecondary</item>
<item name="android:ellipsize">marquee</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:layout_gravity">center</item>
<item name="android:focusable">true</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:singleLine">true</item>
<item name="android:shadowRadius">0.0</item>
<item name="android:fontFamily">sans-serif-condensed</item>
</style>
Change the "android:textColor" value from "?android:textColorSecondary" to #00000000.
SAVE THE FILE
To make the G in the search bar always be in color:
Go to res/values/styles.xml, and find this section:
Code:
<style name="HotseatQsbTheme">
<item name="gIcon">@drawable/ic_super_g_shadow</item>
<item name="micIcon">@drawable/ic_mic_shadow</item>
</style>
Change it to this:
Code:
<style name="HotseatQsbTheme">
<item name="gIcon">@drawable/[COLOR="red"][B]ic_super_g_color[/B][/COLOR]</item>
<item name="micIcon">@drawable/[COLOR="red"][B]ic_mic_color[/B][/COLOR]</item>
</style>
SAVE THE FILE
To change the icon size, change the number or rows or columns in home screen, to change the number of icons in the hotseat, or to change the max number or rows or columns in home screen folders:
Go to /res/xml/device_profiles.xml, and find this line:
Code:
<profile launcher:name="Taimen" launcher:minWidthDps="387.0" launcher:minHeightDps="750.0" launcher:numRows="5" launcher:numColumns="5" launcher:numFolderRows="4" launcher:numFolderColumns="4" launcher:minAllAppsPredictionColumns="4" launcher:numHotseatIcons="5" launcher:iconSize="54.0" launcher:landscapeIconSize="52.0" launcher:iconTextSize="13.0" launcher:defaultLayoutId="@xml/default_workspace_5x5" />
Change these values to whatever size you want. They should be self-explanatory:
- launcher:iconSize="54.0"
- launcher:landscapeIconSize="52.0"
- launcher:numRows="5"
- launcher:numColumns="5"
- launcher:numFolderRows="4"
- launcher:numFolderColumns="4"
- launcher:numFolderRows="4"
- launcher:numHotseatIcons="5"
*Keep in mind that changing the iconSize, numRows, and numColumns affects both the home screen and the app drawer.
SAVE THE FILE
To remove the page indicator from the home screen:
Go to /res/values/dimens.xml, and find these lines:
Code:
<dimen name="dynamic_grid_min_page_indicator_size">32.0dip</dimen>
<dimen name="dynamic_grid_page_indicator_line_height">1.0dip</dimen>
Change both of their values to "0.0dip"
To remove the home screen app drawer up arrow:
Go to /res/values/dimens.xml, and find these lines:
Code:
<dimen name="all_apps_caret_size">13.0dip</dimen>
<dimen name="all_apps_caret_workspace_offset">18.0dip</dimen>
Change both of those values to "0.0dip"
SAVE THE FILE
To remove the white-haze background from the hotseat and remove the white background from the app drawer:
Go to /res/values/styles.xml, and find this section:
Code:
<style name="BaseLauncherThemeWithCustomAttrs" parent= [user=262514]@style[/user]/BaseLauncherTheme">
<item name="allAppsScrimColor">#ccffffff</item>
<item name="allAppsNavBarScrimColor">#66ffffff</item>
<item name="popupColorPrimary">#ffffffff</item>
<item name="popupColorSecondary">#fff5f5f5</item>
<item name="popupColorTertiary">#ffe0e0e0</item>
<item name="isMainColorDark">false</item>
<item name="isWorkspaceDarkText">false</item>
<item name="workspaceTextColor" [user=365912]@and[/user]roid:color/white</item>
<item name="workspaceShadowColor">#b0000000</item>
<item name="workspaceAmbientShadowColor">#33000000</item>
<item name="workspaceKeyShadowColor">#44000000</item>
<item name="workspaceStatusBarScrim">@drawable/workspace_bg</item>
<item name="widgetsTheme" [user=262514]@style[/user]/WidgetContainerTheme</item>
</style>
Change the "allAppsScrimColor" value to "#00000000"
**After making the app drawer mostly transparent, you may want to consider changing the text for the "light theme" to white with a text shadow so it shows up better. Keep reading to find out how to do that.
SAVE THE FILE
To remove the semi-transparent, app drawer navbar shade while in the "light theme":
Go to /res/values/styles.xml, and find this section:
Code:
<style name="BaseLauncherThemeWithCustomAttrs" parent= [user=262514]@style[/user]/BaseLauncherTheme">
<item name="allAppsScrimColor">#ccffffff</item>
<item name="allAppsNavBarScrimColor">#66ffffff</item>
<item name="popupColorPrimary">#ffffffff</item>
<item name="popupColorSecondary">#fff5f5f5</item>
<item name="popupColorTertiary">#ffe0e0e0</item>
<item name="isMainColorDark">false</item>
<item name="isWorkspaceDarkText">false</item>
<item name="workspaceTextColor" [user=365912]@and[/user]roid:color/white</item>
<item name="workspaceShadowColor">#b0000000</item>
<item name="workspaceAmbientShadowColor">#33000000</item>
<item name="workspaceKeyShadowColor">#44000000</item>
<item name="workspaceStatusBarScrim">@drawable/workspace_bg</item>
<item name="widgetsTheme" [user=262514]@style[/user]/WidgetContainerTheme</item>
</style>
Change the "allAppsNavBarScrimColor" value to "#00000000".
Alternatively, if you want to make it a semi-transparent black color, change that value to "#80000000".
SAVE THE FILE
To change the app drawer "light theme" text to white with a text shadow:
Go to /res/values/styles.xml, find this section, and perform the changes in red:
Code:
<style name="BaseIcon">
<item name="android:textColor">?android:textColorSecondary</item> [B][COLOR="red"]**Change this value to #ffffffff**[/COLOR][/B]
<item name="android:ellipsize">marquee</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:layout_gravity">center</item>
<item name="android:focusable">true</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:singleLine">true</item>
<item name="android:shadowColor">#b0000000</item>[B][COLOR="red"] **ADD this line**[/COLOR][/B]
<item name="android:shadowRadius">0.0</item> [B][COLOR="Red"]**Chang this value to 2.0 or 3.0. This value refers to the blur radius of the shadow.**[/COLOR][/B]
<item name="android:fontFamily">sans-serif-condensed</item>
</style>
**The BaseIcon style above also controls the folder icon text and the deep shortcut icon text. Since we've changed the text to white here, we need to change the folder icon text to a darker color so that it shows up better.
Also, since we've added a text shadow to the text to make it stand out better again light backgrounds, we need to alter the deep shortcut text to keep it looking clean.
Keep reading to find out how to do both of these things.
SAVE THE FILE
To change the color of the folder application icon text and remove its shadow:
1. Go to /res/values/styles.xml.
2. Add the code below as an entirely new style entry in the styles.xml. It doesn't really matter where it goes. Just make sure that you don't accidentally put in in the middle of another style.
2.5 The color is set by the "android:textColor" value. In my example below it's set to a dark gray (the default color). You can set the color here to whatever you want.
Code:
<style name="FolderIcon">
<item name="android:textColor">#00000000</item>
<item name="android:ellipsize">marquee</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:layout_gravity">center</item>
<item name="android:focusable">true</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:singleLine">true</item>
<item name="android:fontFamily">sans-serif-condensed</item>
</style>
3. Also, add the code below as another entirely new style entry in the styles.xml. It doesn't really matter where it goes. Just make sure that you don't accidentally put in in the middle of another style.
Code:
<style name="FolderApplications">
<item name="android:textColor">?android:textColorSecondary</item>
<item name="android:ellipsize">marquee</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:layout_gravity">center</item>
<item name="android:focusable">true</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:singleLine">true</item>
<item name="android:shadowColor">#00000000</item>
<item name="android:shadowRadius">0.0</item>
<item name="android:fontFamily">sans-serif-condensed</item>
</style>
SAVE THE FILE
4. Go to /res/layout/folder_application.xml
5. Find this line:
Code:
<com.android.launcher3.BubbleTextView android:includeFontPadding="false" launcher:iconDisplay="folder" style= [user=262514]@style[/user]/BaseIcon"
6. Change the "style" value from @style/BaseIcon to @style/FolderApplications
SAVE THE FILE
7. Go to /res/layout/folder_icon.xml
8. Find this line:
Code:
<com.android.launcher3.views.DoubleShadowBubbleTextView android:layout_gravity="top" android:id="@id/folder_icon_name" android:focusable="false" android:layout_width="fill_parent" android:layout_height="fill_parent" style= [user=262514]@style[/user]/FolderIcon" />
9. Change the "style" value from @style/BaseIcon to @style/FolderIcon
SAVE THE FILE
To make the status bar and navbar icons stay white when in the app drawer while using the "light theme":
1. Go to \smali\com\android\launcher3\allapps\AllAppsTransitionController.smali
2. Find this line (it should be line 1737):
Code:
invoke-direct {p0, v2}, Lcom/android/launcher3/allapps/AllAppsTransitionController;->updateLightStatusBar(F)V
3. Delete that entire line of code.
SAVE THE FILE
To make the status bar and navbar icons stay white when in the app drawer while using the "light theme" - ON THE ANDROID P DP1 LAUNCHER:
1. Go to \smali\com\android\launcher3\allapps\AllAppsTransitionController.smali
2. Delete line 528 and line 540.
SAVE THE FILE
To remove the text-shadow that got added to the deep shortcuts icon text:
1. Go to /res/values/styles.xml.
2. Add the code below as an entirely new style entry in the styles.xml. It doesn't really matter where it goes. Just make sure that you don't accidentally put in in the middle of another style.
Code:
<style name="DeepShortcutIcon">
<item name="android:textColor">#ff333333</item>
<item name="android:ellipsize">marquee</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:layout_gravity">center</item>
<item name="android:focusable">true</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:singleLine">true</item>
<item name="android:fontFamily">sans-serif-condensed</item>
</style>
SAVE THE FILE
3. Go to /res/layout/deep_shortcut.xml
4. Find this line:
Code:
<com.android.launcher3.shortcuts.DeepShortcutTextView android:textSize="14.0sp" android:textColor="?android:textColorPrimary" android:gravity="start|center" android:id="@id/bubble_text" android:background="?android:selectableItemBackground" android:drawablePadding="@dimen/deep_shortcut_drawable_padding" android:drawableEnd="@drawable/deep_shortcuts_drag_handle" android:fontFamily="sans-serif" android:textAlignment="viewStart" android:paddingStart="@dimen/deep_shortcuts_text_padding_start" android:paddingEnd="@dimen/popup_padding_end" launcher:layoutHorizontal="true" launcher:iconSizeOverride="@dimen/deep_shortcut_icon_size" launcher:iconDisplay="shortcut_popup" style= [user=262514]@style[/user]/BaseIcon" />
5. At the very end of that line of code, change the "style" value from @style/BaseIcon to @style/DeepShortcutIcon
6. Go to /res/layout/system_shortcut.xml
7. Find this line:
Code:
<com.android.launcher3.BubbleTextView android:textSize="14.0sp" android:textColor="?android:textColorPrimary" android:gravity="start|center" android:id="@id/bubble_text" android:background="?android:selectableItemBackground" android:focusable="false" android:fontFamily="sans-serif" android:textAlignment="viewStart" android:paddingStart="@dimen/deep_shortcuts_text_padding_start" android:paddingEnd="@dimen/popup_padding_end" launcher:layoutHorizontal="true" launcher:iconDisplay="shortcut_popup" style= [user=262514]@style[/user]/DeepShortcutIcon"
8. At the very end of that line of code, change the "style" value from @style/BaseIcon to @style/DeepShortcutIcon
SAVE THE FILE
To change the border-radius (the "roundess of the corners") of the home screen folders:
1. Go to /res/drawable/round_rect_primary.xml
2. Find this line:
Code:
<corners android:radius="2.0dip" />
3. Change that value to whatever you want. The higher the number, the more rounded the corners. 0.0dip would be not rounded at all.
SAVE THE FILE
Recovering from a mistake
Flash the stock Pixel 2 Launcher zip using TWRP.
Just tried on 8.0 (Nov 5 Security Patch), does not work. Threw an error message along the lines of "Display Manager has failed" over and over. Thankfully I could pull the notification shade and ask the assistant to get my back to my file manager to switch the app back. In other news, it doesn't look like a reboot is necessary for this to take effect.
gettingerr said:
Just tried on 8.0 (Nov 5 Security Patch), does not work. Threw an error message along the lines of "Display Manager has failed" over and over. Thankfully I could pull the notification shade and ask the assistant to get my back to my file manager to switch the app back. In other news, it doesn't look like a reboot is necessary for this to take effect.
Click to expand...
Click to collapse
If you want me to make these mods on your 8.0 APK, I can do that. post up your APK, and I'll do that this evening.
Sent from my Pixel 2 XL using XDA Labs
sharkie405 said:
If you want me to make these mods on your 8.0 APK, I can do that. post up your APK, and I'll do that this evening.
Click to expand...
Click to collapse
Switched over to Nova this morning but I'm sure others would still like the mods. Here's the November 8.0 apk
Sir, could you port it to Nougat (7.1.2), with the ability to hide apps icon?
Works on 7.1.2 DarkRom on my Redmi Note 4, thanks a lot !
Thanks for this. Works on my galaxy tab 3 7.0 running on rr remix 5.8.4 , my only issue is I don't have that google search bar at the top of the drawer
Works on Mediatek too!
Android One (7.0) from General Mobile 6 crossported to DOOGEE Y6.
Thanks.
sharkie405 said:
If you want me to make these mods on your 8.0 APK, I can do that. post up your APK, and I'll do that this evening.
Sent from my Pixel 2 XL using XDA Labs
Click to expand...
Click to collapse
I'll give it a shot on my Pixel 2 whenever the 8.0 mods are available. Thank you so much for this... I love the simple stock launcher but cannot handle that annoying little arrow.
Ra6idr0y said:
I'll give it a shot on my Pixel 2 whenever the 8.0 mods are available. Thank you so much for this... I love the simple stock launcher but cannot handle that annoying little arrow.
Click to expand...
Click to collapse
I didn't bother with it last night since the person who requested said they moved on to Nova. But I'll do one with that 8.0 apk this evening for sure.
It's odd, however, that someone said it didn't work on 8.0, but two others have said it works on 7.1.2.
sharkie405 said:
I didn't bother with it last night since the person who requested said they moved on to Nova. But I'll do one with that 8.0 apk this evening for sure.
It's odd, however, that someone said it didn't work on 8.0, but two others have said it works on 7.1.2.
Click to expand...
Click to collapse
I'm impatient so gave this a shot on my Pixel 2 running 8.0 SEP security update... Works! I had Nova set as default home while moving/backing up the the files and also, I set the permissions to match the existing launcher apk before setting it as my new default. Only thing I noticed is the nav bar in the app drawer has an additional layer of semitrans black over it... probably normal or new from google with the update; don't remember it from before (would love to get rid of that too :angel.
Ra6idr0y said:
I'm impatient so gave this a shot on my Pixel 2 running 8.0 SEP security update... Works! I had Nova set as default home while moving/backing up the the files and also, I set the permissions to match the existing launcher apk before setting it as my new default. Only thing I noticed is the nav bar in the app drawer has an additional layer of semitrans black over it... probably normal or new from google with the update; don't remember it from before (would love to get rid of that too :angel.
Click to expand...
Click to collapse
The layer on the navbar would be a framework-res mod. Unfortunately, Apktool hasn't worked to mod the Pixel framework-res.apk since Oreo.
Sent from my Pixel 2 XL using XDA Labs
Thanks Dev, is working fine on my device Redmi 3 rrRemix 7.1.2
like this
sharkie405 said:
The layer on the navbar would be a framework-res mod. Unfortunately, Apktool hasn't worked to mod the Pixel framework-res.apk since Oreo.
Click to expand...
Click to collapse
Thanks, I was wondering what you were using to mod. Good to know apktool is still the default. I used it all the time back in the day with my Droid Incredible for theming.
What are your thoughts on the home screen widget? Hide/disable?
Ra6idr0y said:
What are your thoughts on the home screen widget? Hide/disable?
Click to expand...
Click to collapse
I've spent the last hour or so tinkering with it. I can "hide" it, as in hide the text, but the space is still taken up now by empty, unusable space. I assume "actually" removing it would require a smali edit, which I honestly don't feel like messing with. It doesn't seem to be possible with just /res files.
verzero said:
Thanks Dev, is working fine on my device Redmi 3 rrRemix 7.1.2
like this
Click to expand...
Click to collapse
How to get Weather info beside date info bruh?
sir... can you add option to hide google search icon on botton please....???
---------- Post added at 11:53 AM ---------- Previous post was at 11:44 AM ----------
also..after editing build.prop (to add qemu.hw.mainkeys=1)in my nexus 6p running latest november oreo update,some issues i faced are:
> after booting finished the screen got black and after long power button press,pop shows for restart,shutdown that what i only able to see and do.
>then it automatically shows "factory data resetting" .
>this process continue each time when i restart the phone.
Capt_N3m0 said:
How to get Weather info beside date info bruh?
Click to expand...
Click to collapse
Are u don't get weather info? I don't know how, this like normal for pixel launcher
sharkie405 said:
I am not responsible for your device.
You must be rooted.
Click to expand...
Click to collapse
Question, do you think you might be able to modify the launcher so that it doesn't have that horrible foggy white fade on the bottom third of the homescreen? I hate how much that washes out the colors of my wallpapers. If so could you do one that only has that mod and the mod to make the colored G in the search? Thanks in advance either way.