Download the tool to the root of 'c:\' from the link at the bottom of this post and run it. This is a self-extracting archive which, once it's extracted everything, will put on your PC a new folder called "Tickle My Android". This is where the tool runs from.
The "_WorkArea1", "_WorkArea2", "_WorkArea3" folders we'll talk about later.
The "tool_files" folder contains various files Tickle My Android needs to run. Don't touch these!
The "user_files" folder will hold your icons backups, boot animations and fonts. In here are your log files as well, you might need those later.
And the "Tickle My Android" shortcut starts the tool. Click on that and away we go!
How To Decompile An Application
The very first thing you need to do is backup your device. If you don't know how to do this, it's worth finding out first before going any further. Tickle My Android lets you change the very workings of your device and if you don't know what you're doing, it's possible to get things wrong. If you haven't made a backup, you could lose everything.. And that would be bad.
Next, you need to install your resource apks.
No idea what this means? Files with the '.apk' extension are the actual Android app's and some apks contain information that TMA will need before it can decompile any others.
First pick your WorkArea.
This is new to Tickle My Android. You can now work on up to three different rom's or devices without having to reset the tool everytime you want to change from one to the other.
Each WorkArea is completely separate from the others and you can easily change which one you're using in the Settings Menu.
Inside each WorkArea are four folders. The '_deodex' folder is used for deodexing files (this is covered in the next few posts), the '_in' folder is where files about to be decompiled go, the '_working' folder contains the results of that decompiling and the '_out' folder contains the recompiled files.
For now though, you can actually ignore all this. When you first use TMA, you'll be in WorkArea 1 by default and we'll cover the other folders later.
So, to begin decompiling your application, go to the Theming Menu.
Next select the Pull Menu.
This gives you the option of pulling (copying from your Android device to the PC) one of the most commonly modified system files, or any other file you wish.
Pull and install 'framework-res.apk'. This is the most common resource apk. Depending on your device or rom, you may need to install others as well. You'll normally find these in your framework folder with "resources" or "res" in the filename, and I've listed the most common ones.
If in doubt, use the 'ADB Shell' option in the Title Menu and enter the command 'ls system/framework' to see what files you actually have in the framework folder.
IF YOU DON'T INSTALL ANY RESOURCE APKS, YOU WILL HAVE PROBLEMS LATER!!
Once you've installed the relevant resource apks, you'll need to decompile some apks. Which ones? Well, that's the tricky bit as it all depends on what sort of mod you want to do. If you're on Gingerbread (Android 2.3) or higher, the chances are you'll need to pull and decompile SystemUI.apk.
Once a file has been decompiled, have a look in the "_WorkArea1\_working" folder. You'll see a folder with the same name as that file, this contains all the various files (images, xml, smali, etc) that the file you pulled actually consists of. Now you can make all the changes you desire.
How To Recompile An Application
Once you've finished changing things, go back to the Theming Menu and select the Recompile Files option and put everything in that folder back into a single file.
You'll have the option to recompile with the original signature, new signature or no signature. For most mods you'll want to use the original signature.
Only use a new signature if you've changed the Android manifest. If you have no idea what that means, don't worry about it and just use the original signature.
This recompiled file will now be in the "_WorkArea1\_out" folder. From there you can push it back to the device.
How To Put A Recompiled Application Back On Your Device
This is where your recovery comes in. Select the Create Flashable Zip File option to create a flashable zip. There are two types available:
The 'Advanced Zip' and 'Advanced Zip [Android 4.1+' use the Universal Flashing Tool by JRsoft and Intronauta. This is an absolutely incredible tool and full credit goes to them.
These zips can do a lot of clever things but the bit that I like most is that they create a flashable backup of every file you've changed.
Don't like what you've changed? Just flash the backup!
However, the advanced zips don't work with all versions and ports of every recovery program. If you find yourself faced with an error message saying that "we need at least one sdcard mounted", the advanced zips aren't compatible with your recovery. That's where the 'Standard Zip' comes in. This doesn't generate a backup, it's just an ordinary flashable zip file.
Just select the option to use files from the "_out" folder. If you've recompiled 'framework-res.apk', put it into 'system/framework'. If you've recompiled 'SystemUI.apk', put it into 'system/app'. Any other files, make sure you took note of where they were pulled from.
Well..it's supposed to be. But if you're having trouble, here is an awesome video by Tomsgt123 on Youtube, showing you what to do.
It's for v5, but the general principles will apply to the later versions as well. Check it out!
What is Tickle My Android compatible with?
Tickle My Android's decompiler function always uses the very latest apktool files, as well as the very best aapt files, available. But, because Android is an open-source OS, there will always be some implementations of it that TMA will not be fully compatible with. Here are the current offenders that we know about:
MIUI apk files are often constructed in a different way to the Google standard..and MIUI aren't sharing how they're made.
Which means apktool might struggle to decompile those apk files.
Apktool also struggles to decompile files from HTC Sense v4.0+ for exactly the same reason.
And apktool has trouble with Huawei's apks as well.
LG are another company that have done some strange things while making their files, although the developer of apktool has managed to bypass most of the problems that they cause. Not all of them though.
Always make sure you're using the most recent version of apktool and let me know if there are any problems.
It is very frustrating that some companies take an open-source OS and use it to make a closed-source rom. Especially in the case of MIUI, which is a rom that can only be used by people who've hacked their phone.
If you can't decompile an apk and all you want to do is change some of the icons, you now have the option to 'Unzip Image Files'. This will take just the image files from an apk and put them into the '_working' folder.
Be aware that this option is for experienced themers only.
There will be some devices/roms that are unable to use the zip files TMA creates and you'll be given an 'error code:0'. This is down to the update-binary and can be easily fixed.
Take the update-binary from a working zip file and place it in the 'user_files\UPDATEBINARY' folder. Use the option in the settings menu and all future zips will use your update-binary. Easy!
What happens if it goes wrong?
Tickle My Android has been designed to be easy to use but the very nature of Android means that things might not always go smoothly.
Version 9.1.1 - Improved logging, de/recompiling error reporting, fixed deodexing, new icons
Version 9.1 - Multiple bug fixes and code improvements, new icons, lockring icons added, improved logging, option to install all files, Work Areas created, tool icon changes
Version 9.0 - Introduced mouse control option, new icons, pattern lock icons added, code improvements
Version 8.1 - Introduced option to change apktool version, minor code tweaks, new battery icon
Version 8.0 - Complete rewrite of code making it faster and more efficient, new icons, improved zip file options, improved deodexing, option to unzip icons only from an apk, Android 4.4 (KitKat) compatibility, updated apktool to version 2.0.0b7 ensuring maximum compatibility with as many versions of Android as possible
Version 7.1 - Improved file preparing, additional icons, option added to set zip name, bugfixes
Version 7.0 - Multiple code changes, improved error checking, improved logging, updated presets, added option to set favourites
Version 6.1 - Enhanced zip menu, code improvements, new icons
Version 6.0 - Tool redesign, added softkeys to icon changing
Version 5.4 - Improved compatibility with modern devices, added French language option
Version 5.3 - Improved preparing process, added Portuguese option
Version 5.2 - Process tweaks
Version 5.1 - New apktool, bug fixes, improved file preparing algorithm
Version 5.0 Beta 04 - Code improvements
Version 5.0 Beta 03 - Bug fixes, new toggle icons, theming log
Version 5.0 Beta 02 - Latest apktool with Android 4.2 compatibility
Version 5.0 Beta 01 - Latest apktool, customised appt, significant UI changes, added toggles and emoticons to icon changing, removed pushing to phone, re-added statusbar transparency, added the Mini Menu, added option for changing the tool language (languages to follow)
Version 4.3 - Added apktool 1.5.0, minor bug fix
Version 4.2 - Added apktool 1.4.10, added option to make log files when decompiling or recompiling
Version 4.1 - Bug fixes, UI tweaks, added option to change boot animation size, major improvement to preparing file speed, increased Android compatibility, moved version number to credits screen
Version 4.0 - Added ZIP maker, UI and code changes to improve user friendliness, 2 new battery icons, added option to use own battery icons, latest apktool and aapt ensuring compatibility with nearly all Android devices, updated deodexing for ICS and JB, expanded quick file select, improved installation of resource files, better error handling
Version 3.0 - Added deodexing option, signal and wifi icon changing, code tweaks, UI overhaul, more battery icons
Version 2.2 - Improved battery icon adding, improved framework adding, improved error handling, UI changes, small code tweaks
Version 2.1 - Improved de- and recompiling of files, fixed "Enter 'x' To Cancel" bug, other slight tweaks
Yes, Tickle My Android is an absolutely incredible de/recompiler but did you know that you can also use it to change the icons on your phone or tablet?
TMA can change your battery icons, WiFi icons, signal icons, toggle icons, softkey icons, pattern lock icons and even your emoticons!!
And it's so incredibly easy..
This is how to change your battery icons (the process is very similar for the other icons):
First, start the tool and select the Theming Menu option
Then the Pull Files From Device option
Now pull, backup, decompile and install the relevant files
This is the tricky bit, to be honest. In most roms and Android versions, battery icons are stored in framework-res.apk and/or SystemUI.apk. But you may need to install certain resource files before you can decompile those.
If you're on a Sense(HTC)-based rom, you might need to decompile and install com.htc.resources.apk.
If you're on Touchwiz(Samsung), it could be that you need twframework-res.apk.
If it's LG, then it might be lge-res.apk.
It it's Motorola, then moto-res.apk and/or blur-res.apk.
If it's Sony, it could SemcGenericUxpRes.apk.
If you're on MIUI, maybe it's framework-miui.res.apk. Or it could be something else. Search your system/framework folder and make sure you pull and install every apk with "res" in the title.
Now, after all that, go back to the Theming Menu and choose the Change Battery Icons option.
As of right now, TMA comes with 77 different battery icons to choose from.
That's a lot.
That's so many in fact that I can't show them all in one post so, to help you choose between them, you'll find small previews of each one in the 'user_files\ICONS\BATTERY\_previews' folder.
The icons are fairly varied..
...so have a look and pick which one you like best
Or why not use your own? Tickle My Android can support up to 100 different icons in each category so you can easily add more. Just create a folder in the 'user_files\ICONS\BATTERY\' folder and fill it with your images and xml.
Please note, it is your responsibilty to make sure any images and xml you use will work. If your battery icon currently changes every 10% and you add enough images for a 1% icon, it will still change at every 10% unless you add some new xml files as well.
When you're done, run the tool and TMA will automatically add your icons to the ones you can choose from.
If you're really proud of your creation and you'll like it to be added to the icons that TMA comes with, just let me know!
Once you know which icon to use, select it and Tickle My Android will work out where it needs to put the relevant files and gets to work.
This is set up to cope with icons that change every 1%, 5%, 10%, whatever% so you don't need to worry about that. Please note that every battery icon will work on every device, but some may look better on higher resolutions.
Once the icons and animations have been added, go back to the Theming Menu and choose the Recompile Files option. You only need to recompile the files that Tickle My Android said it was adding battery files to.
Make sure you choose to recompile with the original signature. Otherwise your apk might not work!
Now go back to the Theming Menu and select the Create Flashable Zip File option to...create a flashable zip file.
You can create an 'advanced' zip or a 'standard' zip.
'Advanced' zips create a flashable backup on your sdcard which is very handy if you don't like the new icons you've come up with. These don't work on every recovery though so you might need to use the 'Standard' option instead.
If you've changed the battery files in 'framework-res.apk', or any other of your resource apps, you'll need to put that app into the 'system/framework' folder.
If you've changed the battery files in 'SystemUI.apk', that app needs to go into the 'system/app' folder
Zip files are created in the 'c:\temp' folder by default, but you can change that to whatever you wish.
Copy the zip over to your device (if TMA didn't put it there directly) and reboot into recovery
Flash the zip
Wait a little while for it to load the new info
The device reboots and...there's your shiny new battery icon!
And that's about it. If you don't like the icon, you can try another by repeating the above steps. Or you can make a flashable zip with your backed-up apk files to get back to normal.
Changing WiFi Icons, Signal Icons, Notification Toggles, Emoticons, Softkeys And Pattern-Lock Icons
You can also use the same process to change other icons on your device. There are a few slight differences but it's still the same idea.
All the icons can be found in the 'user_files\ICONS' folder. Some are designed to match certain battery icons, some are a little..odd, but all should work with your phone or tablet.
It's worth mentioning that different roms use icons in different ways. It's possible that the icons you've selected won't work quite the way you'd want. That's why it's so handy having a backup!
Try them out, see which one works for you and let me know how it goes!
As well as decompiling and recompiling apks and changing icons, Tickle My Android can also deodex your rom for you. Let me show you how.
Now, this gets a little long-winded, but follow the instructions and you'll be fine.
Some Android rom's have been 'odexed'. What this means is that some of the system apps have been split in two, with part of the app going into an '.odex' file.
The benefits of this are debatable. It makes the initial boot faster but, because the apps are missing certain files, it can make theming and modding much harder.
And now, if your rom is odexed, you can do something about it. TMA can deodex your odexed files...or even your entire rom.
For our example, we'll imagine that you've got an odexed 'framework-res.apk' on your device.
This means that in the same folder that framework-res.apk is in ('/system/framework/'), there'll also be a 'framework-res.odex' as well.
We want to get rid of that file and this is how..
To begin, ignore the Deodexing Menu for now and head to the Theming Menu instead
Use the theming menu to pull, backup and decompile '[b[framework-res.apk[/b]'. If you're not sure how to do this, have a look at the above two posts.
Then go back to the main menu and go to the Deodexing Menu. We'll come back to the Theming Menu later
Select the Prepare Workspace option. This will start pulling the needed files from your phone.
This is the longest part of the process so it's worth having a good book nearby.
Now use the Backup Odex Files to backup the odex file you want to get rid of. This backup will be made in the 'user_files\BACKUP\files' folder.
In this example, we want to backup '4 - framework-res.odex'.
Always, always, make a backup!!
Now select the Deodex Files option to deodex your file.
In this example, we want to again choose '4 - framework-res.odex'.
Choose the file you want to deodex and let TMA do its thing.
Deodexing can take a little while.
Don't worry, stuff is actually happening!
When the file is deodexed, a new folder called "framework-res.odex" will appear in the "_deodex\DeodexedFiles" folder.
This contains all the bits from the deodexed file. These are useless on their own so they need to be added to the respective apk file.
So now use the Add Deodexed File To Decompiled File In "_working" Folder option to add the deodexed 'framework-res.odex' file to your decompiled 'framework-res.apk'.
Now you can make any changes you want to the decompiled 'framework-res.apk'. When you're done, head back to the Theming Menu, recompile the file and flash it back to your device.
If you don't know how to recompile or flash, look at the instructions in the first two posts.
But don't exit your recovery just yet!
The original odex file, 'framework-res.odex' is still sitting on your device, which is going to cause problems.
So now you need to remove it. First you need to mount the /system partition so TMA can access your device while it's in recovery.
How to do this depends on the particular recovery program you're using but it should be pretty straight-forward.
Once that's done, go back to the Deodexing Menu and use the Delete Odex Files From Device to delete the file from the device.
Be sure you get the filename and location right. Be very careful here..if you delete the wrong file it may be gone forever and you might have to reflash the whole rom!
With the odex file gone from your system and a deodexed app taking the place of the odexed one, you may now unmount your partition and reboot your device.
It will take longer than normal to reboot. This is fine and to be expected.
It seems like a long, complicated process but it's not really.
You can even deodex your entire rom in one go if you want (and if you have the time). Just use the Deodex All Files option. Just bear in mind that you still have to pull and decompile the relevant apk's..
Just follow the steps and remember to BACKUP before you do anything!
If you're using KitKat or above (Android 4.4+), Tickle My Androidwon't automatically pull any .odex files from your priv-app folder. You'll need to copy them over manually.
I'm sorry about this but there's not much I can do about it right now. It seems to be a bug in ADB itself. This is the program that interfaces between your Android device and your computer.
ADB is made by Google so, until this bug is fixed, we're stuck.
Hopefully we'll have a solution soon!
If you're having problems, I'm happy to help. Just tell me what step you've gotten stuck on and include your 'history.txt' which you can find in the 'user_files/LOGS' folder.
A. With Android being open-source, more and more companies and developers are putting their own spin on the OS and it's not unusual to find that something won't compile even when there's no obvious reason why it should.
I can help..but you need to do something for me first.
In your 'user_files\LOGS' folder, you'll find various decompiling and recompiling logs...as well as 'history.txt'.
Share that file with me, ideally by copying and pasting it into the post, and let me know a little bit about what's going wrong.
That should give me enough information that I will be able to fix your problem.
Please be aware that I won't be able to help you without this information.
Q. TMA doesn't load! I just get an error saying that the 'shortcut cannot be found'!
A. This is most likely because you didn't install TMA in the root of your 'c:\' drive.
TMA will be looking for 'c:\TickleMyAndroid\tool_files\rewrite.bat'.
If you've installed anywhere else, the address won't be right.
If you're comfortable with editing shortcuts, you can have TMA anywhere. But it may be simpler just to put it in the root for now..
Q. I've Used Apktool 2 And I'm Getting An Error When I Try Adding Smali Files!
A. I've encountered this a lot lately so I thought I'd best make a FAQ about it.
So you've decompiled an apk with a version of apktool 2 (like apktool 2.0.0b9), you've added some smali files, tried to recompile and...you get errors that look a little like this:
Recompiling "LenovoSystemUI.apk" With Original Signature,
With Tickle My Android
..\_working\LenovoSystemUI.apk\smali\fx\dzolcp\Spe ed$1.smali[24,4] Error for input '.parameter': Invalid directive
..\_working\LenovoSystemUI.apk\smali\fx\dzolcp\Spe ed$1.smali[40,4] Error for input '.parameter': Invalid directive
..\_working\LenovoSystemUI.apk\smali\fx\dzolcp\Spe ed$1.smali[41,4] Error for input '.parameter': Invalid directive
..\_working\LenovoSystemUI.apk\smali\fx\dzolcp\Spe ed$1.smali[40,15] mismatched input '"context"' expecting END_METHOD_DIRECTIVE
Exception in thread "main" brut.androlib.AndrolibException: Could not smali file: fx/dzolcp/Speed$1.smali
at brut.androlib.src.SmaliBuilder.buildFile(SmaliBuil der.java:72)
at brut.androlib.src.SmaliBuilder.build(SmaliBuilder. java:56)
at brut.androlib.src.SmaliBuilder.build(SmaliBuilder. java:41)
at brut.androlib.Androlib.buildSourcesSmali(Androlib. java:337)
at brut.androlib.Androlib.buildSources(Androlib.java: 298)
This 'Error for input '.parameter': Invalid directive' error is caused by a difference in the davlik assembler/disassembler used in apktool 1 and the one used in apktool 2.
Apktool 2 uses smali/baksmali v2, which doesn't like smali files generated by smali/baksmali v1.
Basically, if you're seeing this error, you need to use apktool 1.5.2 to decompile and recompile your apk. Once the apk's been recompiled, you can use apktool 2.0.0b9 to decompile it again.
(If you're feeling nice, once you've decompiled your apk with apktool 2, why not share your new smali files with the thread you got the original files from? Just like this nice guy here: http://forum.xda-developers.com/show...&postcount=962
You never know, you just might help somebody else who had this error. )
Q. How Do I Use My Own Version Of Apktool?
A. Apktool is a great piece of software that makes it possible to decompile and recompile almost any Android application. The trouble is that Android is open-source and some roms are made a little differently from the Google norm. Which means that stock apktool might not be able to do anything with those apps.
In some cases, clever people have been able to mod apktool itself so it works on those roms. If you've got a rom that needs a custom apktool, it is possible to use it with TMA. And very easy too!
Have a look in the 'user_files/apktool' folder:
At the time of writing Tickle My Android comes with four different versions of apktool to choose from and they're stored here.
If you want to use your own modded version, just copy it into this folder.
If it's a version of apktool 1, give it a name that starts 'apktool_1'.
If it's a version of apktool 2, give it a name that starts 'apktool_2'.
This will ensure that Tickle My Android can use the file correctly. Just be sure not to use any spaces in the name!
Then just run TMA, go to the Settings Menu, select your apktool and use it. It's that simple!
Q. I'm getting a 'Java Not Installed" error...but I do have Java installed!!
You may have Java installed...but you probably don't have it in your PATH.
TMA is a batch file, which runs in a command-line environment. If you don't have Java in your PATH, the tool won't be able to access it and won't be able to do any decompiling or recompiling at all.
XDA Developers was founded by developers, for developers. It is now a valuable resource for people who want to make the most of their mobile devices, from customizing the look and feel to adding new functionality. Are you a developer?