[Tutorial] Decompiling-Compiling-Editing APKs - Galaxy S II Themes and Apps

Hello guys. I'm creating a thread with a simple tutorial of how to decompile, compile, edit apks. I've seen some threads about it, but all of them were very complicated to understand. It's a simple tutorial, not designed to really mess with apks, just to edit a bit, like swapping icons, images, etc. When I get some more time, I will also teach how to mess with some CM9 Theme Chooser APKs
First of all, what you are going to get with this?
1. Decompile APKs
2. Decompiling all files, so you will only get XML [easy to edit], images and SMALI files [in most cases]
You need to know...
1. Works only Windows [x86 or x64] [You can try on linux, but you will need to download other files of apktool. But the steps are almost the same]
2. Choose the .bat of your version. [x86 = 32 bits] [x64= 64 bits]
3. You need JRE
4. Attached, the most updated apktool.
Let's go...
STEP 1 - preparing
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
1. I've optimized the files to run at D:\apktool [Another partition]. So, extract the .7z, and make sure that there's a apktool folder at the ROOT of D:\ drive. If you want to put this folder at other place, please pay attention: open the Run [x??].bat on the notepad. If you want the folder at the C:\ drive, delete the "D:" line, and swap the directory to the one you choose. [Example: "C:\Users\....user name....\Desktop"] Just make sure you included the cd before the path. If you want the folder at other place on D:\ drive, just change the directory [Example: "D:\Desktop"], and again, with the "cd" command before the path.
STEP 2 - still preparing...
1. Get framework-res.apk from your ROM [if you are on a Samsung ROM, also get twframework]
2. Extract framework-res.apk here
3. Open the correct .bat of your Windows version
4. Run this command: "apktool if framework-res.apk" [if you are on a Samsung ROM, also do with the other framework]
STEP 3 - now decompiling
1. Now, put the apk you want to edit on your apktool folder.
2. Run this command: "apktool d APK-NAME.apk
3. You may get NO errors when it's done.
4. The out put folder is the folder of the decompiled apk.
STEP 4 - now compiling
1. Run this command: "apktool b APK-NAME" [without the .apk]
2. You may get NO errors when it's done.
3. The output APK is located on \[apktoolfolder]\APK-NAME\dist
STEP 5 - optimizing
1. Sign your APK with this
2. Zipalign your APK with this. You can also use zipalign scripts on your ROM to zipalign.
3. Now you may install your apk normally. [user app or system app]
__________________________________________________ __________________________________________________ ___________________________________________
TIPS
1. You can edit .smali files with Notepad ++
2. You can also edit XML files on the Notepad [Windows notepad. I think that with Notepad ++ also works]
3. Soon, I'm going to teach how to edit CM9 Theme Choose APKs. You will be able to: theme non-themed apps, and replace images.
4. I tried to be the most clear and direct as possible. If something is unclear, tell me now. If you have any suggestions to make the tutorial better, please tell me...

reserved...

reserved too...

i reserved it, becouse i was trying it out, and i wanted to be one of the first post here, great tut, lika charm

android_isda_**** said:
RESERVED
Click to expand...
Click to collapse
??

Hi can you help me with this apk? http://forum.xda-developers.com/showthread.php?t=1738252

VasyleTheBest said:
Hi can you help me with this apk? http://forum.xda-developers.com/showthread.php?t=1738252
Click to expand...
Click to collapse
This is a lot harder. Can't do this for you. This isn't playstation2 with it's football games. Sorry. If you still want to try, decompile and search for images to replace.

Hi,
a question here:
I was succefull to theme system apps, but when I try to theme a normal, it never works. all the processes goes fine, but when i eant to install modified apk it gives error. and even when I copy it to /data/app/ it disappear from app drawer.(after restart of course)

sam5154 said:
Hi,
a question here:
I was succefull to theme system apps, but when I try to theme a normal, it never works. all the processes goes fine, but when i eant to install modified apk it gives error. and even when I copy it to /data/app/ it disappear from app drawer.(after restart of course)
Click to expand...
Click to collapse
I think you forgot to sign. Sign, and after you do, go back here and tell what error are you getting

i always got an error compiling systemui, can you help me?
edit:
found a solution using ics apktool here
http://forum.xda-developers.com/showthread.php?t=1558171

marcellocord said:
I think you forgot to sign. Sign, and after you do, go back here and tell what error are you getting
Click to expand...
Click to collapse
Wow, thanks it worked. But why system apps don't need to be signed?
Sent from my GT-I9100 using Tapatalk 2

First: Great Job
Second 2 Questions.
Is it not easyer to editing in .java (with dex2jar tool) then in smali?
For beginners is it not a little bit easyer to use "Apk One Click" for de- and recompile .apk (include the dex2jar Tool) ?

sam5154 said:
Wow, thanks it worked. But why system apps don't need to be signed?
Sent from my GT-I9100 using Tapatalk 2
Click to expand...
Click to collapse
They can still work.
$wissdroid said:
First: Great Job
Second 2 Questions.
Is it not easyer to editing in .java (with dex2jar tool) then in smali?
For beginners is it not a little bit easyer to use "Apk One Click" for de- and recompile .apk (include the dex2jar Tool) ?
Click to expand...
Click to collapse
Thanks. When you decompile, it will turn a lot of files into .smali files. Those smali files are very easy to modify on Notepad++. But I'm going to study more about dex2jar.

I had write before a Month or Two, A decompile Tutorial for German Users:
When you need some Pictures for your Tutorial, you Can find it: Here

thank you marcellocord
it works very well.
good job

Related

TUTORIAL - decompiling/editing XML

**This is for system apk's, not for market ones. To modify apps you've downloaded and installed, you will need a program like the fantastic Apk Manager, since non-system apps are signed and have to be resigned after getting messed with**
*MY TYPICAL DISCLAIMER!*
I AM NOT A DEV! I just like tinkering with this phone because I'm overall an extremely picky and obsessive person. I have no prior android experience (besides a little tinkering with my X10), and am in NO way an expert. But since I know how to mess with my phone a little bit and I've been asked to share, I will =) But follow these instructions at your own risk! I am not responsible for the untimely death of your phone, so please be cautious and careful, and if you have any questions about any step, before you try it, ask me or someone who knows! I don't want the blood of your dead phone on my hands! It's Christmas, after all! =)
These instructions are for Windows computers. Sorry, I'm just not familiar with mac or linux. =(
***Editing XML's***
So you want to modify something a little more complicated than just a PNG- there's something there you want gone, something too big or small, and you want to modify an XML. Here's what you need for starters:
7zip for your computer
Root explorer for your phone
apktool and apktool-install-windows for your computer from here
-Install it to your computer, as described in the link. (Just unpacking the items into c:/Windows is easiest)
Hex editor for your computer (I really like Notepad++)
For an example, I will be using the HORRIBLE yellow pages infiltration of the LG Nitro, thanks to surely some agreement between AT&T and YP. One example is the contacts list, where AT&T in its infinite wisdom has decided that the most important contact of all is the yellow pages, being the only permanent contact stuck in your list, shrinking your visible actual contacts list:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
I don't like it, and I want it gone. I've already uninstalled yellow pages, and the dead button is still there! I will edit an XML to remove it =)
1.) Copy the apk you want to modify from your phone (using root explorer) and transfer to your computer
In this case, I wanted my Contacts.apk, which is in /system/app. Keep a copy safe somewhere, just in case something goes wrong, or you want to revert back to the original apk. The vast majority of system apps are in the /system/app folder, with the major exception of framework-res.apk. This is the phone’s BIG cajone in /system/framework, and as such, should be handled with utmost care. Messing with framework-res.apk incorrectly is an EASY way to brick your phone in a heartbeat.
2.) Decompile your apk
Put the apk in C:\ (I think you can put it in other places, but just for consistency, I'll say put it there =) ). Decompile it by using apktool. You can find more details elsewhere, but to keep it as brief as possible, here's how in a nutshell (there are other ways to do this, where to put files, etc, but for consistency's sake, this is how I do it):
-run cmd.exe
-in the command window, change your directory until you get all the way to C:\ (keep typing "cd.." and hitting enter until you're there)
-in the window type the following and hit enter:
apktool d nameofapk.apk
(In this case, type "apktool d Contacts.apk")
******IF YOU GET A LONG STRING OF "Could not decode attr value..." ENDING WITH "Can't find framework for package of id: 2. You must install proper framework files, see project website for more info." (like you do when decompiling some apk's like SystemUI.apk) SKIP TO THE END FOR SPECIAL INSTRUCTIONS******
-the decompiled apk will now be extracted into a folder of the same name without the .apk extension (here, C:\Contacts)
3.) Find and edit the XML you want!
Now that it's been decompiled, the XML will be magically readable with Notepad++ (before decompiling, opening XML's with a hex editor produces gibberish. Now, you can actually read the text of it!). In this case, the XML we want to edit is here:
C:\Contacts\res\layout-finger\contacts_list_item_top_search_att.xml
In this XML, lines 14, 15 and 16 refer to that stupid bar in Contacts.apk with the yellow pages and ICE buttons. Included in lines 14, 15 and 16 are: android:layout_height="60.0dip", android:layout_height="51.0dip", and android:layout_height="51.0dip", respectively.
Change all 3 numerical values to 0.0 in all three cases, so now in lines 14, 15 and 16, it shows: android:layout_height="0.0dip", android:layout_height="0.0dip", and android:layout_height="0.0dip", instead.
Save the changes to this file and close! (You should have your original apk backed up somewhere else already!)
4.) Recompile the apk with the newly edited XML in it!
In cmd.exe (still in directory C:\), type:
apktool b nameofapkfolder
*do NOT type nameofapk.apk. Leave off the .apk extension! You're recompiling the decompiled folder, NOT the .apk! For example, here to rebuild Contacts, type
apktool b Contacts
This can take a while. It's okay if you get some "has no default translation" lines popping up. Just ignore them.
Now, in that same decompiled folder, you will have a new "build" folder. Inside are your newly recompiled files for your apk!
5.) Find the recompiled XML from the build folder and move it into a copy of the original .apk!
It will be in the same organization as it was within the .apk. For example, that XML we edited is located here:
C:\Contacts\build\apk\res\layout-finger\contacts_list_item_top_search_att.xml
If you open this recompiled XML, you'll see that it's back to being gibberish. That's because it's been successfully recompiled!
Now, find your original, unedited .apk, right click, 7zip, and open archive. Navigate to the original XML in that apk and drag and drop your newly edited/recompiled XML into that folder, letting it overwrite the original one! This is your newly edited .apk with the changes you want in your XML!
6.) Put this newly modified apk back onto your phone. Using root explorer, copy the new apk into the /system folder of your phone.
7.) CHANGE THE PERMISSIONS of the apk to match those of the original apk in /system/app.
In this case, long press on the Contacts.apk, select permissions, and select the check boxes as follows- Owner: Read, Write; Group: Read; Others: Read. This matches the permissions of Contacts.apk in /system/app
8.) Move the new apk into /system/app, and let it overwrite the original!
9.) Restart your phone!
Voila! The stupid bar is gone, and I have a little more room for my REAL contacts!
******SPECIAL INSTRUCTIONS FOR DECOMPILING ERROR******
Some apk's (like SystemUI.apk) require OTHER (framework) apk's be "installed" in order to decompile properly. To install an apk, put it in C:\, then type the following command in cmd.exe when in directory C:\:
apktool if nameofapk.apk
But which other apk needs to be installed?? The secret is that when you try to decompile your apk and it produces those errors, apktool will actually tell you (in its way) what other apk is needed! For example, decompiling SystemUI.apk results in notifications ending in this:
"Can't find framework for package of id: 2. You must install proper framework files..."
id: 2 is your key. In /system/framework, there are 3 other apk's besides framework-res.apk. These are:
RES_cappuccino.apk
RES_model.apk
RES_sui.apk
If you install framework-res.apk:
apktool if framework-res.apk
you get the following statement:
I: Framework installed to: C:\Users\User\apktool\framework\1.apk
This means that id: 1 = framework-res.apk! If you install the other 3 apk's (RES_cappuccino, model, and sui), you'll find that they are:
RES_cappuccino.apk = id: 2
RES_model.apk = id: 4
RES_sui.apk = id: 3
SO, when you try to decompile SystemUI.apk, and it says "Can't find framework for package of id: 2," it's asking that you first install RES_cappuccino.apk before decompiling SystemUI.apk! So before apktool d SystemUI.apk, type:
apktool if RES_cappuccino.apk
It will say, "Framework installed to C:\Users\User\apktool\framework\2.apk
And now, when you decompile SystemUI.apk, it will work (as will recompiling! =) )
Good luck! Godspeed! =)
This is awesome! Thank you very much.
I've successfully managed use Apk Manager 4.9 - Makes Modifying Ur Apk A Breeze (Windows/Linux) for SystemUI.apk, but it did create additional useless folders.
One question though, what about resources.arsc file?
According to apk manager that file needs to be recreated when .xml files are changed.
It seems like that's the case when you have significant changes to the xml, like deleting lines or adding code, etc. When I just change values in the xml, it doesn't seem to require rewriting resources (which I'm not super comfortable with), so until we get a recovery mode, I just try to be creative in how I edit xml's to get what I want by just changing values =)
NICE!! Great job sir!
Did you ever get rid of the headphones icon, by the way? It shouldn't be too tricky
itiskonrad said:
Did you ever get rid of the headphones icon, by the way? It shouldn't be too tricky
Click to expand...
Click to collapse
Well, kind of...I do now know how to remove it, unfortunately it will have to wait until apktool get updated to v1.4.4, because current version does not work for our resources-res.apk (we seem to have ICS formatted .apk's). I already twice soft bricked my phone trying recompile this apk
Once we get the proper tool, we might start getting some interesting mods, like more quick settings for instance.
itiskonrad, can you post the actual file for removing yp from contacts. I am on mac with no pc available at the moment.
Sure thing! Here:
Contacts - No Yellow Pages
Be sure to follow steps 6-9, though! Especially the part about changing permissions!
Great thanks. Worked great.
Sent from my LG-P930 using Tapatalk
I couldnt get the new APK Manager which is now called APK Tools to work properly. Since the original link didnt work i decided to search out the old APK Manager to give it a shot, and it worked beautifully! For those that want the old one, you can get it here:
http://www.gamefront.com/files/17870566
i used it to change my contact list to black with white text. Much nicer!
itiskonrad said:
***Editing XML's***
3.) Find and edit the XML you want!
Now that it's been decompiled, the XML will be magically readable with Notepad++ (before decompiling, opening XML's with a hex editor produces gibberish. Now, you can actually read the text of it!). In this case, the XML we want to edit is here:
C:\Contacts\res\layout-finger\contacts_list_item_top_search_att.xml
Click to expand...
Click to collapse
Hi, I have a problem, I can not correctly open the XML files from ROM. I want to edit the file primary_text_dark.xml of framework-res \ res \ I can not see it correctly. Help me please, the XML files from ROM, I can not correctly open and edit in any xml editor. What is the trick?
example
https://lh5.googleusercontent.com/-Mlx3d1--g0E/T7yNMCOcCyI/AAAAAAAAAcE/aIV-2zHN8x8/s720/fotka%2520%252014.jpg
What you are looking at is a non-decompiled xml that is unreadable. You need to first decompile the apk which carries the xml you want to edit in order for it to be readable. You first have to complete steps 1 and 2 and decompile framework-res.apk as described in the guide in order to get a readable primary_text_dark.xml.
Thank you for your advice.
Error...
Hello everyone!
Dude, thanks for the post. It is very clear!
I have a question. I did everything step by step to decompile the framework-res and edit it, but when I try to recompile it, the APK folder created inside the new folder BUILD is empty.
What can have happened?
(translation via Google Translate)
Hmm, not sure. Try decompiling and recompiling immediately after without making any changes, just to make sure the commands are working. If that doesn't work, maybe there's something wrong with the commands? For example, I know it sounds stupid, but make sure to recompile, you're typing
apktool b framework-res
NOT
apktool b framework-res.apk
Thank you Itiskonrad!
Yes, the commands are working. Decompiled and compiled again without changes, and everything went well.
I realized that change depending on what I do when this error occurs. Now I'm changing slowly and has not worked.
The strange thing is that I do not see the changes on the device. My intention is to change the entire text of the notifications in order to use a black theme in my status bar.
I made a theme based on UotKitchen and I'm improving, but notifications such as downloads and ongoing calls persist with the font color black, which makes their visibility.
I will continue testing until something works!
Big hug!
(translation via Google Translate)
itiskonrad,
Do you use an ICS leak? Could you please modify status bar apk and remove carrier from there?
Shouldn't be the final APK zipaligned?
Thanks, great

[TUTORIAL] [Sense 2.1+3.5 only] Remove recent apps from Notification bar

Many of the user has requested for removing of RECENT APPS from notification...so i am presenting here..do it Urself...i have confirmed it..it is working
===============================================================​This mod is based on file "StatusBarFlag.smali" which is found in systemui.apk file (search for it in systemui folder after decompiling it using apktool.
Modify the below line in the "StatusBarFlag.smali" file using text editor Notepad++.
Insert "const/4 v0, 0x0" between ":goto_0 and sput-booleen v0,..." The code should be like
this-->
:goto_0
const/4 v0, 0x0
sput-boolean v0, Lcom/android/systemui/statusbar/StatusBarFlag;->HTC_RECENT_APP:Z
-Systemui.apk decomilation and recompilation method:
Required softwaregoogle for the tools to get them):
- APKtool (apktool1.4.3.tar, apktool-install-windows-r04-brut1.tar)
- an enhanced text editor to edit the XML/smali files with (i use Notepad++);
- *Root Explorer or any other root explorer out there (i use ES File Explorer);
- any archive utility that can open .ZIP files (7zip, WinRAR etc.);
- Windows PC.
*Note: yes, you have to have root.
Step 1 (installing the tools):
- Download and install the latest Java Runtime Environment (APKtool needs at least ver. 1.6);
- Download "apktool-install-windows-r04-brut1.tar" and "apktool1.4.3.tar" and unzip
them into a folder of your choosing;
Step 2 (preparing to decompile):
- In order to properly decompile/compile SystemUI.apk, you need to install the framework with
APKtool;
- Open your root explorer of choice and navigate to /system/framework;
- Copy both "framework-res.apk" and "com.htc.resources.apk" to the SD card, then move them to
your PC either via cable or via a software of your choosing (i use AirDroid);
- Put both "framework-res.apk" and "com.htc.resources.apk" into the folder where you've
extracted APKtool;
- Open a command prompt (Windows button + R then type "cmd") and navigate to the folder
where you have APKtool and the framework APKs;
- Type "apktool if framework-res.apk" then "apktool if com.htc.resources.apk". Your files will be
processed and the required bits will be "installed" in "C:/Users//apktool
/framework";
- You can now delete both APKs from the folder.
Step 3 (proper decompilation):
- Copy your SystemUI.apk from "/system/app" to the folder where you've extracted APKtool;
- Open a command prompt, navigate to the APKtool folder, type "apktool d SystemUI.apk" and
wait 'till APKtool has finished. You should get no errors whatsoever and your APK should now be
decompiled into "readable format" in "/SystemUI". Edit the file StatusBarFlag.smali with the text editor of your choosing.
Step 4 (proper compilation):
- After making the desired changes in the systemui.apk, it's now time to compile it;
- Open a command prompt, navigate to the APKtool folder then type "apktool b SystemUI". Your
APK will now be compiled to "/SystemUI/dist" (again, you should get no
errors whatsoever). DON'T USE IT YET!
- Being a system app, SystemUI.apk must first be signed with the proper keys else odds are it
won't work. To do that, you need to rename the SystemUI.apk you're editing (the original one)
into SystemUI.zip, open it with an archive manager then extract META-INF and
AndroidManifest.xml to the "/SystemUI/build/apk" folder, then run the
"apktool b SystemUI" command again. Your APK will now be built with the proper keys included,
and is now fully functional. You may "pick it up" from the "/SystemUI/dist"
folder;
- You can now flash the resulting (modded) APK to your device either via ADB or via a way of
your choosing (.ZIP from recovery etc.) or just replace the old systemui.apk with modified systemui.apk using esfile manager, rootexplorer etc.
Enjoy
Thanks to
Upadhyay
Plz dont say this is not working for me....just read it carefully than do it..
Screen shot...
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
(Note:this notification bar transperancy is Moded by mee)
Its actualy sense only not sense 2.1 only as it worsk on 3.5 too.
Also confirm it works, though I had to make a flashable zip. I had previously tried to use a file manager as soon as the new apk overwrote the old I was spammed with FCs (rebooting, setting permissions, and rebooting again did nothing, the whole notification bar wouldn't load). So, if you do encounter errors, try it as a flashable zip.
lol i posted this the other day!!
elspanish88 said:
lol i posted this the other day!!
Click to expand...
Click to collapse
You actualy linked it not posted and he did say its not his invention or anything just spreading the word.
baluuu said:
You actualy linked it not posted and he did say its not his invention or anything just spreading the word.
Click to expand...
Click to collapse
thanks man...i havent said that give me credit...
baluuu said:
Its actualy sense only not sense 2.1 only as it worsk on 3.5 too.
Click to expand...
Click to collapse
if u have tried and if confirmed than tell me, i will change the title
i dont care?? im not saying he has stolen my post :/ its freely available on the net
elspanish88 said:
i dont care?? im not saying he has stolen my post :/ its freely available on the net
Click to expand...
Click to collapse
Plz give him credit officialy on xda
Lol(stolen post)
Sent from my HTC Wildfire S A510e using xda app-developers app
smartboy0668 said:
if u have tried and if confirmed than tell me, i will change the title
Click to expand...
Click to collapse
Yep tried and confirmed here
that's really worth trying, thanks for putting all of this in one place, what about removing the operator name with that "clear" button ? any clue ?
Sent from my HTC Wildfire S A510e using xda app-developers app
Thanks for this!
damnit I cant get this to work -__-
danielstar13 said:
damnit I cant get this to work -__-
Click to expand...
Click to collapse
Try it with each step carefully read...it happened with mee too...just check you have installed your apktool properly ...
Sent from my HTC Wildfire S A510e using xda app-developers app
so do I have to install apktool too? i thought you just extract that..
danielstar13 said:
so do I have to install apktool too? i thought you just extract that..
Click to expand...
Click to collapse
Try to search tutorial for apktool on xda...
Sent from my HTC Wildfire S A510e using xda app-developers app
I dont get the dist folder when compiling.. what is wrong?
danielstar13 said:
I dont get the dist folder when compiling.. what is wrong?
Click to expand...
Click to collapse
that happened to me, make sure you install JDK (Java Development Kit)...that solved the problem for me....
Sent from my HTC Wildfire S A510e using xda app-developers app
Can't Find "StatusBarFlag.smali" on SystemUI Folder
Hi,
I've installed all necessary tools on my PC.
I don't find this file on any of the SystemUI folder after decompiled.
Take a look at this image of the Folders List.
How to accomplish this...?

[HOW TO] Theme ALL keyboards without FCs! [A guide for beginners]

Theming a keyboard may be common knowledge to some of the amazing Devs here. But to a noob like me, it took some research and time to get it working without breaking the original signature (That's the trick!). I searched the forum and it doesn't look like anyone has posted a "How To" on theming a keyboard, so I thought I'd share my experience with you all.
**Some of these steps may seem elementary, but I tried to explain everything in layman's terms so even a beginner can theme a keyboard.
// Before you get started:
You must have a working environment setup. Check out QBKing77's awesome video "How to install the android-sdk" to get that going.http://forum.xda-developers.com/showthread.php?t=1614922
Make sure you also have installed:
Notepad++ (for editing xml) // (www.notepad-plus-plus.org)
7zip (for extracting apks) // (www.7-zip.org)
the image editor of your choice. I use Paint.Net(www.getpaint.net), and Gimp(www.gimp.org). Both FREE!
apktool (http://forum.xda-developers.com/showthread.php?t=1755243)
LatinImeDictionaryPack.apk (drop in the 'system\app' folder on your phone. Only for the LatinIME.apk) Grab it here: http://d-h.st/Ebb
// This method has worked with every keyboard that I have encountered so far. I will use 'LatinIME.apk' for reference, as that is the stock ICS keyboard. //
WARNING.. DO NOT POST DISTRIBUTION LINKS TO ANY MODDED 'Swype.apk'. XDA HAS A STANDING ORDER FROM NUANCE (MAKERS OF SWYPE), THAT DOES NOT ALLOW SUCH LINKS TO BE POSTED.
1) To start make sure you have a working copy of your keyboard apk; grab it out of a ROM, download it, or use a file manager with root access (like Root Explorer) to copy it to your SD card then to your computer.
**I would suggest dropping the keyboard apk into a folder on the desktop, seperate from anything else, and making a backup of the original so that you have a spare copy.
2) Using 7zip extract the 'res\drawable-xhdpi' folder into the folder you created. This folder will contain the pngs that control some of the keys, outlined in red on this pic:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Color these pngs to match using your favorite editor and save (bucket fill with Paint.Net is a breeze!)
3) Now that your pngs are themed.. Within the folder that you created containing your apk, hold down shift and right click. Select "Open Command Window Here" to fire up command prompt.
4) Next to decompile the keyboard apk with apktool (again using 'LatinIME.apk' for reference, but the apk may be of a different name; SamsungIME.apk, HTC_IME.apk, etc.).
Type this command:
Code:
apktool d LatinIME.apk
When it's done, you will see a folder with the apk name appear, within the folder you created. Click into it and you should see at minimun a 'res' folder and a 'smali' folder.
5) Navigate to 'res\values' folder. Depending on the keyboard you are working on, the xml controlling the remaining key colors will be contained in the 'colors.xml' or 'styles.xml' file. Open with Notepad++, and change the color codes as needed. Save and close.
6) Go back to the root of the folder containing your apk, and fire up command prompt (if it's not still open). Now it's time to build using this command (again using 'LatinIME.apk' for reference, but the apk may be of a different name; SamsungIME.apk, HTC_IME.apk, etc.)
Code:
apktool b LatinIME
7) When it's done building, you should have 4 folders minimum now (res, smali, build, dist) and it's time for the key to success. Navigate into the 'dist' folder and you will see the "Built" apk. Open it with 7zip, and extract the 'resources.arsc' file to your folder. Close 7zip.
8) Now it's time to pull it all together. Navigate back to the ORIGINAL keyboard apk, and open with 7zip.
Copy (you can drag and drop with 7zip) the 'resources.arsc' that you extracted from your "Built" apk, into the "ORIGINAL" apk overwriting the file. Then with 7zip still open and the apk loaded, navigate (within 7zip) into the 'res\drawable-xhdpi' folder where you should see the list of unthemed pngs. Simply drop your edited pngs into this folder. Close 7zip and you're done here!
9) Finally, take your "ORIGINAL" but themed apk, and push it back the 'system\app' folder on your phone.
Fix permissions to 'rw-r--r--' (only check everything under 'read' and Owner under 'write')
Reboot, and bask in the glory of your new themed keyboard!
**Alternatively, grab my empty zip installer here: http://d-h.st/oKG to flash in recovery. You must drop your themed apk into the system\app folder of the zip and save. Also, the zip already contains the 'LatinImeDictionaryPack.apk'
Please hit THANKS if I helped!! And please keep this thread alive!
Nice,
Now, we need a simple guide on how to theme Jelly Bean...all of it ... (tapping foot patiently)
Thanks!
Naddict said:
Nice,
Now, we need a simple guide on how to theme Jelly Bean...all of it ... (tapping foot patiently)
Thanks!
Click to expand...
Click to collapse
Themed the same just new xml and some new images. I got everything to decompile and recompile, just some of the xml's have changed.
---------- Post added at 09:41 PM ---------- Previous post was at 09:39 PM ----------
Thanks rompnit. I can there a whole Rom but always have issues with the keyboard. I'll try this tomorrow night.
Sorry i'm a nub but does the apktool jar file have to be in the same folder as android-sdk?
shehroze3 said:
Sorry i'm a nub but does the apktool jar file have to be in the same folder as android-sdk?
Click to expand...
Click to collapse
I actually created a folder 'C:\apktool' where I dropped everything, then added that folder to the Path system variable; same method as you would add the SDK. Otherwise, drop it into the 'platform-tools' folder within the android-sdk. When configured properly, you should be able to open command prompt in any directory, simply type 'apktool' and see a list of commands.
rompnit said:
I actually created a folder 'C:\apktool' where I dropped everything, then added that folder to the Path system variable; same method as you would add the SDK. Otherwise, drop it into the 'platform-tools' folder within the android-sdk. When configured properly, you should be able to open command prompt in any directory, simply type 'apktool' and see a list of commands.
Click to expand...
Click to collapse
ok i did what u said and put the apktool jar file into the platform-tool folder, but when i type apktool in cmd prompt nothing happens.
shehroze3 said:
ok i did what u said and put the apktool jar file into the platform-tool folder, but when i type apktool in cmd prompt nothing happens.
Click to expand...
Click to collapse
Did you also grab the "wrapper" script from the link as well? It contains a few more necessary files that go with apktool.
Sent from my SPH-L710 using xda app-developers app
time for dazed and rompnit to collaborate. maybe a simple guide for us wannabees...
recompiling never works for me, I read somewhere about empty folders being my problem...oh well, I can use 7zip though! and notepad+...
rompnit said:
Did you also grab the "wrapper" script from the link as well? It contains a few more necessary files that go with apktool.
Sent from my SPH-L710 using xda app-developers app
Click to expand...
Click to collapse
I'll check it out when I get home. Thanks
Sent from my SPH-L710 using xda premium
ok i got it to work. All i had to do was rename apktool_1.5.0 to apktool. I'm a noob, i know, try not to laugh to hard lmao
shehroze3 said:
ok i got it to work. All i had to do was rename apktool_1.5.0 to apktool. I'm a noob, i know, try not to laugh to hard lmao
Click to expand...
Click to collapse
Glad you got it to work!! And everyone has to start somewhere! Let me know how it turns out for ya!!
Sent from my SPH-L710 using xda app-developers app
Does this method work for both Odex and De-Odex ROMs??? I am currently on an Odex rom. Thanks!!
taihard said:
Does this method work for both Odex and De-Odex ROMs??? I am currently on an Odex rom. Thanks!!
Click to expand...
Click to collapse
This method will not work on .odex keyboard apk's, at least to my knowledge but I've always run deodexed ROMS. However, check to see if the keyboard apk you are working with even contains an odex file; a lot of them do not. If it does, you could always grab the apk off the web, mod it, and install it after removing the original files.
Thank you for the walk through, this is awesome
Hey Rompnit. Ok, I was having trouble getting apktool to run on my computer. That's what I was talking about on morphology anyway, so I was trying to learn how to theme an app and somehow was lead to morphology and got all caught up over there. Lol. But ya, I'm gonna have to crap clean my laptop to use this. Thanks. See ya over there
Sent from my Insanely Morphed S3 LI3 ktoonsez747 (196-2106) TW FreeGs3 2.0.0
rompnit said:
This method will not work on .odex keyboard apk's, at least to my knowledge but I've always run deodexed ROMS. However, check to see if the keyboard apk you are working with even contains an odex file; a lot of them do not. If it does, you could always grab the apk off the web, mod it, and install it after removing the original files.
Click to expand...
Click to collapse
This method WILL in fact work on odexed keyboards. Theming for an odex base is no different then a de-odexed base. You are not making any smali adjustments here so nothing that concerns the odex, thus it will not be affected.
Sent from my SPH-L710 using xda app-developers app
Guess no one was interested in theming an odexed keyboard after all huh? ....
Sent from my SPH-L710 using xda app-developers app
gruesomewolf said:
Guess no one was interested in theming an odexed keyboard after all huh? ....
Sent from my SPH-L710 using xda app-developers app
Click to expand...
Click to collapse
Guess not.. This thread's been quiet for a while... I guess people just don't want to theme keyboards in general!
Hey do you know if this process will work with keyboards from the market like SwiftKey 3? The themeson there are so boring need new colors lol
rompnit said:
Guess not.. This thread's been quiet for a while... I guess people just don't want to theme keyboards in general!
Click to expand...
Click to collapse
Guess that's what we get for trying to help. ... lol

[PC-APP] GalaxyS3 Mod Tool

I made this tool originally for SonyEricsson Xperia X10, but have now modified it to work for our Samsung Galaxy S3. I hope it will make life a little easier when modifying files on the device. It uses ADB to pull and push files, change file permissions and much more - so users don't need to remember long command prompt/terminal emulator commands! It also has a nifty little application manager, which allows for quick installation, backup, and removal of both pre and self -installed software. It has a LogCat function to read and save logs on the go when investigating errors, as well as functionality to decompile/recompile APK, JAR and ODEX files, sign and zipalign APKs, and decompile System images. ADB Shell will be released in v0.6.2.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Instructions:
1. Extract archive.
2. Install LinuxReader to GalaxyS3ModTool\tools\LinuxReader.*
3. Run GalaxyS3ModTool.jar
*This step is only needed for the Decompile System function in the ROM Manager.
Note: Make sure your phone is connected in debug mode, you have root privileges, and unsecured your device's shell. The application will try to unsecure your shell if you haven't already, but worst case scenario you might have to do this manually.
Also, the manage ROMs functionality is still experimental, and the Recompile System function is disabled. If you know how these processes can be automated, let me know and I will incorporate the functionality.
If you have problems, let me know and I will try to sort them out with you. Keep in mind that often when a modification goes wrong, you can simply push back the original files and reboot. So keep backups handy!
Reserved in case of future expansions.
Reserved in case of future expansions.
Thank you!
I'll finally be able to modify the ODEX files :victory:
Is it possible to recompile an ODEX file to .odex (not .jar)?
Great tool
Thanks!!!
Great tool. Looks very promising
Sent from my GT-I9300 using Tapatalk 2
Saleen NS said:
Thank you!
I'll finally be able to modify the ODEX files :victory:
Is it possible to recompile an ODEX file to .odex (not .jar)?
Click to expand...
Click to collapse
Yes modifying ODEX:ed filesystems has become a breeze Just remember to remove the original *.ODEX file from your system if you incorporate it into its associated APK or JAR.
As ODEX is a device-specific format, compiled to be most effective on specific hardware, recompiling with baksmali to *.DEX and renaming to *.ODEX is not enough. I don't know of any way to recompile to proper *.ODEX, but I mean it has to be possible, and if anyone knows how - please drop a line here or PM me. However the rule of thumb is to not decompile and incorporate the *.ODEX unless smali-code is being edited. This will allow you to keep the efficiency of the original *.ODEX file, and just replace the APK or JAR - i.e. having no negative effect on performance.
EDIT: Realized there is a way to recompile to *.ODEX on the device via the dexopt binary. Working on implementing the functionality.
Thanks for your work!
Warren87 said:
Thanks for your work!
Click to expand...
Click to collapse
shahed26 said:
Great tool. Looks very promising
Sent from my GT-I9300 using Tapatalk 2
Click to expand...
Click to collapse
SETdown said:
Great tool
Thanks!!!
Click to expand...
Click to collapse
Great to hear you guys like it!
I've got version 0.6.1 in testing now, with proper ODEX recompilation functionality incorporated. Will upload it soon.
Unable to run d App!
I downloaded d files & followed above instructions...but clicking on GalaxyS3ModTool.jar opens the archive! What am i doing wrong?
Very promising tool! I will test in weekend and give a feedback!:good:
Mr.Mefisto said:
Very promising tool! I will test in weekend and give a feedback!:good:
Click to expand...
Click to collapse
Good stuff! Looking forward to that.
harryS2 said:
I downloaded d files & followed above instructions...but clicking on GalaxyS3ModTool.jar opens the archive! What am i doing wrong?
Click to expand...
Click to collapse
Do you have Java installed?
harryS2 said:
I downloaded d files & followed above instructions...but clicking on GalaxyS3ModTool.jar opens the archive! What am i doing wrong?
Click to expand...
Click to collapse
Java must be installed on your PC and .jar files associated with java.
Sent from my GT-I9300 using xda premium
Thnx this is what i need.
Works great.
Version 0.6.1 is now uploaded in first post!
Updates:
I have implemented proper ODEX recompilation functionality. However, it requires the device to be connected as the operation has to be performed from within the system and then pulled back out. The tool will let you know when to connect your phone. For the process to be possible, a wrapper for the binary dexopt needs to be pushed to /system/bin - so this is also done programatically.
Some user prompts have been added to make human mistakes less likely. For example if you say you want to decompile an associated ODEX file, you must also specify the framework directory - or nothing will happen.
A fancy automagic script has been added for JAR-decompilation. It turns out since the dex-optimizing of ROMs, some JAR-files don't include a classes.dex file anymore, which makes baksmali.jar cough up errors. But recompiling the ODEX file as classes.dex and inserting it into the JAR makes it decompile properly - so this is what the script has automated when it recognizes the situation.
I have actually rewritten most of the decompilation/recompilation code to execute more efficiently. When time flies and inspiration runs amok, this sadly results in djungle-code. So I had to clear everything up into reusable functions so that nothing is repeated or unnecessary slow.
Happy modding folks!
ADB Shell has been implemented in the coming version. Screenshots updated in first post.
Wow, what a quite bunch
Version 0.6.2 is uploaded in first post.
Changelog:
ADB Shell functionality implemented
Some bug fixes
Fantastic work!
If anyone notices this tool working on another device - please post the device name here with any related problems. I'm looking into extending the device support for this tool.
This tool is very convenient .. I used it for the nexus 7 with firmware 4.1.2
too bad that does not work with 4.2, we look forward to updates
still great

[HOW-TO] Change framework background

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
WOAH!!!YOUR A MIND READER:highfive:
Zpik said:
WOAH!!!YOUR A MIND READER:highfive:
Click to expand...
Click to collapse
XD
enricocid said:
XD
Click to expand...
Click to collapse
So throughout the whole rom, this background will show?
Zpik said:
So throughout the whole rom, this background will show?
Click to expand...
Click to collapse
Yes. Only dialer remain untouched
would be nice if there were an xposed framework installer for this.
EDIT: Google search ftw.
http://forum.xda-developers.com/showthread.php?t=2342570
I'm not seeing a file named values in my framework-res apk. I'm not sure if this matters, but I used a file Explorer and extracted the apk on my phone. I use my phone to make zipthemer mods, so I figured this method would work for that too. Any reason it wouldn't show up?
Sent from my Galaxy Nexus using Tapatalk
NeverSeparate said:
I'm not seeing a file named values in my framework-res apk. I'm not sure if this matters, but I used a file Explorer and extracted the apk on my phone. I use my phone to make zipthemer mods, so I figured this method would work for that too. Any reason it wouldn't show up?
Sent from my Galaxy Nexus using Tapatalk
Click to expand...
Click to collapse
No no... You should decompile using apktool this is the only say to add trasparent background, modifying the .xml
enricocid said:
No no... You should decompile using apktool this is the only say to add trasparent background, modifying the .xml
Click to expand...
Click to collapse
This is what I got when extracting the apk. I can open and modify the xml files on my phone, but there isn't a folder named values. Are you certain the folder isn't specific to certain devices or roms? I'm on carbon at the moment on a GNex.
Sent from my Galaxy Nexus using Tapatalk
NeverSeparate said:
This is what I got when extracting the apk. I can open and modify the xml files on my phone, but there isn't a folder named values. Are you certain the folder isn't specific to certain devices or roms? I'm on carbon at the moment on a GNex.
Sent from my Galaxy Nexus using Tapatalk
Click to expand...
Click to collapse
You have to actually decompile framework res apk, take apart all the pieces instead of just extracting the apk. Decompiling and extracting are not the same thing
Link for apktool http://forum.xda-developers.com/showthread.php?t=2213985
NeverSeparate said:
This is what I got when extracting the apk. I can open and modify the xml files on my phone, but there isn't a folder named values. Are you certain the folder isn't specific to certain devices or roms? I'm on carbon at the moment on a GNex.
Sent from my Galaxy Nexus using Tapatalk
Click to expand...
Click to collapse
No... the problem is that You can't modify .apk using the phone....
This is because You can't decode an .apk with a file manager ... and You can't modify .xml if You don't decode it using apktool
If You don't use apktool You won't be able to exctract & decode the .apk
This folder must be in framework-res.apk and all .apk
Try use apktool to properly decompile it and You will be able to see all resources from .apk
If You try to exctract an .apk with a zip manager and You open an .xml, You won't see anything... only unreadable simbols
https://code.google.com/p/android-apktool/downloads/detail?name=apktool1.5.2.tar.bz2&can=2&q=
https://android-apktool.googlecode.com/files/apktool-install-windows-r05-ibot.tar.bz2
extract aapt.exe, apktool.bat and apktool.jar to a folder You will call apktool and that You will create in C:/:
C:\apktool
copy the framework-res.apk inside this folder
Press shift+leftmouse and click to "open command prompt here"
In cmd do the following
1) Install the framework-res.apk
Code:
apktool if framework-res.apk
2) Decompile framework-res.apk
Code:
apktool d framework-res.apk
3) Modify the .xml using notepad++
4) Recompile back
Code:
apktool b framework-res
5) Once done
Delete the compiled .apk in dist folder inside the framework-res folder you will find in apktool folder
open original framework-res.apk 7zip
Go to build folder
then open apk folder
Drag & drop folder META-INF & androidmanifest overwriting the original
6) Go again in CMD terminal and
Code:
apktool b framework-res
The compiled framework-res.apk is the good one
You can use the same steps I used in this guide to properly decompile/compile the framework-res.apk
http://forum.xda-developers.com/showthread.php?p=44997467#post44997467
Thanks. And I wasn't trying to argue. I know there is a difference on decompiling and extracting. And I know I can't modify the apk directly from my phone, but I use my method of extracting to locate png piles to make zipthemer zips, and it works fine for that. I wasn't looking to modify an apk. I was just going to attempt to make a zip with an edited xml and see if it would overwrite the existing one the same as it does with pngs. And I can open and edit xml using an xml app. But, if the extraction technique won't show me the file, then it doesn't matter. I'm just trying to learn a bit myself.
I was hoping to make a way that people could use the framework mods I've made without having to be in dark mode. Many of the people using mods off these threads wouldn't consider taking the time to learn any of this, they just want to use what's made. So a simple flashable zip that included an edited xml would be great. But if it won't work, it won't work.
Sent from my Galaxy Nexus using Tapatalk
NeverSeparate said:
Thanks. And I wasn't trying to argue. I know there is a difference on decompiling and extracting. And I know I can't modify the apk directly from my phone, but I use my method of extracting to locate png piles to make zipthemer zips, and it works fine for that. I wasn't looking to modify an apk. I was just going to attempt to make a zip with an edited xml and see if it would overwrite the existing one the same as it does with pngs. And I can open and edit xml using an xml app. But, if the extraction technique won't show me the file, then it doesn't matter. I'm just trying to learn a bit myself.
I was hoping to make a way that people could use the framework mods I've made without having to be in dark mode. Many of the people using mods off these threads wouldn't consider taking the time to learn any of this, they just want to use what's made. So a simple flashable zip that included an edited xml would be great. But if it won't work, it won't work.
Sent from my Galaxy Nexus using Tapatalk
Click to expand...
Click to collapse
You can try to make vrthemes
I already resolved my problem in Step 1 by editing the "Environment Variables".
Step 4
I'm stuck with step 4 ( recompiling ):
there's no "META-INF" folder under build/apk folder
Question: after I overwritten the "META-INF & androidmanifest" from the original framework-res.apk (C:\apktool\framework-res.apk)
and recompiled it using "apktool b framework-res", how can I flashed the compiled framework-res.apk w/c is located at
(C:\apktool\framework-res\dist) to system/framework? many thanks to this one, new learning
genkralyz said:
I'm stuck with step 4 ( recompiling ):
there's no "META-INF" folder under build/apk folder
Question: after I overwritten the "META-INF & androidmanifest" from the original framework-res.apk (C:\apktool\framework-res.apk)
and recompiled it using "apktool b framework-res", how can I flashed the compiled framework-res.apk w/c is located at
(C:\apktool\framework-res\dist) to system/framework? many thanks to this one, new learning
Click to expand...
Click to collapse
I will prepare You, as soon as possible, a template to flash it
enricocid said:
I will prepare You, as soon as possible, a template to flash it
Click to expand...
Click to collapse
Thanks! btw is it ok if I only overwrite the original "androidmanifest" because there's no "META-INF" under build/apk,
or there should be a "META-INF"?
genkralyz said:
Thanks! btw is it ok if I only overwrite the original "androidmanifest" because there's no "META-INF" under build/apk,
or there should be a "META-INF"?
Click to expand...
Click to collapse
You must copy also the meta-inf
enricocid said:
You must copy also the meta-inf
Click to expand...
Click to collapse
but when I tried to re-compiled, there's no META-INF showing up under build/apk folder as you can see from my screenshot..
did I missed some steps?
genkralyz said:
but when I tried to re-compiled, there's no META-INF showing up under build/apk folder as you can see from my screenshot..
did I missed some steps?
Click to expand...
Click to collapse
After first compilation Meta-inf is missing... it's normal don't worry
but without a meta-inf Your .apk wouldn't work
So you must delete the first compiled apk from dist folder, copy meta-inf and androidmanifest from the original .apk to build/apk folder and recompile 2nd time to get the framework correctly working
You can use this mod to flash the framework
http://d-h.st/0lL
there's already a framework-res inside it... delete it using 7zip and replace with Your framework and flash it

Categories

Resources