[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/show....php?t=1614922
Make sure you also have installed:
// 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:
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:
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.)
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!