ZipThemer is a theme installer app with MetaMorph compatibility. It builds flashable "update.zip" files onboard your Android device by combining your existing system files with modifications from the theme files of your choosing. Supported theme files formats are ZipThemer and MetaMorph theme files.
The app determines which system files need to be patched by reading the XML descriptor information from the theme files. It then creates patched versions of the system files by merging in content from the theme files. The result is then packaged as a signed "update.zip" which you flash via recovery to apply the changes.
Add as many theme files as you want to install in a single "update.zip" file. Order is important when two theme files update the same resources. For example, lets say you have a status bar theme which updates all of the status bar icons, and a cool circle battery pack which updates only the status bar battery icons. You'll want to add the battery pack theme after the status bar theme so that the battery pack takes precedence. In other words, the battery theme should appear further down the list.
This method of patching/modding preserves themes you've installed previously that don't conflict with newly applied themes. It also allows multiple themes to be installed in a single recovery/flash/reboot cycle.
ZipThemer has the capability to also create flashable "undo" files that can be used to quickly and reliably revert a theme install. See the user manual for more information.
Unlike MetaMorph, ZipThemer works with the theme files in their unextracted format -- there is no step to unpack the theme files. ZipThemer will not work with the extracted zip files.
The following links will take you to the official ZipThemer website for more information:
User Manual
Overview and Feature List
Issues & Limitations
Screenshots
Donate
Edify workarounds:
NOTE: as of version 2.0 workarounds are no longer required. ZipThemer 2.0 can create an Edify configuration on the device by reading the required information from a flashable ROM or update on your sdcard. In the app, visit Menu -> Update Edify.
Deprecated workaround instructions...
Select the "Update Edify" menu item to force the creation of /sdcard/ZipThemer/edify.
Download the edify-support.zip file for your device.
Extract and push the two files, phoneDatabase.xml and update-binary, to /sdcard/ZipThemer/edify/. Use 'adb push' or your favorite onboard file manager app.
In ZipThemer's settings, change the 'Update Script Format' to the Edify option with your device name in it.
ZipThemer will now be able to create flashable updates with the correct Edify commands for your device.
NOTE: if you use the 'Update Edify' menu option after installing the workaround, it will overwrite the phoneDatabase.xml and you'll either have to delete the update-binary file or re-install the workaround.
I just published version 1.1 to the market. This removes three of the previously listed limitations.
Changelog:
* Added checkboxes to enable/disable theme subcomponents.
* Fixed update zip script generation so it automatically includes commands for copying to DATA and SDCARD as appropriate for the theme content.
* Improved the theme meta-descriptor format to allow files to be copied at build time.
* Added build completion status/log display.
This is sweet! I had a little trouble at first but then I realized that all the themes I was trying to build either had 'spaces' or 'periods' in their filenames. After renaming the main folder and the xml file it works fine.
Thank you!
Glad you like it. If you can point me at a theme with spaces/periods in the name I can probably fix ZipThemer to make it work without having to change the theme file.
Ken
Version 1.2 is out. The list of limitations just got shorter again.
Changelog:
* Added long press context menu to items in the theme list.
* Added ability to remove themes from the list via context menu.
* Added ability to move themes up and down in the list (because order is important, see first post).
* Added theme details screen which displays information from the theme's XML file and screenshot.
* Some minor fixes.
Error on build out
I'm trying to build a zip to theme swype. I'm using one of the zip files from here and trying to apply it to the swype.apk in the system/app folder.
When I click "build it" I get the following error "IllegalArgumentExecption: Incorrect offset/len parameters"... any help would be appreciated.
Thanks!
Do you have the Android SDK installed on your computer? If so, it would help to run the 'adb logcat' command while doing this and then send me the output so I can get a better idea about what's going on.
Was Swype was installed from the market? ZipThemer doesn't yet support theming market apps (but its on my TODO list). The error may be related to that.
Ken
Swype wasn't installed from the market. I'm on Calkulin's EViO 2 ROM v1.7.1 swype came in package ROM so it's the OTA version.
I've attached the log file
mwhiz said:
Swype wasn't installed from the market. I'm on Calkulin's EViO 2 ROM v1.7.1 swype came in package ROM so it's the OTA version.
I've attached the log file
Click to expand...
Click to collapse
Thanks. Unfortunately I forgot to tell you to increase certain log levels, so the output is not as useful as I had hoped. Anyway, after thinking about the problem and reading the SwipeHD theme thread I see at least three things that need fixing.
First, I'm pretty sure that the "IllegalArgumentExecption: Incorrect offset/len parameters" error is what happens when you try to theme what I call a "market app". But what I mean by that is any app which is not signed by one of the four well-known Google keys. An OTA version of Swype falls into this category because probably signed by a key private to the app makers. Anyway, there's a bug in ZipThemer which results in this error when you try to theme such an app. FYI, MetaMorph doesn't sign the files after patching them. Two things for me to do here -- provide a better error message in this case, and implement an option to patch market apps by a) re-signing with a Google key, or b) not signing the result.
The other thing I noticed is that the SwypeHD morph files have an item to copy a custom system library into place. I missed this feature of MetaMorph during my analysis, so I also need to implement support for this also.
I'm not sure how long it will take me to get a new version out that supports these features. Maybe a week or two. There are certain experiments that will help determine which way to go with the signing/not-signing part -- e.g., to figure out which one to implement, or if both are need which one is the best default, etc. Let me know if your willing to help with this.
My appologies for not having better news at this time, but with your help we can make ZipThemer a great app.
Thanks again,
Ken
Ken,
Thanks for the quick replies! I'll do what I can to help, let me know what I can do.
-Mark
mwhiz said:
Ken,
Thanks for the quick replies! I'll do what I can to help, let me know what I can do.
-Mark
Click to expand...
Click to collapse
Try the attached 1.3-beta1 version...
adb uninstall kellinwood.zipthemer
adb install ZipThemer-1.3-beta1.apk
or Gmail the attachment to yourself and click the "install" button in Gmail onboard the device -- this probably requires allowing "Unknown sources" to be enabled in the phone's Applications settings.
Your first attempt to build an update zip file should result in a "Key Selection Error" dialog. This is the fix for the incorrect offset/len parameter exception in the previous version. This dialog is issued when the key signing mode is "auto" (the current default) and the certificate of the app being patched is not recognized.
Next, visit ZipThemer's menu, select Settings and change the Package Key Mode to "auto-none". Retry the build... it should succeed. The Swype app should get patched but not re-signed because the app's certificate will not be recognized. The log ouput should say it updated entries, but should not say that it was signed.
Create a second update zip before flashing the first. This time set the package key mode to "auto-testkey", rename the output file using the "*Output" button and build again. In this version, the Swype app will be resigned with the Google testkey.
BACKUP YOUR SYSTEM BEFORE FLASHING EITHER OF THESE UPDATES!!!!
See what happens when you flash one of the files and reboot. Test swype and then flash the other update and reboot. In my tests I updated the YouTube app and didn't see any difference between the signed and unsigned versions.
I'm anxious to hear how it goes.
Ken
Worked like a charm! I flashed both updates with no problems and both updates appeared to work just fine. Nice work!!!
Going to try a few more and I'll let you know how it goes.
For my info does it matter which Package Key mode I use? Does one give me anything that the other doesn't?
Thanks again..
Nice!
I'm not exactly sure which one is better... auto-testkey results in a signed app which means it has a valid digital signature, but the certificate is different than the original and could cause problems in the future, e.g., if an updated version becomes available you might not get the update.
auto-none results in the same outcome as using MetaMorph -- a patched app with an invalid digital signature, because the file was patched and not re-signed.
I might be inclined to use auto-testkey myself until a problem was discovered, especially since I like the idea that everything is signed correctly. But with auto-none having the same result as MetaMorph which as been around for a while, it might be a better choice in the mean time.
I'll try to get an official 1.3 release out to the Market in the next day or two.
Ken
I uploaded 1.3 to the Market this morning. Most of the changes address Mark's issues above, but I also sneaked in the theme list save/restore feature and fixed a few bugs along the way.
FYI, in the 1.3 release the package key mode is "auto-none" by default, which means user's are unlikely to have to change it. The default was "auto" for the beta version.
Change log:
* Added support for including plain files to the generated zip via "xxx.cpy" item's in the theme control files.
* Preference settings to control key signing mode for patched packages and the update zip file
* Theme list save and restore operations
* Various other bug fixes.
Is the final output a theme file or an entire rom with the theme incorporated into it?
Neither... its an update zip file that you flash in recovery to apply the changes for the themes. The file is bigger than a theme file, but much smaller than a full rom. For example, say you have a theme which modifies the icon for the Calendar app. The theme file contains a single image and the theme control file. The resulting update zip file will contain a patched version of /system/app/Calendar.apk and the update-script file. When you flash the update the new version of Calendar.apk gets installed and you'll see the new icon. ZipThemer can easily create update zips to install multiple themes and therefore patch multiple packages/apps in one update, so this is just a simple example to explain things.
Hope that helps,
Ken
kellinwood said:
Neither... its an update zip file that you flash in recovery to apply the changes for the themes. The file is bigger than a theme file, but much smaller than a full rom. For example, say you have a theme which modifies the icon for the Calendar app. The theme file contains a single image and the theme control file. The resulting update zip file will contain a patched version of /system/app/Calendar.apk and the update-script file. When you flash the update the new version of Calendar.apk gets installed and you'll see the new icon. ZipThemer can easily create update zips to install multiple themes and therefore patch multiple packages/apps in one update, so this is just a simple example to explain things.
Hope that helps,
Ken
Click to expand...
Click to collapse
Worked like a charm and thanks for the quick response!
Kfunk said:
Is the final output a theme file or an entire rom with the theme incorporated into it?
Click to expand...
Click to collapse
Sorry, if you meant "theme file" as a something you flash in recovery to apply the theme, then the answer is the final output is a theme file.
I tend to think of theme files as MetaMorph files, and I forget that there are a lot of themes delivered as flashable updates.
Ken
kellinwood said:
Sorry, if you meant "theme file" as a something you flash in recovery to apply the theme, then the answer is the final output is a theme file.
I tend to think of theme files as MetaMorph files, and I forget that there are a lot of themes delivered as flashable updates.
Ken
Click to expand...
Click to collapse
Yes, that was my intent by using the word "theme". It is a relative term in the world of Android!
I just released 1.4 after fixing some issues which came up installing a large morph that patches about 20 apps. Some of the apps were missing on my device...
Change Log:
* Better support for installing themes when some system files are not found on the device. This version skips theme sub-components when the corresponding system file is not present. A notice is displayed when themes are loaded indicating which files are missing and the completion status display also notes skipped files. This is not an error condition but an FYI that some of the files the theme is capable of updating will not be updated because they weren't found. The previous version issued a "file not found" error during the build and you had to explicitly disable sub-components as a workaround.
First you have to get YOUR Rom's Framework-res.apk
REQUIREMENTS:
MUST BE ROOTED
ROM MANAGER
ClockWorkMod Recovery
There are 4 main ways to get it: (Thanks to avreen)
1.From the zip file of your ROM
Code:
Download the ROM you are using.
Decompress/unzip it using 7zip/winzip .
Open System/Framework/ in the unziped folder
Take the framework-res.apk in system/framework/ folder.
Place it anywhere you want (on the desktop for example).
2.From your phone
Download a file manager (Astro or ES File Explorer or other...) in the Market.
Go to /system/framework/ folder in your phone.
Copy the framework-res.apk in your SDCard.
Place it anywhere you want (on the desktop for example).
3. Use file from the kitchen
Code:
You can select file of your ROM/Theme from drop-down list in file upload section.
We have corrected files for most popular roms/themes.
4. Alternatively you can also use ThemePro to extract it from your Rom.
Before starting editing your framework-res.apk you should make an other copy of it if you want to restore your original framework.
Copy it and rename it as framework-res_ORIGINAL.apk for example.
Then go to http://circle.glx.nl/
Choose the 4th option ("No Battery, theme only")
Click Next
Choose the 2nd option ("Themed icons sets (Froyo roms only)")
Click Next
Click the box(include icons) under EMOTICONS then click preview for you to see the emoticons, after choosing the emoticons you like (i chose B2 all set) leave everything as it is (THIS GUIDE IS FOR CHANGING YOUR EMOTICONS ONLY)
Click Next
The "Do not change notification status bar" option should be preselected here and again LEAVE EVERYTHING AS IT IS.
Click next
The "Do not include bootanimation" option should be preselected here and again LEAVE EVERYTHING AS IT IS.
Click next
The "Do not include windows animation" option should be preselected here and again LEAVE EVERYTHING AS IT IS.
Click next
Now upload YOUR Rom's Framework-res.apk
Click Next
Download your Cooked .zip file mine was named "UOT-YC-02-03-05-27-1.zip"
Then do a BACKUP OF YOU CURRENT ROM using ROM MANAGER
What to do of the UOT-......... ZIP File that you made from the kitchen (again thanks to avreen)
Code:
Reboot into recovery.
choose "install zip from sdcard"
choose "choose zip from sdcard"
locate your file UOT-... .zip in SD
confirm "YES - install UOT ... .zip"
wait for script to finish
reboot phone
Enjoy your new SMILEYS/EMOTICONS
If you find this post useful don't hesitate to press the THANKS button
hi... already do these step (i try with 1 and 2 options)
But... the smiley still same (green robot) and try to restart also clear dalvick and wipe cache...
But i see same green robot for smiley in my message application... i already check my framework-res.apk, and there are my modified smileys.
My Desire already rooted and S-OFF.
Please help...
Thank You....
I've done my searching and experimenting to try to get this to work, but I'm stuck.
I've got a font (Rockwell) that I'd like to package up into a nice .apk so I can just install it now, and have something simple to reinstall in the future should I need to.
What I've done so far is to pull a font .apk out of my phone already (Armani font, in this case), decompiled it with apktools, and then edited the following files:
/assets/fonts -> replaced fonts with rockwell.ttf files
/assets/xml -> updated xml file with appropriate filenames
/res/values ->updated strings.xml only with new app name
/res/layout & /res/drawable -> did not touch these folders
/smali/com/monotype/android/font/Armani ->replaced all references to Armani with Rockwell
/AndroidManifest.xml ->updated package name
/apktool.yml ->updated to show correct output name for apk
I then used apktools to package up the files into an .apk file, and then transfer it to my phone. When I attempt to install it, it sees the file, tries the installer, but then says "package not installed successfully" (or something similar).
My questions are:
1. Did I edit something incorrectly?
2. Did I follow the wrong steps to package up the files?
3. Is it possible that Rockwell just isn't a .ttf file that can be used?
4. Did I install the .apk wrong? (i.e. is it a system file and needs to be installed in a root environment/pushed with adb)?
Thanks in advance - I'll post any additional information that is needed.
(Oh, and I do realize this is a question - I didn't post in Q&A because everything I've seen posted font-wise has been in this section. If I'm mistaken, please move this.)
Update:
I retraced my steps through this post, and realized that I hadn't signed the file in APK Manager.
I was able to install the font file, and it's all better now.
Want to use zipthemer to create own themea but can someone help me to show exact procedure.. I am having a rooted device in stock 4.2.2 want your help guys.. if any other process is there kindly link me to it.. will be waiting for ur rply...
First, download some MetaMorph or ZipThemer theme files to your sdcard. Leave them in ZIP format.* The location on the sdcard is not important. Leave them in downloads, move them to /sdcard/ZipThemer or /sdcard/AndroidThemes... it doesn't matter.If you have ClockworkMod 3.0 (or higher) installed as your recovery program or require Edify scripting for any other reason, then visit "Menu -> Update Edify" and follow the instructions shown.* The device type name field on this screen is for display purposes only (enter anything you want).* See below for more details on Edify support.
Click the "+Theme" button to launch a file browser and select a theme zip file.* Repeat to add as many other themes as you want to install via the generated update zip file.Click the theme names in the theme list to expand and reveal the sub-theme components.* Components may be excluded from the build by unchecking the corresponding checkbox.Long-press on themes in the list to get a context menu which allows you to remove themes, order them, and launch the theme details view. Note that the context menu is not operational for the theme sub-components.Click the "+Output" button to select the output file via the file browser.* The parent directory of the selected output file becomes the new default output directory.* See below for more details.
Click the "*Output" button to edit the output file name.Click "Built It!" to create the flashable update zip file.**
Review the completion log and follow any instructions displayed there.
Reboot into recoveryIf you chose not to create a flahsable undo file, do a Nand backup instead so you can revert in case you change your mind later about having installed the theme.Flash the zip file to apply the themes.Reboot and enjoy the results!
Undo Files
You can choose to create a flashable undo file that can be used later to revert the theme changes.* The creation of the undo file is relatively quick and does not add significant time to the build process.* Using an undo file is generally faster and easier than Nand backups.* However, in order for the undo file to work it must be created at the time the theme update is created. It can't be created after the theme has been applied in recovery.* Also, undo files must be applied in exact reverse order of creation in order to reliably back out changes from several independently flashed theming operations.
The choice to make an undo file is controlled by a preference setting with a default value of "Ask".* In this mode, a dialog is displayed asking for your decision to create the undo file at the beginning of each build.** You may also choose to "Always" or "Never" create undo files.
Undo files are written to the same directory as the update zip file.* They will have a similar name except with a "-undo.zip" suffix.
Edify Scripting
There are two formats for the script file inside an Android update.zip file.* The old format is called "Amend", and the new format is called "Edify".** As of this writing most recovery programs support both formats, but Amend has been deprecated in favor of Edify.* ClockworkMod 3.0 no longer supports the Amend format and users with this recovery must configure ZipThemer to use Edify scripting.
Begin by selecting the Menu -> Update Edify option.* Pick one of the two options.* Option 1 is likely to work for most users and simply requires that you have a flashable ROM or update on your sdcard that contains an Edify script.* The device type name field on this screen is used for display purposes only.* Enter whatever you want for this value.* Browse and select the ROM or update file.* Click "Configure..." and you're done.* This is normally a one-time operation that you don't have to repeat, assuming it succeeds without errors (see the*FAQ*for exceptions).
You can control which format ZipThemer generates by changing the "Update Script Format" setting.* Amend is the default and should work for many users .* If you require Edify (ClockworkMod 3.0 users) or just want to try it, first check to see if your phone is listed in the Update Script Format setting list.* If its not listed, update the database via the app's "Update Edify" menu item. * If your phone still doesn't appear, try one of the "Generic" phone options or generate a configuration using "Option 1" on the Update Edify screen.* Finally, if you still can't get themes to install then ask for support by visiting the support forum or sending me (the dev) an email.
Edify Phone Database
File-system partitions must be explicitly mounted when using Edify and the mount commands can vary from phone to phone.* ZipThemer can extract the required information from a flashable ROM or update file, and there is a database of mount commands provided by nubecoder as an artifact of his*amend2edify tool project.* ZipThemer can use this database when generating Edify scripts and ships with a built-in version, but if you use Option 2 in the "Update Edify" menu screen the latest version of the file will be downloaded to/sdcard/ZipThemer/edify/phoneDatabase.xml.* This file takes precedence over the built-in one.
update-binary
ZipThemer also contains a built-in version of the update-binary file which is used when running edify scripts after configuring with Option 2.* The file gets copied into the update.zip automatically during generation when Edify scripting is enabled.* The default version was also obtained from the amend2edify project.* At the time of this writing the built-in update-binary file is known to work on most phones, but you can provide your own version by copying one into the*/sdcard/ZipThemer/edify*directory (it must be named "update-binary").* However, not all update-binaries are created equal so you're on your own when doing this.
Default Output Directory
Changing the output file via the "+Output" button implicitly changes the default output directory to the containing folder of the selected file.* The default output directory value is persisted across application restarts and can be changed again by selecting a file in another directory via "+Output".* If the directory is ever found to not exist, then the default directory will revert back to /sdcard.*
This feature of persisting and re-using the default output directory is meant to aid users whose method of installing updates requires the output zip files to be located somewhere other than in /sdcard.*
Sent from my GT-P3100 using XDA Premium 4 mobile app
thnks man..!!
Bro can u suggest few themes or link them below.. would be highly appreciated...!
You must be in a Cyanogenmod or AOKP rom for using themes. Then just search in market for*CM10 themes :thumbup:
Sent from my GT-P3100 using XDA Premium 4 mobile app
This section is not for questions! U people are making section dirty!! Stop please, use Q&A for question.....
I've downloaded various rom files from xda forums that are supported by my phone, yet each time I go to find the ROM zips that I place in both Downloads AND GooManager folder while in recovery...THEY DON'T SHOW . I use my root explorer to see that its the right folder and that the files are actually there (which they are), but for whatever reason they won't show in TWRP.
Sprint HTC One M7wls
Recovery: TWRP 2.6.3
Rom: Whompasaurus 1.7 rom in BOTH Goomanager AND Downloads folders
Current Rom:ViperRom 1.1 (haven't been able to update/flash new roms for a LONG time now )
Can someone help? or has anyone had this problem on the HTC ONE ?
SantiagoIII said:
I've downloaded various rom files from xda forums that are supported by my phone, yet each time I go to find the ROM zips that I place in both Downloads AND GooManager folder while in recovery...THEY DON'T SHOW . I use my root explorer to see that its the right folder and that the files are actually there (which they are), but for whatever reason they won't show in TWRP.
Sprint HTC One M7wls
Recovery: TWRP 2.6.3
Rom: Whompasaurus 1.7 rom in BOTH Goomanager AND Downloads folders
Current Rom:ViperRom 1.1 (haven't been able to update/flash new roms for a LONG time now )
Can someone help? or has anyone had this problem on the HTC ONE ?
Click to expand...
Click to collapse
You will have to navigate to the folder the rom.zip is in or move it to the root of the sdcard
I tried searching the folders that I placed the rom.zips in and even tried moving the files to the root folder, but still doesn't show in TWRP. I've even heard that you can place the files in the 0 folder and that that should work. but it doesn't