Im trying to start theming, as i have only been in the android club for about a month. The issue im having is with xml files. Everywhere i read, its like, open in notepad to edit. I open them in notepad and all i get is a bunch of gibberish symbols and letters. Is there any special way that i need to use to edit xml files?
Any help is appreciated, Thanks.
Sorry if this is a repeat, used the search but not in depth, so please dont flame.
I spent a long time searching for how to do this as well. Easiest way is to use APK manager.
Go download it from here: http://forum.xda-developers.com/showthread.php?t=695701
Basically you put the apk you want to edit into the edit folder and decompile it. Then go into the projects folder and the xml files created will be readable. Edit them using textpad, notepad, w/e you want. Once you are done load apk manager backup, select the same project and then compile the apk. Thats the gist of it, its a tiny bit more complex but you should get it after trying it. Also if you are looking to edit something like services.jar I found you can rename it to services.apk and it will decompile the smali for you so it can be edited. Just play around with APK manager and it should do everything you will need.
sweet, thanks for the help. hopefully ill have a nice theme on here in a couple weeks. thanks
yeah, if you want a full look into any apk you're going to have to decompile it unless you know what you're looking for in the hex of a compiled xml... also with a decompiled apk you can see alot of stuff such as how the .9 borders (or what ever you wanna call em) are done so make sure they stretch the same way
This guide will assume the basics (image editing, apk manager setup, adb, etc..) are understood. Minus 9png's, I will go over that. The point is to have a base here for discussion on how to edit things properly. If anyone has something to add, please do.
OK, lets start with something that caught me off guard when switching to a phone with blur... there are certain apps that have dependencies. You have to set those dependencies up. The easiest way to do this is, from whatever ROM you are running, open the zip up with 7zip. Also open up your APK Manager and go into the "other" folder. From your ROM grab framework-res.apk, blur-res.apk, moto-res.apk, settings.apk and systemUI.apk and copy them into the "other" folder. Once there, open up a command prompt. change directories until you are in the "other" folder. Once there do this for each item. apktool d framework-res.apk and hit enter. Then, apktool if framework-res.apk. Do that for the rest.
9pngs.. Everyones afraid... they are a walk in the park. 1 extra step and its done. Decompile your apk, Edit it to your liking and save it. Open it up with draw9patch and add the guides back in and save it. The right and the bottom just make a big ass black line from one side of the image to the other (most of the time). The left and top side require a little fine tuning. Basic rule is to stick a dot in "the middle". Over on the right, see if it looks right. If it doesn't, adjust it. Once done, save it. Recompile and you are done. If using apk manager 4.9 or newer, make sure you delete the images you edited in the keep folder.
Editing xmls....
You are going to be editing xmls to either change background color or text color. Heres a general rule that will help... open the xml in notepad++ and hit ctrl +f. search for android:background .... you can change whatevers there to a hex color. like, if you wanted a dark red.. #ffbc1010. if changing text colors, do a search for android:textColor. Do the same thing with searching and changing.
Some edits will be found in the values folder... this would either take place in Colors.xml, drawables.xml or styles.xml
As I have found, some xmls just dont have a call to a bacground or text color so.. you just have to make one yourself. I always stick those in right after the androidrientation stuff. For example, you want a red background and nowhere in the xml can you find a spot to change it. No worries.. add this... android:background="#ffbc1010" . Good to go.
Some apks wont decompile with apk manager 5.01. You get an out of bounds error. Use apk manager 4.9 for those.. it will open them.
If you try to install an app and something doesnt work.. 1 minor thing, even though the rest does work.. do not try to install another re-edit until you have gone back to a fully functional version. Otherwise, none of your new edits will take hold even if they are correct. (Learned that one the hard way)
Remember, trial and error siis the Android Way!!!
Lastly, I leave you with this... each app has its own "fun-ness" to it. If you are ever stuck and need help, please feel free to ask. I can't do magic.. like looking at Sense... cause I dont have it.. but if you are running GB stock, Blur or its just an app for any phone.. please ask. I will answer, even if I dont know the answer and we have to work together to figure it out.
This is my contribution to XDA. Let's keep progression moving forward. I want to see more themers and more options!!!!
EDIT:
NEW INOFRMATION
I copied this over from my how to on DF... The links are probably still good (I just updated them) but just make sure you are getting the latest version... I wrote the how-to in January.
Since I see a lot of people trying to figure out how to get into theming and such, might as well share my knowledge...
I would also like to thank Devildog8791 and say that he went thru and added a lot to this via PM (which I then pasted here). He also made it a lot more detailed and easier to follow along for everyone.
Things you will need:
-APK Manager located here. It is the one from post #226. It uses apktool version 1.3.1 instead of the newest one, 1.3.2. The new version has some bugs that have not been worked out yet.
-Android SDK located here. There are two different files for Windows: a zip file and an .exe file. I downloaded the zip file, but you can try the .exe file.
-7zip located here. Make sure you pick the right installation for your setup (32-bit or 64-bit)
-Java JDK located here. Make sure you pick the right installation for your setup (32-bit or 64-bit)
Before I begin, please keep in mind that this is just how I did it. Maybe it's perfect, maybe its wrong, BUT... it worked for me.
NOTE: PLEASE READ THIS
Unless you are going to be pushing apks to your phone or pulling them directly from the phone, you do NOT need to bother with steps 3-6 and 9-11. You also only need to add the Java stuff to your Environment Variables.
OK here is how I set all this up and in the order that I did it.
1) Install the Java JDK. You probably don't need to, but I rebooted after the installation was complete.
2) Install 7zip.
3) Extract the android SDK file and move the extracted folder to the root of the C: drive. I renamed the folder "androidsdk", but you can rename it whatever you want. On my computer, the SDK is at C:/androidsdk (whatever you name this and anything in its filepath, make sure there are NO SPACES).
4) Go into your sdk folder and run "SDK Manager".
5) When the "Android SDK and AVD Manager" screen opens up, select "Available packages". Select the packages you want to install and click on "Install Selected". If the "Choose Packages to Install" screen comes up automatically, then select "Accept All" and click "Install". This will take a few minutes. Go ahead and get a drink and stretch your legs.
6) When your packages get done downloading and installing, close the "Installing Archives" and the "Android SDK and AVD Manager" screens.
7) Extract the APK Manager zip file and move the extracted folder to your user file. Mine is located at C:\Users\Tim\apk_manager_4.9.
8) Now you need to set your environment variables. To do this, click on "Start" and then right click on "Computer". Left Click "Properties" and in the left pane you will see "Advanced system settings". Click on that and it will open up a new window called "System Properties". Click on "Environment Variables" at the bottom of the screen.
9) Now that you are in the Environment Variables screen, you want to look at the top part of the screen first. Under "User variables for <your name here>", click on "New...".
10) In the "Variable name" section, type in ADB.
11) In the "Variable Value" section, type in C:\androidsdk\platform-tools\adb.
12) Now go to the bottom part of the screen and find "Path" on the left side under "Variable".
13) Double-click that "Path" section and it will bring up the edit screen.
14) Go to the end of the "Variable value" section and add the following: ;C:\Program Files\Java\jre6\bin;C:\Program Files\Java\jdk1.6.0_23\bin;C:\androidsdk;C:\androi dsdk\platform-tools;C:\androidsdk\tools. Verify that the bin file locations for java are in the same place as indicated here. They should be the same, but check it to be safe. Also, don't forget to change the name to whatever you named your sdk folder. One last thing is to make sure you have a semi-colon in between each path as indicated.
15) Click "OK" when done and close all the windows.
16) Reboot your computer.
Now that you have your environment variables set, you should be good to go to use APK Manager. One thing that you might have to do is set up your adb drivers for your phone. I have a Droid Incredible and I went to this site to get mine set up. If you have a Motorola Droid 1 (which most on this site do), then it should set up with the proper drivers when you plug it in the computer. My wife has a Droid 1 and that is what happened for me.
So, now you have 7zip, SDK, Java and APK Manager installed, setup and ready to use. Fantasmagorical!
Great, now, what the hell do you do with it...lol
1) You decide on an apk file (let's choose phone.apk) to use. You can grab it from the stock ROM your using, pull it off your phone, whatever...
2) Now that it is on your computer, move it into the APK Manager's "place-apk-here-for-modding" folder.
3) Run the script.bat and select option 22. Then choose the apk (project) you want to work with.
4) Now select option 9 to decompile the apk.
5) Once that's done select option 11 to recompile the apk. If it asks you if it's a system app (y/n) then you are in business. If it says there is an error, it is most likely that the apk has some .9.png images without guides. If this occurs, grab the stock images and stick them in by using 7zip and choose "open archive".
6) OK, so it works fine, now what? Just choose "N" and when it's done, go to the "place-apk-here-for-modding" folder and delete the "unsignedphone.apk" file.
7) Now go back to the script and choose option 9 to decompile again.
8) Once it's decompiled, navigate to the "projects" folder and go into the phone.apk folder.
9) Make all your xml edits.
10) Now, go back to the script and choose option 11. Choose "Y" and then choose "Y" again.
11) Now, go into the "KEEP" folder and delete the resources.arsc file and also delete every single xml you edited. Then go back to the script and "press any button to continue".
12) Once that is done, you are done. Go into the "place-apk-here-for-modding" folder and you will see an unsignedphone.apk file.
13) Put it in an update.zip that you can install to your phone and then rename it to phone.apk.
14) If you are wanting to now stick your own images in, use 7zip and select "open archive" and then drag your images into the proper folders.
15) Close 7zip and select "yes" to the box that pops up.
16) Now you are ready. Move the zip file to your phone, reboot into recovery and install it.
Going to add something blur related here. AK Manager 4.9 will give you errors recompiling phone, contacts and dialer. To fix it, go into the decompiled apk and open apktool.yml with notepad++ or similar. You will see 3 lines.. -1, -3 and -2. Put them in order.. -1, -2 and -3. Good to go.
Very nice thanks for this
Sent from my DROID X2 using Tapatalk
No problem. Get out there and make some good stuff!!
Hey thanks for the guide. I have a lot of programming experience but I am fairly new to android.
With that said, you state that: "This guide will assume the basics (image editing, apk manager setup, adb, etc..) are understood."
Is there a page were this things are explained, I have the image editing down, but have no idea about the apk manager,adb,etc...
I found this and I was wondering if this is the apk manager:
http://forum.xda-developers.com/showthread.php?t=1227179
Thanks, and sorry if this sounds too noobish.
Yes, that is apk manager. I would use 4.9 though because 5.01 will give you a lot of "out of bounds" errors when decompiling. 4.9 wont. And the apps work.
There is also another thread here on XDA .. So you want to make a theme.. or something like that.
I also wrote a How-To on installing java, apk, adb and setting all of your environment variables. That is in the "Team Inversion Conversion" area on droidforums.net.
Edit: Added the how to to the original post.
Question
So i wanted to theme and started reading guides on xda and came to the conclusion that it was a lengthy process requiring knowledge of may different programs, most of which was over my head. Just recently i started digging into roms wanting to change the lockscreen background and incall backgrounds. using 7z i located the lockscreen background file at system\framework\framework-res.apk\res\drawable-hdpi\zz_moto_gradient_bg2.png I then copied the file out and opened it and using paint, changed the image to a different one and then pushed the modified file back into the zip and then flashed the rom. I was very happy to end up with this
.
My question is, not using apk manager or apktool or a command prompt or any of the methods that ive read, am i doing something wrong? Will editing roms in this method run me into problems? Or is it just a noobish approach that actually works?
afm1118... There is absolutely nothing wrong with the way you are doing things. Just make sure you don't mess with any 9pngs. if you edit those with your method, it will break the signature. The image would still work but the guides would be gone. When I first started learning to theme, I didn't understand what a guide was. So, heres my explanation... look at your keyboard... in landscape mode, the buttons are bigger than they are in normal view. guided 9s will make the images stretch perfectly to fit the required dimensions. unguided 9pngs will just take the actual image and make it bigger. Kind of like if you went into an image editor and re scaled a 40x40 pixel image to 100x100 pixels. It would still be there but it would be a little distorted.
Yeah i just stay away from the 9pngs because i dont understand them and just know not to touch. You definitely helped me understand them better tho. What i dont understand is the need to use apk manager, or what recompiling/decompiling is. Like just using 7z i modified phone.apk in the same fashion i did the lockscreen, changing the incall background. Im guessing apk manager is necessary for editing xml. I really want to understand all this.
afm1118 said:
Yeah i just stay away from the 9pngs because i dont understand them and just know not to touch. You definitely helped me understand them better tho. What i dont understand is the need to use apk manager, or what recompiling/decompiling is. Like just using 7z i modified phone.apk in the same fashion i did the lockscreen, changing the incall background. Im guessing apk manager is necessary for editing xml. I really want to understand all this.
Click to expand...
Click to collapse
I dont do .9 pngs and I still create alot of themes, dont be scared to theme cuz u cant do .9.
TheMuffStuff said:
I dont do .9 pngs and I still create alot of themes, dont be scared to theme cuz u cant do .9.
Click to expand...
Click to collapse
Im not scared of um, i just thought i would figure them out when i wanted to change one. but so far,with nitros rom and with muffstuff xkape and funkencools themes along with uot kitchen ive been very happy. The themes are great, im looking forward to whats next.
afm1118 said:
Yeah i just stay away from the 9pngs because i dont understand them and just know not to touch. You definitely helped me understand them better tho. What i dont understand is the need to use apk manager, or what recompiling/decompiling is. Like just using 7z i modified phone.apk in the same fashion i did the lockscreen, changing the incall background. Im guessing apk manager is necessary for editing xml. I really want to understand all this.
Click to expand...
Click to collapse
TheMuffStuff said:
I dont do .9 pngs and I still create alot of themes, dont be scared to theme cuz u cant do .9.
Click to expand...
Click to collapse
.9s are integral to theming....cheating them and not doing them arent an execuse
Nitsuj. Instead of bringing negativity into the thread, try being useful. This is a help section not a your doing it wrong thread. If you would like to discuss it further pm me.
Sent from my Nexus S using XDA App
Nexus S.. Ha.. Editing the build.prop har further reaches than I thought.
Anyway, yes, editing an xml requires decompiling and recompiling... or does it? Not so fast. You can use a Hex editor to edit those colors but, I have no clue. I never went that route.
I guess the easiest way to think about apks that are compiled or decompiled is like this... lets say you have a game.. Football.exe on your computer. you click it, it opens. Now, to save space, you zip it up and its now in a zip file called Football.zip. You click it, it does NOT open. The OS cant read a zip file as an executable file.
You open a compiled xml, can't read it. you open a decompiled xml.. its all right there in plain English. Why would you want to edit an xml? Many reasons. I am going to give you an example right here...
This is the decompiled progress-horizontal.xml from the framework. It controls the color of the bar when you are dwnlading an ap, adjusting the ringer or media volume, etc..
<?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="0.0dip" />
<gradient android:startColor="#ffdfdfdf" android:endColor="#ffdfdfdf" android:angle="270.0" android:centerY="0.75" android:centerColor="#ff000000" />
</shape>
</item>
<item android:id="@id/secondaryProgress">
<clip>
<shape>
<corners android:radius="0.0dip" />
<gradient android:startColor="#ff000000" android:endColor="#ffbf0d0d" android:angle="270.0" android:centerY="0.75" android:centerColor="#ffbf0d0d" />
</shape>
</clip>
</item>
<item android:id="@id/progress">
<clip>
<shape>
<corners android:radius="0.0dip" />
<gradient android:startColor="#ffbf0d0d" android:endColor="#ffbf0d0d" android:angle="270.0" android:centerY="0.75" android:centerColor="#ff000000" />
</shape>
</clip>
</item>
</layer-list>
Im not going to go look at a hex chart but I think this is from when I was making an orange theme the other day. You can see there are 9 hex codes for color. You can edit those and make the progress bar have a different background and color. If I remember correctly, the first 3 control the background and the other 6 control the color of the bar. Play around and experiment til you see one you like. you can also add in transparencies and such to get fading and whatnot. like #80dfdfdf instead of #ffdfdfdf.
Some xmls wont be as clear cut.. it mught say something like android:background="@drawable/status_bar_bg"
This still can be changed. You can actually add something to a folder..image, color, etc.. but you also need to make an xml for it too. (I think, never done it).
You can make it point at a different item or, you can just give it a hex color.
ok so with the lockscreen i did, i could have done it two different ways. i could have changed the xml to target a different file or what i did, modify the image file itself. its just like html or any programing, its been a while.
correct man. Deciding which way to go is key. some of those images show up all over the place. In each instance just have to decide if its better to point it something else or just change what its pointing to looks like.
When I first themed ShapeWriter(back when I hadn't even heard of a .9) I got into a whole new mess with .smali, turns out that's where the tracer color was defined. You could never edit smali without decompiling first, although for theming its rare to have to.
Once you start theming you start learning little things here and there. And usually if your theming, it's cause your trying to do what no ones done yet; so most of what your going to learn is from a LOT of trial and error.
I'm not good at writing guides or anything but anyone can feel free to ask in my thread or pm me if you have some specific questions, etc..
Sent from my DROID X2 using XDA App
Also just thought I'd add: things may seem confusing sometimes but so would basic algebra if it hadn't been etched into your brain already.
Sent from my DROID X2 using XDA App
I was wondering is someone could explain to me a little better as to how to make a flashable zip.
I wanted to change the background image of the dialer, but when I have a finished apk I dont know hot to make it flashable.
Thanks
Electroniko said:
I was wondering is someone could explain to me a little better as to how to make a flashable zip.
I wanted to change the background image of the dialer, but when I have a finished apk I dont know hot to make it flashable.
Thanks
Click to expand...
Click to collapse
Well I could get pretty indepth but if you just want one that works you could borrow mine or probably anyone else's and change it for your needs(deleting my files adding yours).
without getting into the actually scripting the basics are:
A script that tells you what files/dir go where(among other things) and the files.
Usually it will just unpack everything in the zip to the "root" of your system partition. So if you were to use my zip i would keep my dir's and just delete the actual files.
basically if you want to put a file in "/system/framework/" on your phone you would put the file in "/system/framework/" in the zip.
also a note if you use mine; it will only copy to the system partition and not sd or sd-ext. even with that it should fit your needs.
Hope that all helps
I used dex2jar to decompile classes.dex , and used jdgui to convert those files into java files to edit, now I don't know how to recompile back, I'm not even sure it will work properly, or at all, but worth a try, I was trying to mod the vanilla Messaging app and remove all the attachment options for videos, pictures etc. because it's a waste of space, any help?
Use baksmil n smil tool ita simple.....
don't forgot hit thanx....
Probably might not work. The java files you get aren't quite the right ones. They will give you an idea of what to edit in the smali though.
Seeing as it is the stock messaging app, you would be better to download the source of the app from AOSP, edit that and compile. As said above, dex2jar does not give perfect Java code, so even if you did recompile it, you might not get a working app.
Or you could use baksmali to decompile the app to .smali format, and then use smali to recompile after editing the .smali files (not as easy to edit as Java source files).
The Smali Files are the machine language file type thing isn't it?, I've learnt the basics at Uni (using Spim), and understand what each thing does, but as it isn't directly coded, there isn't enough comments, for me to do anything with, I need to have some kind of info about what this does and what that does.
And about AOSP, I've tried downloading the source and It should be all downloaded and I've tried compiling it for my device (Sony Ericsson Xperia Ray (ST18i, Urushi) but it always comes up with errors, so I have put that stuff aside and gone back to attempting to mod some apps (First time, newbie), but I don't know where the Messaging App would be and how to change it. Sony Ericsson have Source Code for their Stock rom right?, I have tried getting hold of that, but have no idea how to read the file, and edit it, so it's much like AOSP. How to read files and how to edit and compile them?.
I own a BB Playbook tablet for about a year now (bought it during the when it was about 200$ because I needed a 7'', the hardware was specs were nice at the time and the company promised Android app support). Regardless of the sanity of my decision the device saves me about 2 hours per day (I use it mainly to read pdf and build an xls database).
I've converted many apk to bar in order to sideload them to my device (not all of these work). Recently I tried Firefox on my Xperia mobile and was quite pleased with the ABP plugin So I tried to convert the apk but both the apk2bar and the Blackberry Graphical Aid Tool complain that the version number is too long...
Anyone knows how to shorten it? In what file is it located? Or anyone up for the task.
Keep in mind I'm not a dev.
Thanks in advance
android:versionName is what you need to change.
Thanks for the reply.
Tried the apps from your sig. I managed to edit AndroidManifest.xml. Recompiling (after the changes) doesn't seem to work (the result apk is much smaller... many files/folders from the original FF apk were not in the project folder or compiled apk).
Tried unpacking + zip + sign but this last step is failing. Wanam APK suite keeps giving an error message. My box runs Win7 x64 and at first I only had Java RE x86 7.10... it didn't find Java in my machine and stated signing would not work; after I installed the x64 it gives no preemptive messgae and I progress further but the signing process fails
frmariam said:
Thanks for the reply.
Tried the apps from your sig. I managed to edit AndroidManifest.xml. Recompiling (after the changes) doesn't seem to work (the result apk is much smaller... many files/folders from the original FF apk were not in the project folder or compiled apk).
Click to expand...
Click to collapse
Hi.
Look at the files in the apk before decompiling it and you'll see that all those files and folders aren't there to begin with. All those files and folders are from the decompiled resources.arsc so it's normal for them not to be there when recompiled, and when you add the resources.arsc, manifest and meta folder from the original apk to the recompiled apk, it will become larger.
I noticed yesterday I had put an old apktool in the folder but have corrected it now so download and try again.
I was attempting to do the same so I decompiled and edited the android:versionName and the android:versionCode . After doing that, recompiling and resigning I was able to convert using apktobar and load to the playbook with no issues......except the app opens to an all white page and nothing beyond that will work! Just to be clear I was attempting to convert Firefox as well. Hope someone has some helpful hints that could fix it!