I'm asked all the time how to theme; what's the best way, the best tools, etc. Well, I'm going to compile the best resources that I think will get you up and theming. It's a process, and you'll need to have time and devotion, but these tools and tips will help
A general guide (MOD Info: The document seems to have been removed and there is no possibility to recover it)
This is the best guide that I know of out there for theming; it is comprehensive, and if you use it, you should give a big thanks to the makers of it.
Apktool or apk manager
I find both of these to be great; I have apk manager (windows and linux) on my pc, and apktool (windows, mac, and linux) on my mac. APK manager will likely be best for beginners due to its simplistic and user friendly UI, and it offers some more features then apktool, like zipaligning, optimizing, etc. Both are fantastic, and absolutely a huge help for theming and decompiling apps.
The android SDK
It's always helpful to know how to use the SDK for adb, zipaligning, and other tasks. Remember, even if you have other tools like apk manager to zipalign, it's always good to know how to do it by hand And you'll need tools in it like draw9patch for those pesky .9pngs
Notepad++ or TextWrangler
You will use this all the time. Editing files like decompiled XMLs on this is a breeze
A nice website for Hex colors
You'll use this every time you do XML edits; you'll need these color codes to tell the XMLs what color you want to show up
Photoshop or Gimp or Paint.net
Want to go all out? Go photoshop. Want a great, free tool to theme with? Gimp is the way to go. Either way, you'll want to use one of these tools for png edits when theming. Paint.net is also another good free tool for edits.
Hex Fiend
For you mac users like me, Hex Fiend comes in handy if you ever need to edit binary (non readable or decompiled) XML.
Update Zip creator/modifier
Fabulous tool on windows to create and modify elements of updates zips
ADW Themes
Want to make an ADW theme? This is a great tool to get you started on that
Knowledge
You'll want some general knowledge with terminal or windows cmd prompt. Because you will use it. Also, you'll need to know what to edit in a theme to change aspects of color and such correctly. Well, this is a great tool to find out what you need to edit
I'll be adding to this guide as needed. Please, feel free to ask any questions, and I'll be here to answer them Hope this helps everyone!
In Depth Look: XMLs
For the first in depth look, I'm going to focus on XML edits, as they are a major component to having a complete and thorough theme. Image edits are easy enough, but many don't know where to go when it comes to XMLs. Well, here's where I'll tell you
What is an XML?
Here's is a nice read on XMLs and what they are.
What do XMLs have to do with Android?
XMLs can control many functions in android apps. For the scope of this thread, we'll be changing binary XML into a readable XML file to make our edits, which will usually result in color changes in apps.
How do I edit an XML?
Make sure you have apktool or apk manager correctly set up. They'll make XML edits a breeze. If you need help setting them up, wither ask me or see their manuals.
Take the apk you want to edit, and decompile it with one of those two tools. Make sure if it's dependent on Sense resources or TW ones that you have those set up. (Again, either ask me or see instructions for apktool and apk manager)
Once decompiled, open the XML you'll need/want to edit. See the link I have above under knowledge for finding out what XML you may need to edit
For Windows, use Notepad ++ to edit, and for Mac, use TextWrangler (just suggestions, others work as well)
Use the Hex Color code link I have listed above in the OP to find the suitable code for the color you'll want if you;re making a color change. Remember, the color codes will be 6 digits, but there'll be 2 digits in the XML before the color code. 00 is transparent, and FF is the "regular" color for lack of a better term.
When done with the XML changes, recompile the apk
Sign if needed, and install to see if the changes you've made are worth it
In Depth Look: Using Apktool or Apk Manager.
What are they?
Apktool and Apk Manager allow you to decompile, reengineer, and compile apks after making changes to files in the decompiled apk.
Why would I need them?
These tools allow you to edit XMLs, edit smali files, and change many other aspects of the apk that you wouldn't be able to do without decompiling the apk.
Setting up apktool on a mac
If you have a mac like me, remember that apk manager doesn't work on macs. So, you must use apktool, which is absolutely fine, as in my opinion apktool is better than apk manager. To set up apktool, you must have root mode enabled on your mac. To do that, simply follow these steps:
Open system preferences
Open accounts
Go to login options
Hit join next to network account server
Select open directory utility
Click the lock at the bottom of the window that pops up and enter an admin password
Then, go to the top bar on your mac, hit edit, and select enable root mode
Once you have root mode enabled, you're ready to set up apktool:
From the apktool website, download apktool1.3.2.tar.bz2 and apktool-install-macosx-2.2_r01-1.tar.bz2
Next, open terminal
su
tar -C /usr/local/bin -xvf <zipped file name>
tar -C /usr/local/bin -xvf <zipped file name> (for the second file)
Now to confirm it worked, type "apktool" no quotes
You should get a help menu for apktool
If so, you're good to go!
Now, once you have it set up, you're ready to go! After typing apktool, you'll see the help menu which'll give you the commands available for apktool, but I'll go over the basic ones here.
apktool d "apk path here" will decompile the apk
apktool b "decompiled apk path here" will build an apk from a previously decompiled one
apktool if "framework-res.apk path here" will install a framework res or any app really to allow you to work with dependent apps. For example, if you want to modify an HTC sense apk, you'll need to install the htc.resources.apk first through this method before decompiling the sense apk.
What if I have windows?
The steps will be very similar. See the apktool website I have listed above for a bit more info, but as I said, it's not too far off minus the having to get root access part.
This seems to complex, and I hate using commands! I wish there were another way....
Oh, but there is! *ends cheesy infomercial voice* Apk manager will give you a simplified setup, and all of the same features plus more; all you need is windows or linux.
Great! How do I get that?
Download Apk Manager
Extract the zip
Open up the enclosed script
The rest is pretty self explanatory
Now, even will apk manager, you'll need to make sure you know how to set frameworks up and such, but it makes it much easier with its convenient scripts. If you have any questions, ask them here and I'll certainly do my best to answer them
Helpful Hint!
Remember, once you have an apk decompiled with apktool or apk manager, you have the best chance to correctly edit .9pngs!
If you open the .9png in the decompiled app and edit it with gimp or photoshop while leaving the pre-drawn boarder there, you'll be able to recompile the apk with a properly edited and themed .9png
Advanced Decompiling
Sometimes, you have that pesky app that just won't decompile correctly. Usually, it's an app related to others, like a proprietary system app based off framework-res.apks.
When this happens, you need to ensure that the frameworks are there to have the app's recourse tables properly compile.
For either apktool or apk manager, find a folder on your computer called "apktool."
The should be a folder in here called "framework," and inside that, a 1.apk.
For an app that is dependent on the framework-res.apk in a specific phone/rom, take the framework-res.apk for that rom and rename it 1.apk.
Replace the default one in the folder with yours.
If there's a second one, like the twframework-res.apk for Samsung phones, rename it 2.apk and place it in the "framework" folder.
Now, decompile like normal, and everything should be good
Editing Smali
Right here, thanks to Yorzua
Cool, so what about theming market apps. I mean like changing the icon. I know how to change them individually but what about changing them in bulk. Where would one put them inside of an update.zip?
Sent from sweet G2
smoochiezz24 said:
Cool, so what about theming market apps. I mean like changing the icon. I know how to change them individually but what about changing them in bulk. Where would one put them inside of an update.zip?
Sent from sweet G2
Click to expand...
Click to collapse
Changing them in bulk would require you to theme each icon you'd like, and then you could do one of a couple things:
Make them your custom icon with ADW or LP (easiest way)
Install them over the apps you have on your phone to get your custom themed app
Make a flashable zip to add the apps to system/app, resulting in a themed set of apps, now in system/app
I should probably add a bit to the guide on making zips, yes?
Added update zip tool to the guide
Section 6. ZipThemer: an alternative theme installer with MetaMorph compatibility and advanced features.
Ken
kellinwood said:
Section 6. ZipThemer: an alternative theme installer with MetaMorph compatibility and advanced features.
Ken
Click to expand...
Click to collapse
Or that'd work too from a phone I'm targeting computer usage, but that's a nice app, well done
Thanks for this resource! *tagged*
-----
Sent from my CDMA Hero. I got some hot Froyo-on-Hero action here!
user7618 said:
Thanks for this resource! *tagged*
-----
Sent from my CDMA Hero. I got some hot Froyo-on-Hero action here!
Click to expand...
Click to collapse
No problem! I'll be adding to it as well, and I'll go more in depth to version elements in my reserved posts
Sent from a truly Epic phone!
theimpaler747 said:
No problem! I'll be adding to it as well, and I'll go more in depth to version elements in my reserved posts
Sent from a truly Epic phone!
Click to expand...
Click to collapse
Good, because I'll probably be getting a new laptop soon, so I will need to download all of this stuff again.
-----
Sent from my CDMA Hero. I got some hot Froyo-on-Hero action here!
user7618 said:
Good, because I'll probably be getting a new laptop soon, so I will need to download all of this stuff again.
-----
Sent from my CDMA Hero. I got some hot Froyo-on-Hero action here!
Click to expand...
Click to collapse
Ah yeah, that'll be a pain... good thing I have all the links in one place now!
theimpaler747 said:
Ah yeah, that'll be a pain... good thing I have all the links in one place now!
Click to expand...
Click to collapse
Indeed.
-----
Sent from my CDMA Hero. I got some hot Froyo-on-Hero action here!
Thank you for this. This is just what I was looking for
Sent from my DROIDX using XDA App
Dxblade said:
Thank you for this. This is just what I was looking for
Sent from my DROIDX using XDA App
Click to expand...
Click to collapse
No problem! Glad you liked it, and check back, as I'll be adding more and going more in depth with XML edits and such
I'm sure many people will find this extremely useful. There are a lot of resources out there, but finding them can be difficult.
Apart from system-level theme creation, there's a great guide to creating ADW.Launcher themes here. I would know - I created the icon naming video haha.
Vazguard said:
I'm sure many people will find this extremely useful. There are a lot of resources out there, but finding them can be difficult.
Apart from system-level theme creation, there's a great guide to creating ADW.Launcher themes here. I would know - I created the icon naming video haha.
Click to expand...
Click to collapse
Very nice! I'll add that to the OP for you
Awesome! Hopefully this will inspire more people into creating the themes of their own!
Vazguard said:
Awesome! Hopefully this will inspire more people into creating the themes of their own!
Click to expand...
Click to collapse
Agreed! I'm looking at publishing ADW themes of my own
So, I'm a themer at heart, and I love MIUI. Sometimes making MIUI themes gets me confused, I have a nice compile script set up for .9.pngs but then the folders and zips and etc etc, sometimes I get a bit overwhelmed and I completely lose myself in what I was doing. So I decided to make a sort of kitchen, resembling dsixda's ROM kitchen.. currently it's still kinda far off, but that is the ultimate goal.
This is not a graphical tool. This is not an image manipulation tool.
Basically, you take the apks you want to theme and put them in their own folder. Using framework-res.apk and framework-miui-res.apk isn't 100% necessary, but if they're not included, there's a chance the apks will not decompile properly. It will install the two frameworks if they exist, and then decompile all the apks in the folder. It goes into the AndroidManifest.xml file to get the package name (ie com.android.mms) and changes the name of the folder to it. It takes colors.xml and turns it into a theme_values.xml. It then deletes all the extra files that are not needed for a theme, and creates a generic description.xml file. It tells you to edit your pngs, description, and theme_values and run the compiler.
The compiler runs in the same directory, and compiles all the .9.pngs in each separate folder, puts the zips of them with no zip extension into a new "theme" folder, then puts it all together into an mtz in that theme folder.
If you understand MIUI theming, I hope this makes sense. I have a little video showing it off:
http://youtube.com/watch?v=Xg6UHzNjrq8
I plan on prettying it up a little bit more and I want to make a menu to use for future versions.
-----------------------------------------------------------------------------------------------------------
How to use it:
Extract v4tk folder somewhere, and add it to your PATH
Create a new folder, copy and paste the apks you want to theme into it.
- framework-res.apk and framework-miui-res.apk from the same build as the apks you're trying to edit is essential unless you already have them installed with apktool
From terminal in this folder, run "mktemplate" - this makes all the magic happen, and it actually creates a description.xml based on your input.
Edit the pngs, delete the ones you don't edit, for .9.pngs make sure to leave the 1px border alone unless you know what you're doing
Edit the theme_values files, remove the lines you didn't make changes to. Make sure no @color:android/red or whatever are in them. Hex argb only.
Go back to your terminal, run "mktheme" - this compiles all the .9.pngs, packages everything up, and creates an mtz based off your input for a filename. The mktheme script also supports lockscreen, wallpaper, icons, and preview folders... The template does not create these, but if you make them, the mktheme script will package them into the resulting mtz.
For linux or possibly cygwin (should run fine in terminal on OSX - untested though) only currently. I'm afraid it's been over a decade since I've messed with batch scripting, and before I go through the hassle of putting together a windows version, I want to have a complete project.
Also, just wanted to say one of the main reasons I'm releasing this tool is because MIUI v4 is changing a lot week to week; sometimes there's new images, sometimes there are new colors in the theme_values. If I made a template, it'd be obsolete in two weeks time
Also, this will work with any* apk for your theming pleasure, not just MIUI apps.
*maybe there's an app it can't decompile. shouldn't be, but be warned
Finally.. Download: http://lz.gd/v4tk
You Sir are a stud! and not to bad a Miui either! lol
This looks very impressive!
Nice cant wait for it!
It looks great, I love it.
Wow, seems impressive!
A Gui intefarce to exploit pngs with preview would be awesome !
Think this is a huge work
Pretty Awesome. Cant wait
Looks really cool, nice job
This is what the MIUI community needed. NICE job.
I've uploaded it with some minor cosmetic changes. It's completely functional, but not quite where I want it to be yet.. OP has been updated with some basic instructions on how to use it, post here or come find me in #miuithemes on irc.freenode.net for any issues
You sir are awesome. Got the beta downloaded. Thanks so much for your hard work and efforts.
Anybody using this? Is it working well for you?
Report any issues please.
I have not used it yet, but I plan to directly after my rom is updated from 2.5.4
Sent from my DROIDX using XDA
I recently developed an app through android online developers and I received the apk. but my problem now is how to import the apk to android studio to be able to insert & implement my google admob for monitization of my app. Please, help me & good contribution needed. Thanks.
Angelica6 said:
I recently developed an app through android online developers and I received the apk. but my problem now is how to import the apk to android studio to be able to insert & implement my google admob for monitization of my app. Please, help me & good contribution needed. Thanks.
Click to expand...
Click to collapse
apk file is already compiled so I don't think you will be able to edit the whole project just by importing it. You can open your file with WinRAR to retrieve a specific file and then edit it.
Dezash said:
apk file is already compiled so I don't think you will be able to edit the whole project just by importing it. You can open your file with WinRAR to retrieve a specific file and then edit it.
Click to expand...
Click to collapse
Thanks Dezach; How do I find and modify a build.gradle file from the extracted file. I need to modify it before modifying manifest file for my admob integration process. Thanks
You need to have the sourse code. This cannot be done by simple open the apk with winrar or similar programs. You need to decompile the apk to have access to source code. There are a lot of tools for this job in Android section("development and hacking" and "software development"), but is better if you can get the source code from online developers.
Angelica6 said:
Thanks Dezach; How do I find and modify a build.gradle file from the extracted file. I need to modify it before modifying manifest file for my admob integration process. Thanks
Click to expand...
Click to collapse
You can not do it. Gradle is a build tool. There are no gradle files in your .apk
Essayer avec Eclipse c la sollution
you can open as debug APK ( by android studio )
Hi, i have couple of questions about theming cyanogenmod with android studio, I must say, i am novice and I don't understand some parts. First I install Android studio, Android SDK, JDK, and download all needed tools and packages for Android 5.x, Everything woks good i think, because i sucessful send my theme to mobile and override some parts od systemui. Only what I change was color, dimens, drawables, but i have some problems with layout override, in catlog show me error because I dont have source of some parts, but I dont know why is needed in theme when this sources are already in mobile in systemui, and if these source are not set/override in theme, may use original files. Another problem is with preview render, still show me errors eg..
Code:
Couldn't resolve resource @dimen/qs_detail_item_height
, .. because I think these files are not in res folder but are in folder
Code:
mytheme/assets/overlays/com.android.systemui/res
I am using this gradle template for theme https://github.com/cyngn/android_packages_themes_Template. How can I fix these issues. Thanks.
I am having trouble trying to understand what you mean, you're talking about an error and some sort of preview issues?
Could you split both of these factors into separate paragraphs explaining what you mean, only then I can understand and help you out bud.
Overriding layout won't work with CM12+.. This feature was disabled intentionally because it could possibly be abused for changing strings and tricking people.
And I didn't know that a preview feature for CM themes existed. Always create my themes by trial and error on my phone.
Hi guys, i will try explain deep my problems with my poor english, when I put gradle template for CM12 to android studio and start with some customization I dont see preview, what I change and what effect has my change in files. It is really hard something modify when you dont have preview. Preview doesnt work because my project files are not in res folder as is when you create new project, but this grande template has files in
HTML:
mytheme/assets/overlays/com.android.systemui/res
. I dont know if is some solution for this or jusr create another standart project with standart folder structure and there change my files and after if I am content with these changes, then put in my main gradle template. Another problem is I can only change some basic settings in theme as is color, drawable, but I cant change Layout. As I say before this doesnt work when I send to phone and get error from this, but in layout are some parts what I want change in my theme , as padding, margin, ..
Thnak you.
When I google [reverse engineer android app], I get pages like
https://www.rsaconference.com/writa...guide-to-reverse-engineering-android-apps.pdf
or
http://www.technotalkative.com/part-9-reverse-engineering-android-applications/.
They recommend downloading several tools, such as apktool, smali, java decompiler, dex2jar.
Why did they not recommend Android Studio? Can't Android Studio be used to reverse engineer or simply inspect an app's code?
----------------
UPDATE: What I want to do is to check out an app's code and see if I can make minor changes for myself (e.g. changing color of background). If "reverse-engineer" can't do this, please let me know what the right term is.
Using android studio you can create project or import projects with source codes but there is no way to extract source code if you have only .apk file. Android studio is not used for Reverse Engineering.
Unity Dev said:
Using android studio you can create project or import projects with source codes but there is no way to extract source code if you have only .apk file. Android studio is not used for Reverse Engineering.
Click to expand...
Click to collapse
thank you for your reply. Could you suggest any software to use for reverse engineering (seeing source code)?
Use apktool, it decompiles an apk and you can use any text editor (like Notepad++ or Sublime Text) to edit the files. Then you can recompile it again using apktool and then just sign it and you're done.