[Guide] Changing Status Bar/Making your own Metamorph theme - Milestone XT720 Themes and Apps

Adapted from http://zezke.xtreemhost.com/2010/9/black-android-status-bar/
This is just a brief guide. The steps are a little different for the XT720. This was tested on a XT720 using Dexter's Froyo 1.2a.
Getting started
Tools needed: apktool, android sdk, java jre, 7zip/winrar/etc, smali.jar and baksmali.jar
Changing the theme
adb pull /system/framework/framework-res.apk framework-res.apk
java -jar "apktool.jar" d -f framework-res.apk
Navigate to framework-res/res folder.
Here, the drawable-hdpi folder contains the images for the theme. You can either replace the images in here with images from another theme (easier, but might not always work) or modify the images yourself (complicated).
Changing the status bar colour
What you want is the status_bar.xml file in the layout folder.
Look for
Code:
<com.android.server.status.DateView android:textSize="16.0sp" android:textStyle="bold" android:textColor="#ffffffff" android:gravity="left|center" android:id="@id/date" android:background="@drawable/statusbar_background" android:paddingLeft="6.0px" android:paddingRight="6.0px" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
near the end of the file.
To change the colour, change the value of the attribute android:textColor. For mine, I changed it to android:textColor="#ffffffff". This is in hexadecimal. The first two letters dictate the transparency. The rest is just the standard RGB hex code. For example, black is #ff000000. Full transparency is #00ffffff.
After making the modifications, you have to repack.
java -jar apktool.jar b "framework-res"
You'll find your new framework-res.apk in framework-res/dist.
P.S. Replacing the original framework-res.apk with the new one didn't work for me. I have to make a Metamorph theme and apply it. Coming to that in a moment.
Changing the clock colour
adb pull /system/framework/services.jar services.jar
Open services.jar (using 7zip) and extract classes.dex (only). Get smali.jar and baksmali.jar from Google Code (latest version when writing this guide 1.2.4).
java -Xmx512M -jar baksmali.jar -o classout classes.dex
This will create a directory named classout in your current working directory. Open it and go to com/android/server/status and open (using a text editor) StatusBarIcon.smali. Look for this fragment:
.line 60
const/high16 v6, -0x100
invoke-virtual {v4, v6}, Landroid/widget/TextView;->setTextColor(I)V
I think the important thing is the setTextColor(I)V. The .line60 may differ for most phones.
Now, the original colour is the line
const/high16 v6, -0x100
change it into
const v6, -0x1
for white.
Then save it.
I'm not sure what the other colour codes are, but I think you can find out with a search.
Now return to the folder containing services.jar and classes.dex. Rename classes.dex as classes.dex.backup just to be safe and have a backup. Recreate the dexfile:
java -Xmx512M -jar smali.jar classout -o classes.dex
Add the new classes.dex file to the services.jar (crucial that you add it instead of creating a new archive).
---Making Metamorphs
It's easier if you just use my Metamorph as a template.
http://forum.xda-developers.com/showthread.php?t=955698
In my Metamorph theme, replace the framework/services.jar with yours.
The framework-res/res folder contains files to replace in the system's framework-res.apk. Empty the folder, then extract files that you have changed from your new framework-res.apk(using 7zip/etc, this is important) and put them in this folder.
You can change the owq.xml file.
<item>framework-res.apk</item>
<path>/system/framework/</path>
Means that files in the archive /system/framework/framework-res.apk will be replaced with the ones in the Metamorph theme folder /framework-res
<item>framework.cpy</item>
<path>/system/framework/</path>
Means that files in /framework will be copied to /system/framework/, replacing any existing files. (Due to the .cpy extension, short for copy)

thanks for the tutorial

Related

Change Status Bar Clock to White

First let me note that all credit goes to FxN. I simply am updating the code for the Droid 2. Thank you for all the work you did FxN. Also, this is only for DeOdexed phones.
NOTE BEFORE YOU START:
Standard disclaimer, I don't guarantee anything that might happen after following these steps, and I mean anything!! These steps worked for me and I have tried to include every minute step!
1. Connect phone using USB and check that you can see your device using: adb devices
2. in your SDK/tools directory from command line do:
PHP:
adb pull /system/framework/services.jar services.jar
3. Make a backup of the services.jar file that just popped in the tools folder just in case!
4. Download smali and baksmali from http://code.google.com/p/smali/ and place them in the tools folder. Rename the files to baksmali.jar and smali.jar to save on typing later
5. Open the services.jar file with something such as winrar or 7zip or whatever you prefer
6. Copy out the classes.dex file to your SKD/tools folder
7. run following from command line:
PHP:
java -jar baksmali.jar -o classout/ classes.dex
8. Now browse to your new folders classout/com/android/server/status
9. Open the file StatusBarIcon.smali in something like notepad or context or any text editor
10. Locate a line that says: .line 61, under this line it should have something like:
PHP:
const/high16 v6, -0x100
11. Change this to say:
PHP:
const/high16 v6, -0x1
12. Save the file
13. Now back to the command line and from your SDK/tools folder run:
PHP:
java -Xmx512M -jar smali.jar classout/ -o new-classes.dex
14. If the above finishes without errors you should have a file called new-classes.dex in your SDK/tools folder now that is the same size as your classes.dex file.
15. Rename the old classes.dex file to classes-old.dex and rename the new-classes.dex file to classes.dex
16. Open the services.jar file with your archiving tool again from step 5 and replace the existing classes.dex file with our new classes.dex we just created.
17. From command line run:
PHP:
adb remount
18. also from command line:
PHP:
adb push services.jar /system/framework/
19. Finally run:
PHP:
adb shell reboot
On step 11, this is setting the font to red. If you want white change the line to
PHP:
const v6, -0x1
Original FxN Post is sourced:http://forum.xda-developers.com/showthread.php?t=549309
Could you post a white services.jar?
I've been trying to get this to happen for a while. I thought it had to do with the method of deodexing, but it turns out it may be the services.jar itself. i've talked Xeudoxus, and he's going to take a look. Also, the way he's going to do it, will be incorporated into xUltimate, so that will make this process a billion times easier.
Here you go.
Rename .rar to .jar
theecho said:
Here you go.
Rename .rar to .jar
Click to expand...
Click to collapse
does this change ALL status bar text to white or just the clock?
also, would it work on nondeodexed phones?
Currently just the clock. As for the non-deodexed not sure..you should pull you current and push this and let us know
theecho said:
Currently just the clock. As for the non-deodexed not sure..you should pull you current and push this and let us know
Click to expand...
Click to collapse
im not sure how this is valuable if the other statbar text is gonna remain black.
have to start somewhere. Im working on the other portions just need to find where they are stored.
theecho said:
have to start somewhere. Im working on the other portions just need to find where they are stored.
Click to expand...
Click to collapse
i _thought_ they were in framework-res color but i think im wrong there.
I know that there are some default values stored in the status_bar.xml as i have changed the active action such as preparing sd card and stuff like that. I am trying to at least change the date before proceeding with my theme.
theecho said:
Currently just the clock. As for the non-deodexed not sure..you should pull you current and push this and let us know
Click to expand...
Click to collapse
didnt work. guess it wont if you have:
services.jar
services.odex
not sure how to make them one file.
http://www.droidxforums.com/forum/droid-x-themes/4620-how-manually-deodex-your-phone.html
check that out.
theecho said:
http://www.droidxforums.com/forum/droid-x-themes/4620-how-manually-deodex-your-phone.html
check that out.
Click to expand...
Click to collapse
this worked great thanks. gonna try the white services.jar soon.
white services.jar works great. now if we can just get the rest of the text in white we can go back to the black bg themes
all white status bar. Again change .rar to .jar
theecho said:
all white status bar. Again change .rar to .jar
Click to expand...
Click to collapse
getting closer.. notifications are still black text.
do you mean the pictures? like the tiny icons?
Screenshot of new wifi icon
i made some screen shots.. first one should say the sms text but its black so you dont see it.. second has some list items all black..
those arent the status bar and are not controlled by services.jar.
Try this framework.apk and tell me if you sms text is white.
theecho said:
those arent the status bar and are not controlled by services.jar.
Try this framework.apk and tell me if you sms text is white.
Click to expand...
Click to collapse
yep, this fixed the notification colors to white. can you tell me what portion of this is for the color change so that i can only apply that portion.
do you know which file affects the dropdown list text colors?
not yet i do not that was in the status_bar.xml located in res/layout/
hit me up on gtalk

X10 Mini/Mini pro Theme Reference for Newbies

This thread was opened to consolidate the information/knowledge about themes for the x10 mini/mini pro. It is basically a reference thread with key bits of information and links so that a new user can find all the necessary information in one place. It should also help us avoid the old ‘where the hell was that image…?’ and ‘where was that … thread again?’.
Please PM me or post any useful information that is missing, especially the OPs of the threads in the Themes section below. I will continually update this thread with any new information or links.
At the moment this is a work in progress. I will fill it out in the days to come. And will keep it updated so long as I have my x10 mini pro (at least another 18 months according to t-mobile ).
All useful information that is posted here will be added to this first page, so that you don't have to wade through pages of posts to try and find something. Everything after the first page should therefore either be repeated on this page somewhere or is just conversation. Please yell at me should this not be the case
Please help me out by posting information, ideas etc.
Creating Themes for the x10:
1. Getting Started
2. Using ADB
3. Creating a Theme
4. Modifying XML files and adding resources
5. Modifying Services.jar
6. Recovery tips
7. Theme collection
8. Replace Framework with Root Explorer
Credits:
_calum_
Download all your original system applications here.
**Guys If u like this tutorial thank me by donating me .**
Getting Started
Before getting started on a theme you'll need to set a few things up. Here's a list of everything you'll need:
• Root. Your phone will need to be rooted
• Java SDK (JDK). You'll need to install the JDK (and JRE) before you can start modifying the contents of your phone. Check out this video of Chewitts if you're having problems on x64 systems.
• ADB (from the Android SDK). You need ADB to push/pull files to and from your phone (see the next post)
The easiest way to make sure everything is set up properly is to install someone elses theme.
After you've done all that take a look at this.
Using ADB
There's an ADB Guide here :
Before you start need to unsecure the shell. Use the following adb commands to do this if you haven't already (to reverse it do chmod 0755... ):
Code:
adb shell
su
mount -o remount,rw -t yaffs2 /dev/block/mtdblock2 /system
chmod 4755 /system/bin/sh
This is all described in the links posted in the Getting Started section above
Thanks to MrRusch for making our lives easier with this tool. For those of you new to this, you should still read the guide linked above so that you know what is actually going on.
Here's a step by step for pulling the framework from your phone and pushing it back. The boot animation mod at the bottom is for 2.1 it is found in system/media/bootanimation.zip.
Step 1:
Connect phone to pc, enable usb debugging and open adb. Type:
adb pull /system/framework/framework-res.apk framework-res.apk
That will pull your framework-res.apk to whatever folder is displaying in your command line.
Step 2:
Find the framework-res.apk on your hard drive, right click and open with 7zip.
Step 3:
Use png's here or create your own and dump into the appropriate folder within framework-res.apk.
Step 4:
When you are done editing the files open up adb and type the following command:
adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock2 /system
adb push framework-res.apk /sdcard/framework-res.apk
adb shell dd if=/sdcard/framework-res.apk of=/system/framework/framework-res.apk
That will put the new framework-res.apk on your phone. It should automatically reboot (if not reboot it) and your changes should be applied!
When running the script above you can replace framework-res.apk with whatever you want. For example, Conversations.apk,Alarm.apk etc.
Remember, it is CASE sensitive I made this problem many times)
If you would like to pull an entire folder put a slash at the end of the last word. For example, adb pull /system/etc /etc"/" (no " in actual script )
Courtesy of corruptfate is the steps to modify the Boot animation
step 1: Copy bootanimation.zip to sdcard
step 2: Open CMD (Command Prompt)
step 2: type "adb shell"
step 3: type "su"
step 5: type "mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system"
step 5: busybox cp /sdcard/bootanimation.zip /system/media/bootanimation.zip
step 6: chmod 755 /system/media/bootanimation.zip
Click to expand...
Click to collapse
Creating a theme
So, now that we’ve got the framework-res.apk onto our hard drive, we can take a look at creating a theme. The only skill that is really required to change the appearance of the framework (this is the system file that contains the notification bar, settings etc.) is being able to edit .png image files to suit your tastes. If you can do this then it is just a matter of knowing how to extract the images, and how to update the .apk with them after editing.
.9.png's
Before we start we need to take a look at a special kind of image in android apk’s: the .9.png’s. These are recognisable, as the name suggests, by the double extension *.9.png.
.9.png's are images with a bit of extra information embedded. They contain information on how they can be stretched, and where the content can go (e.g. for a button background, which area of the background can contain the text).
This information is contained in a single pixel border (the guides) around the image and can be added using draw9patch. The catch here is that the guides must be compiled into the image before it can be used.
The Border: For the most part, you will not have to edit the border of a .9.png because, as long as you follow the guide below, the guides will already be in the image and you will not need to change them. If you do need to create your own (I’d assume you know enough not to be reading this though ), you can find more information here.
Editing the Framework
In this example we will look at editing framework-res.apk. However, the process can be used on any apk.
The method described below may seem overly complicated for those who have experience in this area, but it is (in my opinion) the easiest ‘sure-fire’ way to make sure you don’t have any problems (especially with the .9.png’s).
In rare cases, when the .apk your modifying doesn’t have any .9.png’s (e.g. the Recent Calls widget) then you can skip straight to the ‘Updating images using Drag/Drop’ section below.
Requirements:
You will need the following:
7zip apktool - this is included in the attached file themes.zip
Some people use WinRAR instead of 7zip, but apktool uses some 7zip commands internally so make sure it is installed (I think, I know this is the case for APK Manager, I still need to test this for apktool, but hey, just use 7zip, it's free and works exceptionally well).
Setting up:
In the attached zip file (themes.zip) you will find a copy of my theme creation environment. It’s not too complicated, it only contains a couple of folders so I know where everything is, three key batch files (all one-liners) and apktool.
The first thing we need to look at is install_framework.bat. This contains the following line:
Code:
java -jar apktool.jar install-framework stock\framework-res.apk
All this does is tell apktool to install the framework on your system. The resources from stock\framework-res.apk will be extracted to a default location. If you don’t do this then you will not be able to recompile other apk’s that rely on the framework (you will get a ResourceNotFound error).
The other batch files decompile and build the framework, these are the ones that need to be modified if you start working on a different apk:
Code:
decompile.bat
java -jar apktool.jar d stock\ framework-res.apk working\ framework-res
build.bat
java -jar apktool.jar b working\framework-res out\framework-res.apk
I have included the stock X10 mini pro framework. If you use on of the other frameworks out there you may find that you get a lot of errors when trying to recompile. That’s because someone got lazy with the .9.png’s
As we are modifying the framework directly we do not need to run install_framework.bat, for a different apk (e.g. Phonebook.apk) you may need to run this first to avoid errors when decompiling.
Decompiling and Building:
1. Run decompile.bat. After this you will see that the working folder is filled with the contents of the apk. The images we need to modify are in the subfolders res/drawable-ldpi and res/drawable-land-ldpi. If you look at some of the .9.png’s in there you can see the guides (see the attached image). This makes it really easy to edit them, you can just edit them like any other image (as long as you do not touch/alter the guides).
2. Edit any images that you want. For the .9.pngs I usually make a copy without the 1 pixel border so that I can edit the entire image, then I paste the copy back into the middle of the original .9.png. You don’t have to worry about the guides, they are already set correctly.
I have created a tool that takes the stock x10 mini / mini pro status bar icons, removes the background and sets them to a colour of your choice here. This was made to make my life easier by minimizing the time I spend in photoshop.
3. Run build.bat. This compiles the framework, embedding the guide information into the .9.png’s. The output framework is in the out folder. Do not push this to your phone as it is incomplete and the resources.arsc is stored incorrectly. If you do push it to your phone then you get to reflash
Now you can just drag the edited images out of the generated framework onto your hard drive and use steps 4. and 5. of the Drag/Drop method described below to update your framework.
Updating images using Drag/Drop:
1. Open the .apk in 7zip and browse to the appropriate image folder (almost always the res\drawable-hdpi folder)
2. Drag/Drop the images you want to edit to your hard drive. Leave the .apk open in 7zip
3. Edit the images in your favourite program (photoshop or similar)
4. Drag/Drop the images back into the .apk that is still open
5. Use the process described in the previous post to push the framework back to the phone
The reason that the .apk is left open in this process is that some (all?) of them are signed and updating them in this way doesn’t mess with the signature. I’ll admit to not being 100% sure about this, I’m sort of thinking now that people just had problems re-packing due to files being compressed that shouldn’t have been (see the section on editing XML files and adding resources to see what I mean). Please correct me on this one.
This also [almost] goes without saying, but: Make a backup before you start (you can look at the installer for Chewitts Dark10 theme to see how to do this).
OK, now you can start messing with the appearance of your phone, have fun
Credits
Thanks to Mr_Element for the help testing this process and making it easier to follow
Thanks to damnitpud for his post here, without which I would still have been a bit lost in draw9patch.
Modifying XML files and adding resources
First up, thanks to MrRusch for pointing out that the resources.arsc was being zipped differently. It would have taken a few more flashes to figure out how to pack it into the apk without that little nugget
The XML files in the framework-res.apk (and the other apps) are stored in a compiled form, making them impossible to edit without decompiling them. The process of decompiling them and recompiling is reasonably simple but care is required if any images/resources are added to the apk.
Modifying the xml files opens up certain things that can’t be changed by just modifying some image files. The best example is changing the battery icon in the notification bar to show a different image for each percentage instead of just 10%, 20%, 40% etc.
When you modify xml files and add resources to your apk, make sure you copy ALL the modifications made to the stock apk each time after compiling. I have noticed strange effects if I don't do this such as the wrong images being used - I am assuming that in the newly compiled resources.arsc the image references/IDs change when compiled, but I'm not really sure yet. An example of this is when I tried to add the signal strength mod mentioned above to a framework that included the battery icon mod below. This only worked if I also copied the battery mod files to the framework (even though they were already in the apk) after recompiling the signal strength mod. If I just copied the files required for the signal strength mod then the battery indicator would start showing the wrong images .
Battery Icon:
Here is a step by step for modifying the battery icon in the framework. To do this you will need to download apktool and install 7zip (other compression programs may work, but I’ve only used 7zip). I have attached some example files with 100 steps (one for each percentage) in case you just want to add them to your existing framework. Just make sure they are added as described below!
1. Decompile the framework using the following command:
Code:
java -jar apktool.jar d framework-res.apk framework-res
2.This will decompile the framework-res.apk that’s in the current command window folder into a subfolder framework-res
Find the xml files you need to modify, e.g. the battery icon xml res\drawable\stat_sys_battery.xml and edit them. This is assuming, of course that you know what needs to go in the XML file . For the battery XML it is pretty obvious, just copy/paste the existing nodes and change them so you have the necessary percentage entries, see the attachment for an example with 100 steps.
3. Add any necessary resources to the appropriate folder. For the battery icon you need to create an image for each percentage (or download one of these) and add them to the res\drawable_hdpi folder. The name is the same as the name in the xml (stat_sys_battery_*.png)
4. Rebuild the apk using the following command:
Code:
java -jar apktool.jar b framework-res out\framework-res.apk
This will create a new framework-res.apk in a subfolder out.
IMPORTANT: Do not push this apk to your phone unless you want to reflash
5. Extract the xml files and images from the newly generated apk (you can use the original images, but the xml files must be the newly compiled ones from the new apk). Add these files to the original framework-res.apk that you want to push to your phone (see the previous post).
6. Extract the resources.arsc from the root of the apk
7. Rename the original framework-res.apk from your theme to framework-res.zip
8. Right-click the extracted resources.arsc and choose the 7zip menu item ‘Add to archive’
9. In the dialog that appears set the achive field at the top to the framework-res.zip from step 7. And set the archive format to zip. Now set the Compression level to store and click OK(if you do not do this your phone will not boot). The settings are in the attached screenshot.
10. Rename framework-res.zip to framework-res.apk and double check that the compressed size or resources.arsc is the same as the original size (see screenshot)
11. Done. Push the new framework to your phone.
Status Bar Text:
The style for most (all?) UI elements can be found in res/values/styles.xml. This xml file is only available in a decompiled framework. In the compiled version everything in res/values is compiled into resoureces.arsc.
The status bar text style is named TextAppearance.StatusBar. The file is pretty large so it's best just to do a search for the name. The definition looks like this:
Code:
<style name="TextAppearance.StatusBar" parent="@style/TextAppearance">
<item name="textSize">16.0sp</item>
<item name="textStyle">normal</item>
<item name="textColor">@color/semc_text_color_primary</item>
</style>
You can easily adjust the size or make the text bold using the textSize and textStyle elements (see here for a description of these attributes and their values). The color uses the @color/... notation. This is a reference to a color resource, these can be found in colors.xml. We could just change this to a direct color entry (see here for an example), but then we wouldn't have a resource that can be reused for other parts of the UI.
If you open colors.xml you can find this:
Code:
<color name="semc_text_color_primary">#ffffffff</color>
This sets the primary text color to white (ARGB: FFFFFFFF = White). Changing the value of this will change the color of all primary text throughout the phone (settings menu etc.). If we just want to change the notification bar then it's best to add a new color. To do this just duplicate the above color definition and change the name and color:
Code:
<color name="semc_text_color_primary">#ffffffff</color>
<color name="semc_text_color_custom">#9900ff00</color>
And then adjust the style to use this new color resource:
Code:
<style name="TextAppearance.StatusBar" parent="@style/TextAppearance">
<item name="textSize">16.0sp</item>
<item name="textStyle">normal</item>
<item name="textColor">@color/semc_text_color_custom</item>
</style>
Now recompile and copy resources.arsc to your framework as described above and push the framework to your phone for semi-transparent green text in your status bar
Modifying Services.jar
To modify services.jar we need to decompile the classes.dex file contained within. We can do this with baksmali:
1. Open services.jar (found in system/framework) with 7zip
2. Extract classes.dex from the archive
3. Open a command window and use the following to decompile:
Code:
java -jar baksmali-1.2.5.jar -o out\services classes.dex
4. You will now have a subfolder out\services with the decompiled .dex classes (smali files)
These sort of modifications will not be necessary very often. Two things that have been looked at so far are changing the text color on the status bar clock (just the clock, not the notification text) and changing the signal strength to show dBm instead of just the bars. The text color of the clock is relatively simple and is described below. The signal strength mod was done by MrRusch and requires a bit more code.
I have attached a converter MrRusch has put together to convert java to smali. This is really helpful when trying to figure out how to modify the smali or event just trying to figure out what a piece of smali code does.
You can find a reference for all the smali ops here. This one is more complete but I prefer the first purely because it's a bit more compact and it has most of what I need anyway. Thanks to untemensch and JesusFreke for the links.
Status Bar Clock Color:
I have since figured out how to do this without changing any code, just by changing some xml in res/layout, but I will keep this here as I think it is a nice, easy to follow example to start out with.
This section describes how to modify the color of the clock in the status bar without changing the color of the notification text (changing all of the status bar text is described in the xml section above).
First we need to have a look at the smali file com\android\server\status\StatusBarIcon.smali to see how the color of the clock text is set. I use Visual Studio to view/edit the smali files, but you can use any text editor - I have seen PSPad recommended a few times.
If we look at the init method we can see the following piece of smali code:
Code:
.line 44
.local v15, textColor:I
const/4 v13, -0x1
.line 50
.local v13, styleIndex:I
const v18, 0x1030079
:try_start_1f
sget-object v19, Lcom/android/internal/R$styleable;->TextAppearance:[I
move-object/from16 v0, p1
move/from16 v1, v18
move-object/from16 v2, v19
invoke-virtual {v0, v1, v2}, Landroid/content/Context;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;
move-result-object v5
.line 53
.local v5, a:Landroid/content/res/TypedArray;
const/16 v18, 0x0
move-object v0, v5
move/from16 v1, v18
move/from16 v2, v16
invoke-virtual {v0, v1, v2}, Landroid/content/res/TypedArray;->getDimension(IF)F
move-result v16
.line 54
const/16 v18, 0x3
move-object v0, v5
move/from16 v1, v18
move v2, v15
invoke-virtual {v0, v1, v2}, Landroid/content/res/TypedArray;->getColor(II)I
move-result v15
Here's a run-down:
I'm pretty sure the lines that start with a '.' are comments from the decompiler.
The .line 4 entries are just a reference to the line number in java source-code. And I think the .local v15, textColor:I entry just notes the v15 variable name and type (I = integer).
The first bit of interest is the line invoke-virtual {v0, v1, v2}, Landroid/content/Context;->obtainStyledAttributes(I[I). The obtainStyledAttributes method definition can be found here. There are a few overloads, but the call is to the method that accepts an integer and an integer array as parameters - hence the (I[I), I and [I. The three variables in braces at the start denote the object that the method is being called on (the Context object) and the two parameters respectively. The first parameter (v1) is a resource ID and a few lines up the v18 variable is copied to this (move/from16 v1, v18 - this means move the value from v18 to the v1 variable). v18 was declared a few lines above again with the value 0x1030079. This ID can be found in the framework xml-file res/values/public.xml and the value is the name of a style (TextAppearance.StatusBar) that can be found in res/valus/styles.xml (see the xml section above).
The result of obtainStyledAttributes is copied to v5 (move-result-object v5) which (in .line 54) is copied to v0 which is then used to call Landroid/content/res/TypedArray;->getColor with the two integer parameters v18 (0x3) and v15 (0x100 - this is the color black). The first parameter is the index of the color in the style array (index 3 in v5) and the second is the default value (black).
The result of getColor() is then copied to v15 and reused later when setting up the text view for the clock:
Code:
.line 61
.local v14, t:Landroid/widget/TextView;
move-object v0, v14
move-object/from16 v1, p0
iput-object v0, v1, Lcom/android/server/status/StatusBarIcon;->mTextView:Landroid/widget/TextView;
.line 62
new-instance v11, Landroid/widget/LinearLayout$LayoutParams;
const/16 v18, -0x2
const/16 v19, -0x1
move-object v0, v11
move/from16 v1, v18
move/from16 v2, v19
invoke-direct {v0, v1, v2}, Landroid/widget/LinearLayout$LayoutParams;-><init>(II)V
.line 65
.local v11, layoutParams:Landroid/widget/LinearLayout$LayoutParams;
const/16 v18, 0x0
move-object v0, v14
move/from16 v1, v18
move/from16 v2, v16
invoke-virtual {v0, v1, v2}, Landroid/widget/TextView;->setTextSize(IF)V
.line 66
invoke-virtual {v14, v15}, Landroid/widget/TextView;->setTextColor(I)V
All this means that to change the color of the clock text only, we need to declare a new style and use the ID of this style in the call to obtainStyledAttributes. When adding the style to styles.xml I keep it in the same place as the other status bar styles:
Code:
...
<style name="TextAppearance.StatusBar" parent="@style/TextAppearance">
<item name="textSize">16.0sp</item>
<item name="textStyle">normal</item>
<item name="textColor">@color/semc_text_color_primary</item>
</style>
<style name="TextAppearance.StatusBar.Clock" parent="@style/TextAppearance">
<item name="textSize">16.0sp</item>
<item name="textStyle">normal</item>
<item name="textColor">@color/semc_text_color_clock</item>
</style>
...
The name of the style can be anything, what is important is the ID reference in public.xml, and that a color semc_text_color_clock is declared in colors.xml (see the xml section above).
The style reference in public.xml must have an ID that starts with 0x0103****. This is the ID range for styles, strings and other resources have a different ID range. I always add the new style at the bottom of the style group so that I can easily see which is the next free ID:
Code:
....
<public type="style" name="SEMCTheme.Dialog.Alert.Vanilla" id="0x01030139" />
<public type="style" name="TextAppearance.StatusBar.Clock" id="0x0103013a" />
....
Now that we have added a new style we just need to adjust the smali code to use it. Change the code above from:
Code:
.line 50
.local v13, styleIndex:I
const v18, 0x1030079
to:
Code:
.line 50
.local v13, styleIndex:I
const v18, 0x103013a
Now our new style is used for the call to obtainStyledAttributes. We then need to recompile the smali to a classes.dex file and update the services.jar:
Run the following command to recompile the smali:
Code:
java -jar smali-1.2.5.jar -o out\classes.dex out\services
The output file may be a slightly different size than the original classes.dex but as long as you don't get any errors it will be OK.
Now open services.jar with 7zip and update it with the new classes.dex (drag/drop).
Done Push the services.jar to your phone with adb and reboot (make sure you have updated framework-res.apk with the new xml resources first, otherwise our new ID will point to a non-existant resource)
Possible reasons your phone won't boot after modifications:
images anren't stored properly, right format, right size etc.
unpacked apk improperly, use 7zip, it doesn't mess anything up
you signed the package before pushing it- unless you know what you're doing follow the directions to a tee and you should be fine
pushed the package to the wrong directory, /system/framework-res.apk XX, /system/framework/framework-res.apk
I'm sure many other reasons, these were the only ones I encountered
How to get past boot screen:
Use backup framework-res.apk and push that one to your phone. Remember to place that one where the modified one is.
To see if adb sees your phone type adb devices, if a serial number pops up try pushing your original, if not...
Flash your phone again from scratch . Sorry, I don't know any better way yet.
from bitter personal experience :
If anyone does mess their phone up so much that not even the SE logo shows up (just a black, maybe flickering, screen) and a reflash/seus repair doesn't help. Then what sorted me out was a reflash to Generic Nordic 1.6 using this guide the same one I used to get the 2.1 update early - then boot the phone, shut down again and run seus for the 2.1 update and bin4ry flash tool.
Not directly related, but here's a tip from XperiaX10iUser:
To reverse chmod use 0755 instead of 4755.
Click to expand...
Click to collapse
Link to All The System Apps Mini : Download
Themes:
Black Android Theme 1.6 & 2.1 (by draco_ag)
*-=ShArP sUtEr=-* Theme Design For 2.1 (by Shiven Juneja)
Black HTC Theme For x10 mini & x8 (by pulpoff)
Suavesque x10 mini pro 2.1 theme
custom framework-res for 2.1 (By Mooozer)
Black theme + original android emotions For 1.6
[WIP] X10 Mini grey theme For 1.6
Iridium Carbon for 2.1 (by Dark_dog)
~THeMe~ Simplistic v1 Port for X10 Mini/Pro (By Manny-)
~THeMe~ Gingerbread Theme for X10 Mini/Pro
[Theme]Stock Android (Nexus One)
[Theme]Gingerbread Nexus S Edition [with Android 2.3 icons]
Root Explorer
@vippie
Maybe it's a known way, but I didn't find it yet . It works great for me. Your device has to be rooted.
Zocker Tko mentioned in his thread a black theme on a german forum. There's a little tutorial on that site on howto replace the framework-res.apk using Root Explorer:
* make a backup of the original file
* Copy framework-res.apk to the SD card
* Mount /system in RootExplorer as "rw"
* Copy framework-res.apk to /system
* Set permissions for framework-res.apk to 644. See screenshot:
* Move framework-res.apk to /system/framework and replace the existing file (reported to be safer than copy).
* Reboot your phone.
Ofcourse all credits goes to Bueffel the original poster.
Click to expand...
Click to collapse
Nice Guide for installing via root explorer by DarK_dOg:
Installation procedure:
Step 1:
Copy android.policy.jar, framework.jar, framework-
res.apk files into your (/sdcard).
Step 2:
Launch Root Explorer and browse to the location of the theme
pack files. Press menu and then "Multiselect". Then
select the files and press "copy".
Step 3:
Browse to /system. Press Mount R/W tab. Then press
paste.
Step 4:
You're in /system. Select android.policy.jar file.
From the pop-up menu, choose permissions and set them
according to the screenshot:
Step 5:
We follow the exact same procedure to set the permissions for
the framework.jar and framework-res.apk files.
CAUTION:It is very important to set
proper permissions (as shown on the screenshot) to all of the three
files, or else you will end up with a bricked phone
Step 6:
Once we set the permissions, our files are ready to move on /system framework. Press menu and then "
multiselect" (we are on /system).
For once again choose android.policy.jar, framework.jar
, framework-res.apk and press move.
Step 7:
Go to /system/framework and press
paste.
Click to expand...
Click to collapse
reserved.....
Great post. Thank you!
Quick question: Unsecuring the shell, if the phone stucks at boot, will I be able to replace framework-res as long as adb recognizes the phone? No need to su?
I ask this because I recently re-flashed my phone because I couldn't replace the framework I made by the stock one, but adb was recognizing the phone, just didn't let me su...
Thanks again.
Regards
ya u r write u can replace the framework with su
Steps:
adb push framework-res.apk /sdcard/framework-res.apk
adb shell
mount -o remount,rw -t yaffs2 /dev/block/mtdblock2 /system
dd if=/sdcard/framework-res.apk of=/system/framework/framework-res.apk
shivenjuneja said:
ya u r write u can replace the framework with su
Steps:
adb push framework-res.apk /sdcard/framework-res.apk
adb shell
mount -o remount,rw -t yaffs2 /dev/block/mtdblock2 /system
dd if=/sdcard/framework-res.apk of=/system/framework/framework-res.apk
Click to expand...
Click to collapse
Couldn't make this work.
My adb is still asking for su to root. Doesn't allow me to mount without root (su command after ad shell) even after chmod 4755.
This way if something goes wrong, I'll definitively will have to reflash... And that's... You know...
Any idea?
I would be much more comfortable to start playing around with this 'safety net' working...
Thanks again!
Regards
Thanks
Originally Posted by pulpoff >
If your phone gets stuck on booting after playing with framework or some other stuff, I've found a way to repair it without reflash :
restart phone, connect it to usb
in adb shell run rootshell command again to gain root (wise to keep it after rooting), the "su" won't work cause it depends on gfx libs and they are not started yet..
mount sdcard with this command : mount -t vfat /dev/block/mmcblk0p1 /sdcard
and put your backed files where they belong.
Good luck!
Click to expand...
Click to collapse
try this method....
shivenjuneja said:
try this method....
Click to expand...
Click to collapse
Sorry to bother...
Code:
D:\>adb shell
$ rootshell
rootshell
rootshell: permission denied
$ mount -t vfat /dev/block/mmcblk0p1 /sdcard
mount -t vfat /dev/block/mmcblk0p1 /sdcard
mount: Operation not permitted
$
Not sure I managed the 'rootshell' command well.
This is what I get.
My phone is rooted, obviously. I can do the 'su' with no problems.
I'm just trying to be safe before starting to mess around with framework...
Thanks you once again.
Regards
if the adb thing is not working thn you can do 1 thing. download droid explorer from this site http://de.codeplex.com/releases/view/50997 thn when you dont have access to your phone you can open droid explorer move your backup framework to your system framework framework-res.apk and you can also use this tool to do the further things...
http://forum.xda-developers.com/showthread.php?t=850340
I have droid explorer and android commander installed.
I know for experience that none of them work if phone gets stuck.
No 'su', no root, no permission to mount, no permission to write...
Feel free to delete this posts if you want the thread clean.
If we manage a solution, we can post it directly instead of 10 posts aroud the same thing.
Regards and thank you!
bro seus is the last option.... bt can u plz tell me where i wrote that we can do mofications without having su permissions in the thread??
shivenjuneja said:
bro seus is the last option.... bt can u plz tell me where i wrote that we can do mofications without having su permissions in the thread??
Click to expand...
Click to collapse
No, you didn't. I'm not saying that.
What I was looking for was a way to replace framework-res.apk in case something goes wrong and phone gets stuck in 'Sony Ericsson' black screen before bootanimation. In that case, 'su' is not allowed.
That's what happened to me last time I played around with it. And in that case I were not able to put the good framework-res.apk back in place, so I had to re-flash.
Having shell unsecured, I believe I can avoid re-flashing even if something goes wrong. I think I finally got a way to have this safety through SuperOneClick although I'm not so sure it will work in a worst case scenario, once the 'shell root' gained is always temporary until next reboot...
As I told you before, none of the ways you posted here to get 'shell root' or 'shell unsecured' worked for me, that's only what I was looking for.
Thank you again for all your work and patience.
Best regards!
Welll...
Playing aroud and I'm a small step to re.flash the phone.
I have my phone stuck in the 'Sony Ericsson' black screen.
Can't get root, rootshell, adb root or su after adb shell to work.
I need at least to change the permissions of my framework-res.apk file in /system/framework
Any idea on how to do this and avoid the re-flash?
Thanks

Help with Globalactions.smali

I'm trying to implement a Power Menu mod for the SGS4G but I'm running into trouble with Globalactions.smali from Android.Policy.jar. I've been using this guide: http://forum.xda-developers.com/showthread.php?t=811532&highlight=power+menu+mod which was written for the Vibrant and just been adapting it to the SGS4G but I can't even figure out how to adapt it to the Globalactions.smali file.
Could anyone give me a hand? here's the smali file:
http://dl.dropbox.com/u/12235402/GlobalActions.smali
Thanks.
I'm no expert, but I put together these basic instructions for someone else, maybe it will help you....this was specific for the 4n1 power mod
-download patch file: http://forum.xda-developers.com/showpost.php?p=8324212&postcount=2
-deodex android.policy.jar
-open deodexed android.policy.jar w/ 7zip, extract classes.dex
-decompile classes.dex (java -jar baksmali.jar classes.dex)
-make changes per patch file (Baksmali\out\com\android\internal\policy\impl)
-copy folder to smali dir
-compile classes.dex (java -jar smali.jar -o classes.dex out/)
for the icon:
-decompile com.htc.resourses using apktool, (apktool d com.htc.resourses.apk)
-navigate to apktool\com.htc.resources\res\drawable-hdpi & choose an icon, copy it's name
-navigate to apktool\com.htc.resources\res\values\public.xml, search for the icon name
-copy icon hex value, ie... 0x020200d5, omitting the 0x0, making it 20200d5
-open Baksmali\out\com\android\internal\policy\impl\GlobalActions.smali
-search for original icon (20200d9), change to 20200d5
-copy folder to smali dir
-compile classes.dex (java -jar smali.jar -o classes.dex out/)

clock on dragdown bars color

Hey Community,
Was wondering if someone could point me in the direction to find the clock on the dragdown bar on home screen. I want to change the color and can't seem to find it.
Thanks!
madguitarist63 said:
Hey Community,
Was wondering if someone could point me in the direction to find the clock on the dragdown bar on home screen. I want to change the color and can't seem to find it.
Thanks!
Click to expand...
Click to collapse
Do you mean the notification bar clock color??
Mr. Apocalypse said:
Do you mean the notification bar clock color??
Click to expand...
Click to collapse
Yes sir. Do you know where I can find the file?
madguitarist63 said:
Yes sir. Do you know where I can find the file?
Click to expand...
Click to collapse
It's in the services.jar
pull /system/framework/services.jar
.....you need to open services.jar with WinRAR or 7-Zip..
take the classes.dex from it & put it in your android-sdk-windows\tools\ folder
Run the following command from the current directory
Code:
java -jar baksmali.jar -o classout/ classes.dex
Then go to classout\com\android\server\status\StatusBarIcon.smali...open it with Notepad++
Find line 34 and you'll see somthing like:
Code:
const/4 v7, -0x1
Change it to
Code:
const v7, 0xff(hex code here)
For example: for red it would be const v7, 0xffff0000
Put your color hex code after 0xff
Save your changes in Notepad++, then go back into the command prompt
Code:
java -Xmx512M -jar smali.jar classout/ -o new-classes.dex
Rename new-classes.dex to classes.dex
Put it back in the services.jar...and push it back to /system/framework
Reboot phone, NOTE: Initial boot will take a while....this is normal....if you need help...PM me

[RESOURCES] - Theming the TF201: tools, processes, locations, etc.

Ok, so we have a couple of threads in the Atrix Forums, that have helped us themers along, and with the custom Roms coming along for the Prime, I have started to see a need for this type of thread here.
The goal of this thread is to have a place for us to discus themeing questions, locations, problems, etc.; that way we are not cluttering up the individual theme or rom threads with questions or problems.
As we are unable to let successively recompile the stock Asus TF201 SystemUI.apk, this thread is primarily intended for custom roms like AOKP, CM9, etc.
If you are looking to theme your stock SyetemUI, you can simply copy the apk to your computer, open the .apk file with a zip program (like Winrar) pull out the following folder: /res/drawable-mdpi
Look through the folder, find .png files that you would like to replace, and then add your new .png files to the .apk (using Winrar or other) in the same location the original one is at. ---> Read the following rules first! <---
- Make sure to select "store" for the compression method, when replacing/adding the .png files.
- The new .png file you are using should roughly be the same dimensions as the original you are replacing.
- Leave .9.png files alone. .9.png files have to be decompiled/recompiled for them to work properly. Since, you can not successfully recompile the stock Asus systemui.apk, you can not replace .9.pngs!!!!
All that being said, lets move on to the Roms we can actually theme...
Below, I have quoted the OP from two Atrix threads that have always helped me.
*Note: These locations are for Gingerbread, however, there is some continuity between Gingerbread & ICS; although it seems a lot of the stuff that was in the framework-res for Gingerbread, it now in the systemui for ICS.
Also, if you change something in a xml file and it doesn't change, you may want to see if the same xml line is in the same file & folder in both the framework-res & systemui, and change both.
Things you should know before you get started:
- If you are replacing a 9.png or editing a xml, you will have to deompile your apk, edit, and then recompile it.
- Recompiling the camera.apk seems to break the camcorder function, and will result in a FC.
Besides the Post Below this one, here is another up-to-date guide on using APK Tools, specifically for ICS:
http://forum.xda-developers.com/showthread.php?t=1511752
Use this web page to get your custom Hex Colors:
http://www.colorpicker.com/
Main XDA General Theme Thread (get more exposure/help for your question):
http://forum.xda-developers.com/showthread.php?t=468254
***If you have any other helpful guides, webpages, etc. that you think will help us, post them, and I'll add them to the OP.***
(This quote is from: http://forum.xda-developers.com/showthread.php?t=1060199 and thanks should go to that OP).
jimbush3 said:
I know that there are a good number of Atrix users who are new to android, new to theming with android, or like me - both. It can take hours to find the right information to make the changes that you want to make, only to find out that those types of changes are phone specific and that guide that you finally found after hours of searching doesn't even apply. I ask that all Atrix themers contribute to this thread with their knowledge, processes, and best practices for theming the Atrix. This way, we can share knowledge amongst each other as well as set up some accurate guide for other Atrix themers just getting started.
Contents:
Post 1 of this thread:
apk Manager Guide
Framework Assistant - tool to push/pull framework-res.apk
Editing OR removing the status bar clock color in services.jar
Post 2 of this thread:
Setting the notification dropdown shade to transparent
I'll start off with a post that I made yesterday in response to someone's question about apk Manager.
1. apk Manager Atrix Guide
The file I am going to discuss here is /system/framework/framework-res.apk. This file contains most of the elements involved in theming your phone. There are many other smaller locations to edit, but this file contains the bulk.
Before we get started on using apk Manager, we should understand a few things about framework-res apk. This file consists of a few important elements:
regular png image files - these are standard png images and can be edited with your image editing program and saved without any problems.
draw-9 png image files - these are special types of png images denoted by a .9.png in the filename. The android system reads these filenames and recognizes the image as a stretchable image. The system knows how to stretch the image based on a 1px wide border that the image has. This border contains black dots/lines along each of the four edges that tell the system how to stretch it - if you mess with this border then the way the image stretches will changes and you may not be able to decompile/recompile the apk. The following link provides info on editing draw-9s, but I found it easiest to extract them with apk Manager, edit in gimp without touching the border, and then recompiling with apk M. More info on draw-9 pngs
xml files - these files are in binary code in the framework-res.apk. The apk needs to be decompiled in order to return these to human readable code. Also, many of your xml files are hidden within the resources.arsc file in the framework-res.apk and cannot be accessed unless you decompile.
In order to make any changes to the xml files or the draw-9 pngs within framework-res.apk you need to decompile it rather than extract it. Extracting the framework-res.apk with a program like winzip simply unzips the file and does not break the code back down to an editable format. Decompiling the framework-res.apk with a program like apk Manager will actually break down the resources.arsc file into the sepereate xmls folders (values, etc.) and also restore the instructions border to draw-9 pngs.
Draw-9 images not edited correctly will not stretch properly in the system and may cause decompilation/recompilation errors. XML files not edited correctly may also cause recompilation errors. It is very important to pay attention to the log.txt file for any errors that may be occurring during your decompilation/recompilation process.
Download apk Manager
Now here is what I've learned about apk Manager:
put framework-res.apk in the place-apk-here-for-modding folder
run the script
enter 22 to select an apk, then 1 to select your apk
press 9 to decompile the apk
go into the projects/framework-res.apk/res/drawable-hdpi folder and edit your pngs or xmls (maintain the border)
go back to the script once your done editing and enter 11 to compile
when asked if it is a system apk enter y
when asked if you want to extract other files too enter y Do not skip this step, apk Manager will seem to produce a working framework-res.apk if you skip this step but when I did it soft bricked my phone
go into the keep folder that was created and delete any pngs that you changed in the projects folder
if you change any xml files, you will also need to delete the resources.arsc file from the keep folder (this is because mane of the xml files are compiled into this resources.arsc, so to tell apk manager to rebuild it with the new xml, we need to delete the original)
go back to the script and press any key to continue
your recompiled framework-res will be in the place-apk-here-for-modding as unsigned-framework-res.apk
extract unsigned-framework-res.apk using winzip, or similar program (this is being it is compressed incorrectly)
go into the folder where you just unzipped the framework and zip it up with the compression mode set to Store - call it framework-res.apk
you are ready to go with a properly editing framework-res.apk, put it on your phone any way you like
Make sure that you have no errors when de-compiling or re-compiling. It might seem like everything is going ok, but you could end up soft bricking your phone if you don't check the log.txt in the apk Manager main folder. Check the log.txt after every decompile and recompile to ensure that you don't have a damaged framework-res.apk.
The output in log.txt should like like this for a proper decompile:
Code:
--------------------------------------------------------------------------
|Sun 05/01/2011 -- 20:11:47.57|
--------------------------------------------------------------------------
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)
Could Not Find C:\Users\jbush\Documents\Custom Atrix\Programs\apk_manager_4.9\place-apk-here-for-modding\../place-apk-here-for-modding/signedframework-res.apk
I: Loading resource table...
I: Decoding resources...
I: Copying assets and libs...
And like this for a proper recompile:
Code:
W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
(skipping index file 'C:\Users\jbush\Documents\Custom Atrix\Programs\apk_manager_4.9\other\..\projects\framework-res.apk\assets\images\Thumbs.db')
(skipping index file 'C:\Users\jbush\Documents\Custom Atrix\Programs\apk_manager_4.9\other\..\projects\framework-res.apk\assets\webkit\Thumbs.db')
The system cannot find the file specified.
If you get any errors about your images or xml then you need to fix them before you can recompile.
#framework-assistant2. Framework-res.apk Assistant
Here is a tool which I use regularly to pull the current framework-res.apk from my phone, as well as to push any updated framework-res.apk to my phone. To use this batch program you need to:
Download the View attachment 584667
Extract the zip to whereever you want the program to reside
To pull your current framework-res.apk - run the Framework-Assistant.bat and tell it to pull
To push an updated framework-res.apk - place the updated framework-res.apk in the bin/push folder, run the Framework-Assistant.bat and tell it to push the updated framework-res.apk
It is always a good idea to tell it to back up the current before pushing a new
As with any and all framework-res.apk pushes, this has the ability to soft brick your phone depending on the framework-res.apk you push, or anything else for that matter. Use at your own risk.
Here are my steps to edit framework-res.apk from start to finish which might help those unfamiliar with the process:
Run Framework-Assistant.bat and answer y to pull the current framework-res.apk from the phone, but n to push the latest version (this will simply retrieve the current framework-res.apk from your phone)
Copy that framework-res.apk from the Framework Assistant/bin/pull fodler into the place-apk-here-for-modding folder of apk Manager
rename framework-res.apk to something distinguishable, I add the current time (ex: framework-res-1016.apk). Trust me, things can get messy if you end up making a few passes with different edits, you need to keep your stuff straight.
Run Script.bat in the apk Manager folder, 22 to select which apk to use, then 9 to decompile
Go into the projects/framework-res-1016.apk folder and make any changes you wish. Most png changes will be in drawable-hdpi, xmls are pimarily located in the values and layout folders.
Once I've finished making updates, run Script.bat again, 22 to select the proper apk, then compile with 11 - follow all compilation steps above all the way through zipping it as store.
Place the new framework-res.apk in the Framework Assistant/bin/push folder and run Framework-Assistant.bat
Choose y to both pull and push the framework-res.apk (I find its always a good idea to pull your latest working framework-res.apk from the phone before dropping a new one in)
If you anticipate more edits, go back to apk Manager and paste the new framework-res.apk in the place-apk-here-for-modding fodler of apk Manager and rename it with the current time attached (ex: framework-res-1023.apk)
Delete the unsignedframework-res-1016.apk and the unsignedframework-res.apk fodler (just to keep things clean)
You now have an edited framework-res.apk on your phone and are set to fix this little issues you missed on this pass, just run the apk Manager Script.bat again, enter 22 to access your latest framework-res.apk (framework-res-1023.apk) and repeat the process.
#framework-assistant3. Editing OR removing the status bar clock in services.jar
You will need:
Some zip program, I use winrar
JDK - Java Development Kit Get the JDK
baksmali to decompile and recompile the classes.dex file - View attachment 587999
Notepad++ free editor for code editing (I recommend this program for any/all code editing, apart from hex)
Here is how to change the status bar clock color:
Install the JDK
Extract baksmali to your computer
Retrieve services.jar from the /system/framework folder
Extract services.jar using your zip program (right click on the file and choose to extract)
One of the extracted files is classes.dex, copy it into the baksmali folder
Run decompile.bat in the baksmali folder - this will decompile classes.dex and place the contents in a new folder called classout
Navigate to classout\com\android\server\status
The next step involves changing clock color:
open StatusBarIcon.smali with Notepadd++ and find this entry
Code:
.line 61
const v6, -0x1
invoke-virtual {v4, v6}, Landroid/widget/TextView;->setTextColor(I)V
const v6, -0x1 identifies the color of the status bar clock. I changed this value to "const v6, -0xff000000 to set my clock to black. Essentially the last 6 digits of this entry will determine the color of the clock. Set the last six to any html color code (google it) to set your clock color. I have only tried black here as it is all I needed, so I can't personally guarantee that anything else will work.
The next step involves removing the clock:
open StatusBarPolicy.smali with Notepadd++ and find this entry
Code:
invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->updateClock()V
It should be under ".line 592", now add this line underneath the line just mentioned:
Code:
invoke-virtual {p2, v3, v6}, Lcom/android/server/status/StatusBarService;->setIconVisibility(Landroid/os/IBinder;Z)V
Once your done editing, save the file
Navigate back to the baksmali folder and run recompile.bat - this will rename the original classes.dex file to orig-classes.dex, and the recompiled file is saved as classes.dex
Zip up the new classes.dex along with the META-INF folder that was extracted from services.jar as, you guessed it, services.jar Leave the compression setting on Normal
Put services.jar back in your system/framework folder
This is all that I know how to do with servies.jar right now, if anyone has some additional good info please post it to this thread and I will add it on.
Can't believe I forgot to thank all those who have contributed both directly and indirectly to my knowledge thus far: Nottach, NyugenHuu, KennethPenn, riral, tonecreationz, gera4eva, HFHimself, and many random threads I found on the wonderful xda forums.
Click to expand...
Click to collapse
(This quote is from: http://forum.xda-developers.com/newreply.php?do=newreply&p=16008460 and thanks should go to that OP).
*Again, these are from Gingerbread, but may be in the same xml/location as ICS (haven't checked them all yet).
Nottach said:
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.
1. Decompile systemui.apk
2. 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="0" /> ///HIDES CARRIER TEXT
/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]
/res/values/drawable.xml -
Code:
<item type="drawable" name="shade_bgcolor">[color="Red"]#ff162939[/color]</item> [color="red"]///NOTIFICATION TITLE BACKGROUND (eg. Ongoing)[/color]
/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]
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.
Click to expand...
Click to collapse
Nottach said:
Editing the framework.
We will now decompile your original (backup) framework-res.apk and edit the xmls. Again using apkmanager.
1. Decompile systemui.apk
2. Make edits to XMLs.
These are the edits I make most often.
/res/drawable/progress_horizontal.xml -
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>
/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>
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.
Click to expand...
Click to collapse
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
Reserved!!
Awesome. Thanks!
Great guides for the noobies Swiftks =) Also i think i might have a work around for the patch9 pngs, Ill msg you on GChat
great stuff, thanks for sharing mate.
Sent from my TF201

Categories

Resources