[Tool/Utility][v1.2.0]Apktool Mobile Batch Deodexing - Run Batch Deodex Jobs Using Your Android Device!
*** Disclamer
Your device is shipped without root for a reason. Modifying system files that are normally off limits carries the risk of being caught in a situation where you will be unable to fix the damage unless you plan ahead.
It is wise to not proceed unless you have a means of restoring your device in the event of a catastrophic event and that you are confident in your ability to restore any issues you create.
I am not and will not be responsible for any harm that may come to your device or to your sanity as a result of **** up.
For more on what's expected, new members should help themselves to the video below.
Description
A toolset for performing batch deodexing straight from your device. Comes installable as a flashable zip and can easily be modified by advanced users to suit their needs. Just drop all your odex and corresponding archives into a folder and run one simple terminal command (or use Linux Script Handler within your File Manager) and deodezed versions will be outputted to a separate folder.
I wrote this because Apktool Mobile lacks any batch features.
COMPATIBLE FOR ALL ANDROID DEVICES RUNNING ICS OR LATER!
Project is just listed here because I had to choose a location specific to a certain device when creating the project. Mods, feel free to move if desired.
Learn more about deodexing and the differences between an odexed system and deodexed system
Installed Files/Directories:
/sdcard/bdt - Directory with our smali and baksmali jars as well as directories to place batch jobs in as well as output folders. There is a readme in each folder describing it's function.
/data/misc/bdt - Directory which contains the Java Runtime Environment as well as all dependent libraries.
/system/bin - Two scripts are installed here. The first is "bdt" and contains all path variables in case you need to edit a path (ex. you download newer smali/baksmali versions to use, or change the name of the bdt directory on your /sdcard). This also contains wrapper functions athat do all the work. The second file is "batch-deodex" and once you have placed your odex (and corresponding apk/jar) files into the /sdcard/bdt/files-to-deodex folder open a command prompt and run this script to deodex all the odex files into dex files and then insert into the corresponding archive.
{
"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"
}
Installation Instructions and Usage
Download the latest version from one of the hosts in the downloads section and simply flash it in recovery. You could always manually extract the contents but then you'd also have to chmod quite a bit to set the permissions.
To uninstall, flash the uninstall zip that's also in the downloads section, or manually delete /system/bin/bdt, /system/bin/batch-deodex, /data/misc/bdt folder, and /sdcard/bdt folder.
Batch baksmali/smali
To run a batch decompile, move your odex (or deodexed apk or jars) files into /sdcard/bdt/files-to-deodex and fire a command prompt up and type:
Code:
su
. /system/bin/bdt # Import paths and functions
batch-baksmali
The source folders will be outputted to /sdcard/bdt/smali-source.
To compile a batch of deodexed source folders we just do essentially the same thing. Open up a command prompt and type:
Code:
su
. /system/bin/bdt
bbdth-smali
Doing so will create a dex file for each source folder and this will be outputted to /sdcard/bdt/dex-out.
Batch deodexing
Performing a batch deodex works much the same way. Copy all the odex files and their corresponding apk or jar into /sdcard/bdt/files-to-deodex then open a command prompt up and type:
Code:
su
# no need to import anything for this
batch-deodex
Just that easy. The script may take a while depending on how many files you're deodexing just as with the other scripts so if running a lot be patient.
The deodex script moves all odex files to ../files-to-baksmali and then calls batch-backsmali. Then the script calls batch-smali to create the dex files. After that's done it enumerates through the dex files and finds each one's corresponding archive and once it does it uses the
Code:
zip -jq {archive} classes.dex
to insert classes.dex into the archive without extracting anything or changing any compression settings, etc.
Once complete you'll have your deodexed archives and the script cleans up all other directories. The other two scripts don't do this.
Known Issues
-- Discovered that some ROMs are telling me that my scripts don't exists when they very well do, so of you are seeing a "sh: {scriptname}: The file or directory cannot be found" then just run by using the Linux Script Handler within your File Manager until I figure this out or until the ROM dev gets in touch.
-- I just discovered this error while preparing these test screenshots. It didn't effect the deodexing process though but I'll look into fixing this tomorrow. UPDATE: Haven't looked into this yet as it has no effect on the outcome. I think it's occurring because on the final loop when running a batch and when all is finished it still runs one last time, thinking it's looking for a jar file. Once I get these other minor details done I'll publish on github. Actually there is published code there now, but ir needs to be removed and updated.
Downloads
Batch Deodex Tools 1.2.0 - Box
Batch Deodex Tools 1.2.0 - Dropbox
Uninstall ZIP for 1.1.0
Changelog
Code:
1.2.0 Released: -- 08/21/14
-- fixed an issue causing the /sdcard/BDT folder to not be properly flashed
-- some editing made to the scripts in preparation for uploading to github
1.1.0 Released: -- 06/26/14
-- turned into a stand alone project
-- optimized the scripts
-- flashable in recovery
-- also created flashable zip to uninstall
1.0.1 Released: -- 06/21/14
-- initial release
TO DO
-- Migrate the JRE off /data/... to prepare for Android L. Was going to move to /data/app-lib where it probably should have been to begin but no point now, so will remain in /data/misc/bdt for the time. Rwas more in the Addendum in second post
-- Add Box, Dropbop, and Mega hosts as well. Well having just a Drive and Box host should accommodate the demand. If the demand increases I'll adjust accordingly.
-- Publish code to github.
-- Scratched making this into an APK... Having it as is makes it easier for advanced users to make modifications (use custom files, etc) on the fly
Thanks To/Credits
Code:
* Brut.all for giving us apktool and much more
*
XDA:DevDB Information
Batch Deodex Tools - Android, Tool/Utility for the LG G2
Contributors
MidnightHarvester
Version Information
Status: Stable
Current Stable Version: 1.2.0
Stable Release Date: 2014-08-21
Created 2014-06-22
Last Updated 2014-08-21
Reserved
APPENDUM
Consider this a diary. Dates are when the thoughts or discoveries hit me, not release dates
Aug 15 - After modifying the tookset so it"s Android L ready by moving the JRE to /system/{wherever}, after flashing now the BDT directory doesn't get flashed to the sdcard. I'll need to do a little fiddling with the updater script, then release it once it's working. Granted you can just manually extract and copy that directory over easily but I'd prefer a fully working flaahable..
Aug 19 - Noticed there has been updated smali and baksmali jars, so either an incremental update and most likely just a patch will be worked I n and releaaed. Because of the update I'm also looking at any other files that may have been updated.
Aug 20 - I've discovered that on some devices (specifcally, CloudyG3 1.3), that t
here arr some issues running the scripts via terminal as apparently ... they don't exist. Executing them via Linux Script Handler within a File Manager should work until I figure this out)
Aug 20 - Releases will be migrated over time to my Box account, probably Dropbox account, as well as Mega. Archived releases will also be uploaded, and the OP will be updated as each is moved.
Aug 21 - Fixed a bug preventing the /sdcard/bdt directory from being installed on flash. Also made a few revisions to the code, nothing spectacular. Also uploaded to Box and Dropbox and ditched the Drive host. Incremental update to 1.2 0.
Good job buddy. Keep it up. Will give a try it soon.
Sent from my GT-I9100 using Tapatalk 2
Thanks! I'll be publishing an update in a day or so. I'm creating a stand alone project that won't require root. Right now root is required because the scripts need to access the JRE bin that's located in the data directory of apktool. I'm moving JRE lib (and Java binary) and smali and baksmali jars into a flashable zip.
It'll also be a lot easier to maintain this way. I completely killed my phone yesterday while cleaning up the scripts. After doing a batch deodex as it is now it will clean up the working directories and delete
everything except the deodexed archives.
I modified the paths hoping to create less work in the long run and after testing the modified script by phone rebooted back up and I got "unable to find setup" message and a blank screen. I must have left a "/" off of a path and ended up wiping everything in /sdcard/ ?
The error on boot was caused by the fact I always delete the LG setup app as I never anticipate deleting my SD card. So I was stuck at a black screen with nothing to restore since I wiped the SD card.
Eventually I realized I could pull the notification bar down still, and make it into settings by long pressing a quick toggle. Once I discovered I could open Google Now after enabling it in search settings I was in my way since I could use that to open Chrome and Root Explorer, etc.
I ended up restoring my system back and just wiped /data as well since I already wiped my SD card. Then spent the rest of the day restoring my device and luckily I had most everything backed up onto Drive.
Needless to say no changes were published in yesterday. I can imagine the backlash I would have gotten if I did lol. If I had a penny for each time I've mucked my device up while working on something I'd have, well maybe a dollar but still that's a lot
It shouldn't take long to get the standalone build out. I don't plan on turning the standalone build into an apk though as its easy enough to run via terminal emulator or file manager and take up far less space.
Sent from my VS980 4G using Tapatalk
I'll find another host to upload the install zip to as well as the Drive host in the OP. The zip is too large to attach here. I hope this simplification over installation appeals to more ?
Version 1.1.0 is now live. Installation boils down to just flashing the install zip in recovery. Read OP for additional information on how to use it.
Dang man! You beat me to it hahaha! I had started on this as a personal project for myself earlier today. However, I am wanting to just implement the process strictly through the recovery and by locating/finding all .odex files in my system to later deodex and place back accordingly all without me touching a thing but just running the script. I'm currently digging through your work right now to see if anything may be helpful for what I am aiming to do. Nevertheless, greatly appreciate you sharing this project.
How do you make an odexed apk into am installable apk? I wanna take the LG QVoice apk from an odexed rom and be able to install it like a normal app without having to add it to /system/app or /system/priv-app. Would just deodexing the apk do that?
Skizzy034 said:
How do you make an odexed apk into am installable apk? I wanna take the LG QVoice apk from an odexed rom and be able to install it like a normal app without having to add it to /system/app or /system/priv-app. Would just deodexing the apk do that?
Click to expand...
Click to collapse
You would most likely need to deodex that app and then install it via /data/app.
Make sure that system app you are referring to doesn't use any lib files or other dependencies. Some system apps do and it would be needed to port them over to your device for them to work (and possibly some work on the app itself once decompiled).
Sent from my C525c using Tapatalk
Modding.MyMind said:
You would most likely need to deodex that app and then install it via /data/app.
Make sure that system app you are referring to doesn't use any lib files or other dependencies. Some system apps do and it would be needed to port them over to your device for them to work (and possibly some work on the app itself once decompiled).
Sent from my C525c using Tapatalk
Click to expand...
Click to collapse
Yea I didn't think of lib files for that app. It makes sense it would need it. Thanks.
Modding.MyMind said:
Dang man! You beat me to it hahaha! I had started on this as a personal project for myself earlier today. However, I am wanting to just implement the process strictly through the recovery and by locating/finding all .odex files in my system to later deodex and place back accordingly all without me touching a thing but just running the script. I'm currently digging through your work right now to see if anything may be helpful for what I am aiming to do. Nevertheless, greatly appreciate you sharing this project.
Click to expand...
Click to collapse
That's an awesome idea bro. You'd need the jre in /data/misc/jdr somewhere. You may be able to run it off the scars in recovery since you can set permissions to the /sdcard mount there but not sure.
Create a script that 'finds' all odex files system wide and corresponding archive files and use the run_program edify script command to run the script so that you can deodex everything from recovery with one slide of a button.
There's not too much that would have to be changed in the script other than changing some of working directory variables as you go. Be careful in the batch-deodex script if borrowing from that as that deletes all odex, apk, and jar files in the /BDT/*/ except for the readme files.
Edit: If you need any advice or help on that project hit me up, as I could probably get it working by the end of the day. Well sooner not this day as my son is here but tomorrow.. Sorry I didn't comment the script that much but there wasn't really much to comment, so I mainly just commented the paths.
MidnightHarvester said:
That's an awesome idea bro. You'd need the jre in /data/misc/jdr somewhere. You may be able to run it off the scars in recovery since you can set permissions to the /sdcard mount there but not sure.
Create a script that 'finds' all odex files system wide and corresponding archive files and use the run_program edify script command to run the script so that you can deodex everything from recovery with one slide of a button.
There's not too much that would have to be changed in the script other than changing some of working directory variables as you go. Be careful in the batch-deodex script if borrowing from that as that deletes all odex, apk, and jar files in the /BDT/*/ except for the readme files.
Click to expand...
Click to collapse
Thanks. I had already set up my project folder along with my deodex script before I came across this thread (what were the odds lol). Was having issues getting the script to work at all until I looked at yours and notice you were exporting the LD_LIBRARY path. I implemented that idea in my script and now I'm getting a few failures for linking executables based on certain commands such as grep for example.
The script is a combination of premade works from different people which I have put together as followed. Currently, the script is a bit rough on what I am aiming to do but my goal for now is to get it to successfully find and deodex all necessary files. Once accomplished, I will proceed forward.
Script:
PHP:
#!/sbin/sh
cd $(dirname "$0")
DEODEXED_APK="/data/DEODEXED.log"
if [ ! -f $DEODEXED_APK ]; then
busybox touch $DEODEXED_APK;
fi;
prop="/system"
smalibaksmali_dir="/data/local/tmp/smali"
java_dir="/data/local/tmp/jvm/java-7-openjdk-armhf/jre/bin/java"
#tmp="$(dirname "$1")"
export LD_LIBRARY_PATH="/data/local/tmp/jvm/java-7-openjdk-armhf"
# Deodexes every .odex file
DEODEX() {
local API="$(busybox grep "ro.build.version.sdk" "$prop/build.prop" | busybox cut -d'=' -f2)"
echo "Detected API level $API" >> $DEODEXED_APK
busybox find "$prop" -type f -iname "*.odex" | while read line; do
local FILE="$(basename "$line")"
local FILEDIR="$(dirname "$line")"
echo "Deodexing $FILE" >> $DEODEXED_APK
echo "Disassembling $FILE..." >> $DEODEXED_APK
$java_dir -Xmx512m -jar $smalibacksmali_dir/baksmali-2.0.2.jar -a "$API" -d "$prop/framework" -x "$FILEDIR/$FILE"
if [[ $? -ne 0 ]]; then
echo "ERROR DEODEXING $FILE, ABORTING!" >> $DEODEXED_APK
rm -rf out
return 1
fi
echo "Assembling into classes.dex..."
$java_dir -Xmx512m -jar $smalibacksmali_dir/smali-2.0.2.jar -a "$API" -o classes.dex out
if [[ ! -e classes.dex ]]; then
echo "ERROR DEODEXING $FILE, ABORTING!" >> $DEODEXED_APK
rm -rf out
return 1
fi
FILE="$(busybox echo "$FILE" | busybox rev | busybox cut -d'.' -f2- | busybox rev)"
local FOUND=0
for EXTENSION in "jar" "apk"; do
if [[ -e "$FILEDIR/$FILE.$EXTENSION" ]]; then
echo "Packing back into $FILE.$EXTENSION..."
zip -rq "$FILEDIR/$FILE.$EXTENSION" classes.dex
rm -f classes.dex
FOUND=1
break
fi
done
if [[ "$FOUND" -eq 0 ]]; then
echo "ERROR, No output found?!"
rm -rf out
rm -f classes.dex
return 1
fi
rm -f "$line"
rm -rf out
done
echo "Deodexing finished"
}
# Start Processing Here
DEODEX
Sent from my C525c using Tapatalk
Saved while I read script after kid stops jumping on me lol
LD_LIBRARY_PATH threw me off to. Somewhere in java or bad small or small expects it to point to the data/data/per.pqy.apktool/lix files.
MidnightHarvester said:
Exporting LD_LIBRARY_PATH and pointing that to wherever you have the lib files stored which in apktool are in /data/data/per.pqy.apktool/lix is key cause either java or baksmali or small reference that Android environment variable.
That took me a while too until I realized what I needed to do. You can cut down on size quite a bit and copy the lib files in /data/misc/bdt in my project as those are the only ones needed for smali and baksmali. With that figured out you'll have it done in no time. You could always flash these tools and then make a script like
Code:
# import my 'bdt' script
. /system/bin/bdt
# copy all odex, apks, and jars into files-to-deodex - could
# use lath variables instead of full pathnames
cp /system/app/. *odex /sdcard/BDT/files-to-deeodex
cp /system/app/. *apk /sdcard/BDT/files-to-deeodex
cp /system/priv-app/. *odex /sdcard/BDT/files-to-deeodex
cp /system/priv-app/. *apk /sdcard/BDT/files-to-deeodex
cp /system/framework/. *odex /sdcard/BDT/files-to-deeodex
cp /system/framework. *apk /sdcard/BDT/files-to-deeodex
# call batch-deodex function
batch-deodex
Then make sure all the deoxed archives are in the deodexed-out directory and if check a few make sure classes. dex are in them lol. Then if running from recovery, copy the new deodexed archives into appropriate places and set permissions (recursively unless you're insane ).
Sounds a lot like what you're doing though. Also gives me an idea for version 2 which also gives the option to deoxed the entire system and then create a flushable zip with all the deodexed archives inside. Will probably work on that tomorrow after my son is gone. Keep me posted ed on the progress on your work though as I haven't had much in out back regarding this.
Click to expand...
Click to collapse
I like your idea about making a flashable zip once it is done. I have it working now.
I made a small typo which resolved my earlier problem.
I used "smalibaksmali_dir" as my variable which pointed to the smali directory.
However, later in my script I spelled 'bak' with a 'c' - smalibacksmali_dir.
I will keep you posted man. I was shocked when i found your thread because prior to I had spoken with a relative about my project and how it appeared no one had done this. Then I found you lol. Kudos for your work bro.
Sent from my C525c using Tapatalk
---------- Post added at 07:54 PM ---------- Previous post was at 06:58 PM ----------
Here is a screenshot with my personal script/project running.
Sent from my C525c using Tapatalk
@MidnightHarvester, my script is working great now. However, I noticed that this bogs down the device greatly. To deodex the Rom from the device will take WAY TOO LONG then if you were to do so using a descent computer. However, if merely deodexing an app here or an app there then it's fine and tolerable but not for all *.odex files at once lol.
There has to be some way to make this move along faster. Otherwise, the wait begins for phones with better processors and more ram.
Sent from my C525c using Tapatalk
Modding.MyMind said:
@MidnightHarvester, my script is working great now. However, I noticed that this bogs down the device greatly. To deodex the Rom from the device will take WAY TOO LONG then if you were to do so using a descent computer. However, if merely deodexing an app here or an app there then it's fine and tolerable but not for all *.odex files at once lol.
There has to be some way to make this move along faster. Otherwise, the wait begins for phones with better processors and more ram.
Sent from my C525c using Tapatalk
Click to expand...
Click to collapse
I'm pretty sure that the scripts are only utilizing one thread (unless I'm mistaken). Is there a way in bash to start a new thread or at least call on a binary and pass over a callback function? I'll have to look into it.
When I deodexing my /system/priv-app folder I just let it run overnight. There isn't anything really in the script I can do to speed things up much as the majority of the work is being used during the baksmali and smali calls.
That's one reason I didn't echo any output like your script did which I really wanted to but I've found that things tend to run faster without output being sent to stdout. Might not be a huge hit but...
Maybe if I an get it to deodex in recovery nobody would be competing for resources? Definitely keep updated on the thread as this isn't anywhere near done yet.
I'm glad I found somebody else working on this. For a while I thought no one was that interested since there has been PC tools to do this for ages. Problem is for some (like myself) is that THIS is my PC .
I'm trying to think on how to speed things up and drawing a blank. There aren't enough odex files in all of /system for there to be issued with looping. I think the baksmaling and smaling just take time. Take a look at Matt's old Privacy Blocker app (same Matt that developed xUltimate deodex tools on PC). It takes ages to baksmali and smali there as well.
My first early version though was even worse. I actually was decompiling resources as well in the archive and creating a smali folder and moving the decompiler source as well into there and recompiling the entire apk/jar lol. Don't ask me why.
I need to borrow an idea from you as well and let the user set API level. Normally omitting it should be fine (defaults to latest doesn't it?) but having the choices might help of anyone comes across a picky app.
In the meantime if deodexing am entire folder I'd recommend just doing it at night while you sleep. If you can, use a tool to enable all four cores and set all cores to performance mode and leave the Ax plugged in. *shrugs* I have AIDE installed so if I can get into the baksmali/smali source code maybe I can at least have a look.
Edit: I'm running a multithreading test now. You can run a command in another thread by placing '&' after the command. If it works I'll update.
@MidnightHarvester, I too use my device as it were my own computer which is why I make up the things which I do lol. Seems we have much in common. I actually learned about the idea of using multithreads with '&' just the other night as I was researching for ways to optimize my script. Another method is to use 'wait' which will put any future commands on hold until the current one is finished. That should out less stress on the cpu. Another idea is to limit the use of pipes. The more pipes being implemented the more usage the cpu has to dish out.
I believe flashing and running this in the recovery may speed this up as you mentioned that it would required less resources being used during operations, but the question is how much would the improvement be lol.
Keep me updated with using multithreads and feel free to take away whatever you find to be useful from my deodex script.
Expect many future changes to it to optimize it as much as possible.
In addition, using 'while read line' can increase the performance on speed if the following commands afterwards are not causing an overhaul.
Sent from my C525c using Tapatalk
---------- Post added at 03:10 PM ---------- Previous post was at 03:04 PM ----------
I will be pushing my project to my github later on today. Will be easier to keep up with any changes I make. Will take note in README.md that the project is still in development and to use with GRAVE caution lol.
Sent from my C525c using Tapatalk
---------- Post added at 03:13 PM ---------- Previous post was at 03:10 PM ----------
It's ashame I don't currently have any way to build the smali/baksmali sources from my phone.
Need to look in to it and see if any flags could optimize the final build to produce a more proficient workload in performance.
Sent from my C525c using Tapatalk
So, I am working on getting my project to work in the recovery. Looks like some troubleshooting is in store.
From my recovery.log:
Code:
about to run program [/tmp/deodex.sh] with 1 args
CANNOT LINK EXECUTABLE: could not load library "libc.so" needed by "busybox"; caused by library "libc.so" not found
CANNOT LINK EXECUTABLE: could not load library "libc.so" needed by "busybox"; caused by library "libc.so" not found
CANNOT LINK EXECUTABLE: could not load library "libc.so" needed by "busybox"; caused by library "libc.so" not found
Detected API level
CANNOT LINK EXECUTABLE: could not load library "libc.so" needed by "busybox"; caused by library "libc.so" not found
CANNOT LINK EXECUTABLE: could not load library "libc.so" needed by "sort"; caused by library "libc.so" not found
Deodexing finished
CANNOT LINK EXECUTABLE: could not load library "libc.so" needed by "busybox"; caused by library "libc.so" not found
run_program: child exited with status 1
Sent from my C525c using Tapatalk
---------- Post added at 05:33 PM ---------- Previous post was at 05:00 PM ----------
Resolved my problem. Export path for sbin was being overwritten by the script so it prevented busybox from being used. To resolve it you just need to insure that sbin is included to the path as well.
Edit: this was tested with TWRP
PHP:
export LD_LIBRARY_PATH="/sbin":"/tmp/jvm/java-7-openjdk-armhf"
Sent from my C525c using Tapatalk
:cyclop
Modding.MyMind said:
I like your idea about making a flashable zip once it is done. I have it working now.
I made a small typo which resolved my earlier problem.
I used "smalibaksmali_dir" as my variable which pointed to the smali directory.
However, later in my script I spelled 'bak' with a 'c' - smalibacksmali_dir.
I will keep you posted man. I was shocked when i found your thread because prior to I had spoken with a relative about my project and how it appeared no one had done this. Then I found you lol. Kudos for your work bro.
Sent from my C525c using Tapatalk
---------- Post added at 07:54 PM ---------- Previous post was at 06:58 PM ----------
Here is a screenshot with my personal script/project running.
Sent from my C525c using Tapatalk
Click to expand...
Click to collapse
No probs cyclops. Between family I don't get a chance to get on hereuch but that's all changing here Very soon. I really glad you're taking off where i left off. I saw that there's a GUI out now I haven't read the thread yet so not sure if it's your work or not, but I'm glad others are running with it. Beauty of open source. I rewrote a lot and published to github under GPL but unfortunately during the rewriting I broke something and haven't been back to fox it yet.
I need to as yje code is streamlined as well as being on github open where all can see and make commits. I would get on that but it seems the GUI version has taken off and this is more for legacy but who knows
I also noticed someone else had a btch deodex script published on github though no as robust but I should have borrowed off him instead of reinventing the wheel. Too bad I didn't see that until later.
Inteied my luck at multithreading the shell commands but that would require a LOT of counters keeping track of example which processes are still decompiling and which are recompiling to avoid collisions, so I lwdr it be for now. And now that the GUI is out maybe ibcan lend a hand there if needed.
Is the GUI just a command line GUI or an actual app?I'll look when done reading. If it's an actual app multithreading would be much easier and i wouldn't mind helping out on the team. If its a shell GUI like old Windows apktool versions I commend you. Takes patience to mundnely write out the interface
Either way glas there's interest and happy others with more time to devote can carry on.
@MidnightHarvester
Hello sir,
I'm trying to decompile settings.apk with apktool for android. It won't do it correctly, and I'm wondering if it's because it should be deodexed first. The only 2 I've been able to recompile are htc-resources.apk and framework-res.apk on HTC Evo 3D 4.0.3ics
That's first question, will be able to recompile settings after deodex?
I don't understand this command,
. /system/bin/bdt
bbdth-smali
Are these on one line, separate?
I'm fairly new to modding, will you help me please?
The commands listed, when pasted into terminal, errors a lot. Using SManager to run works, but what is got from it isn't a deodexed app.-
When running batch-deodex(I'm using bdt from v.1.1.0 because it throws out several errors with bdt from v.1.2.0, I haven't looked through it, so I'm not sure if it's just not echo ing them), well, first I put the settings.apk in files-to-deodex folder, create odex of it in apktool(is this right thing to do?) Settings.odex is created in same folder, then ran batch-deodex.
The exact same settings.odex is placed into files-to-baksmali. And same settings.apk is placed in deodexed-out. In the dex-out folder are same 2 files called classes.dex and Settings.dex. and in the smali-source is Settings folder with a boat load of smalis.
After it's done:
exec sh '/system/bin/batch-deodex'
in/batch-deodex' <
rm failed for -rf, No such file or directory
rm failed for -f, No such file or directory
cp: can't stat '/sdcard/BDT/files-to-deodex/*.jar': No such file or directory
rm failed for -f, No such file or directory
rm failed for -f, No such file or directory
rm failed for -f, No such file or directory
rm failed for -f, No such file or directory
rm failed for -f, No such file or directory
And here's the log
Error occured while loading boot class path files. Aborting. org.jf.util.ExceptionWithContext: Cannot locate boot class path file /system/framework/conscrypt.odex at org.jf.dexlib2.analysis.ClassPath.loadClassPathEntry(ClassPat h.java:217) at org.jf.dexlib2.analysis.ClassPath.fromClassPath(ClassPath.jav a:161) at org.jf.baksmali.baksmali.disassembleDexFile(baksmali.java:59) at org.jf.baksmali.main.main(main.java:274)
What am I doing wrong?
How do I get to having deodexed app?
Sent from above using xparent tapatalk blue
Related
First let me say thank you to:
mattahan for his artwork/icons.
dthadamaja for his buuf theme.
Cyanogen for his ROM.
Jesus Freke for his ROM.
Stericson for his guide to theme making.
Now let me warn you:
Please back up your phone before you do any updates on it. I am not responsible if you ruin your phone. I am not responsible if you destroy your computer. I am not a responsible person in general. The scripts provided are pretty simple and straightforward with no malicious design but some of them are designed to delete files and if you use it incorrectly it could delete files that you did not want to delete. And this would be terrible.
Why:
So, I wanted to get the totally bad-ass Buuf theme on 1.5r2 but ports were hard to come by. It was also IMO a nightmare to do all this crap on Linux so I set up what I believe is a nice environment/system for doing this rapidly and effectively.
Requirements:
- the shell scripts I've attached to this post
- 7zip (Ubuntu: sudo apt-get install p7zip-full)
- Java
OPTIONAL - the Android 1.5r2 SDK: http://developer.android.com/sdk/download.html?v=android-sdk-linux_x86-1.5_r2.zip
OPTIONAL - compiled signapk.jar from mydroid
OPTIONAL - testkeys from mydroid
------------
I included the last two files but if you want you can get them yourself by:
go to: http://developer.android.com/sdk/1.5_r2/installing.html and follow the Installing the SDK notes and the Ubuntu Linux Notes (or other if you do it like that).
go to: http://source.android.com/download and follow the instructions for getting the Android source. once you have it go to your mydroid directory and run: make signapk
copy mydroid/build/target/product/security/testkey.pk8 to the directory you extracted my files to
copy mydroid/build/target/product/security/testkey.x509.pem to the directory you extracted my files to
------------
Setting up the environment:
- Extract the file attached to this post to somewhere, and add that folder to your path.
e.g. if you were in ~ and you did tar xvzf theme_maker.zip you'd end up with ~/theme_maker
edit your .bashrc file and add this to your PATH, it should look like:
export PATH=$PATH:~/theme_maker
- Edit signapk, there are 3 variables at the top:
TESTKEY1=
TESTKEY2=
SIGNAPKJAR=
These should be the full path to your testkeys and JAR file. I left mine in as examples.
Now your that environment is set up, let's do this.
How to Use:
First you are going to need a template for your ROM. I am a noob but as far as I can tell most people are distributing a theme template with their ROMs. This template contains a bunch of APKs with their res/drawable directories and such.
Extract this template to theme_dest. This tree/extraction is going to be your where your theme ends up.
If you are modifying the theme extract the template again to theme_src, this will be where you source your files from.
If you are porting a theme extract the old version of the theme to theme_src. This will be your source directory for your theme.
Now you will want to clean out any non-image files so that you don't overwrite some changed XML file or what-have-you. To do this run:
Code:
clean_template theme_src
This will extract all APKs into the full tree, and then delete all non-png/jpg/gif (please let me know if Android uses others) files from the directory tree. Please be careful when doing this.
If you are modifying the theme, now you will want to modify/replace files in the theme source directory.
Now assuming your directory structures are exactly the same, you can do:
Code:
update_apks theme_src theme_dest
This will only work if you have a structure like:
./theme_src/system/app/
./theme_src/framework/
./theme_dest/system/app
./theme_dest/framework
A theme I extracted came out like:
./theme_src/system/app/
./theme_src/framework/
./theme_dest/app
./theme_dest/framework
update_apks won't break anything if the directory tree styles don't match, but it won't update the icons in the mismatched trees. To get around this, in the example above you'd do:
Code:
update_apks theme_src/system/app theme_dest/app
update_apks theme_src/framework theme_dest/framework
Now that you have updated your APKs with the new files from theme_src you will want to resign the APKs and create an update.zip for your theme.
To do this run
Code:
sign_apks theme_dest
This will recursively sign all APKs and zips in the tree.
Now run
Code:
create_update theme_dest
This will create an update.zip from the tree below and sign it.
Now copy the update.zip and load as normal.
I hope this is useful to anyone trying to streamline their theme making, I will try to update it as improvements become apparent to me. If you have any questions or ways to improve the scripts please let me know.
Thanks,
Paulo
EXAMPLE USAGE:
This is a step-by-step walkthrough of how I got the BUUF theme onto CM 3.4.4:
[email protected]:~/tmp-workspace$ ls
BUUFbrownfinal.zip template-cm-3.4-signed.zip
[email protected]:~/tmp-workspace$ mkdir theme_src theme_dest
[email protected]:~/tmp-workspace$ ls
BUUFbrownfinal.zip template-cm-3.4-signed.zip theme_dest theme_src
[email protected]:~/tmp-workspace$ cd theme_src
[email protected]:~/tmp-workspace/theme_src$ unzip ../BUUFbrownfinal.zip
Archive: ../BUUFbrownfinal.zip
inflating: yada yada yada
[email protected]:~/tmp-workspace/theme_src$ cd ..
[email protected]:~/tmp-workspace$ cd theme_dest
[email protected]:~/tmp-workspace/theme_dest$ unzip ../template-cm-3.4-signed.zip
Archive: ../template-cm-3.4-signed.zip
inflating: blah blah blah
[email protected]:~/tmp-workspace/theme_dest$ cd ..
[email protected]:~/tmp-workspace$ clean_template theme_src
Extracting APKs
blah blah blah
Deleting non-image files
blah blah blah
Deleting empty directories.
Done!
[email protected]:~/tmp-workspace$ update_apks theme_src theme_dest
updating framework-res.apk
updates not found for packages: AlarmClock.apk Browser.apk BugReport.apk Calculator.apk Calendar.apk CalendarProvider.apk Camera.apk checkin.apk Clicker.apk com.amazon.mp3.apk com.android.term.apk Contacts.apk ... MediaProvider.apk MediaUploader.apk Mms.apk Music.apk NetworkLocation.apk PackageInstaller.apk PDFViewer.apk Phone.apk QxdmLog.apk Settings.apk SettingsProvider.apk SetupWizard.apk SoundRecorder.apk SpareParts.apk Street.apk Superuser.apk SystemUpdater.apk Talk.apk TelephonyProvider.apk TmoImPlugin.apk UserDictionaryProvider.apk Vending.apk VoiceDialer.apk VoiceSearch.apk YouTube.apk
--- Here we notice a large # of APKs did not update. It's possible that the directories do not line up in this case. As we see below they don't but we can work around this.
[email protected]:~/tmp-workspace$ ls theme_src
framework system
[email protected]:~/tmp-workspace$ ls theme_dest
app framework META-INF
--- The app directory in theme_src is under system, whereas it is directly in theme_dest, so we do:
[email protected]:~/tmp-workspace$ update_apks theme_src/system theme_dest
updating AlarmClock.apk
updating everything else..
updates not found for packages: framework-res.apk ... NetworkLocation.apk PDFViewer.apk QxdmLog.apk SpareParts.apk UserDictionaryProvider.apk
--- More packages that did not update, some of these were just not included in the Buuf theme (e.g. PDFViewer) whereas others were renamed across versions (e.g. Maps became GoogleMaps.
--- In the latter case you could rename theme_src/system/app/Maps to theme_src/system/app/GoogleMaps to update correctly.
[email protected]:~/tmp-workspace$ sign_apks theme_dest
signing framework-res.apk
signing all that other stuff..
[email protected]:~/tmp-workspace$ create_update theme_dest
creating update.zip
signing update.zip
done.
[email protected]:~/tmp-workspace$
You would now have a signed file theme_dest/update.zip with your theme applied to the template provided. At this point you can apply the theme to your mobile and see how it came out. In my case I noticed the GoogleTalk icon did not update and the IM icon was not the one I wanted, so I did this:
[email protected]:~/tmp-workspace$ mkdir theme_test
[email protected]:~/tmp-workspace$ cd theme_test
[email protected]:~/tmp-workspace/theme_test$ unzip ../template-cm-3.4-signed.zip
[email protected]:~/tmp-workspace/theme_test$ cd ..
[email protected]:~/tmp-workspace$ ls
BUUFbrownfinal.zip template-cm-3.4-signed.zip theme_dest theme_src theme_test
[email protected]:~/tmp-workspace$ clean_template theme_test
Now I have a directory theme_test with the fully extracted template, I can go browse the drawable directories in there and see what file names have changed or what file locations are different. For example one of the icons that used to be provided by IM was now provided by ImProvider, so I modified the theme_src files to match the template & updated my APKs again.
Sweet Script
Gonna try it!
I forgot to include the signing stuff in the original post, here it is.
You are a saving grace!
I'm on Xubuntu 9.04 and have been rolling around the idea of compiling a theme for the last week or so. This will make everything SO much easier. Thank you!
Will try later this week and get back to you with the results.
Rock on dude! This is exactly what I was looking for...and coincidentally you ported the same theme I'm interested in. I hate to sound like a lazy mooch, but think maybe you could post your update.zip? That is if it would work for JF 1.51.
4hed517 said:
Rock on dude! This is exactly what I was looking for...and coincidentally you ported the same theme I'm interested in. I hate to sound like a lazy mooch, but think maybe you could post your update.zip? That is if it would work for JF 1.51.
Click to expand...
Click to collapse
+1
Me to a bit lazy today
legend, I am off school now, so I am going to try and implement this. Thanks
I appreciate this... I hate booting into windows just to create/sign apk/themes/zip. this makes it easy have tested parts of it not an entire theme yet. Awesome work
Huge amount of work on your part, I'd like to maybe give this a go once I get a new template to work on...
error
I keep getting this when I try to do the apply sdcard : update.zip
"veryfing update package...
E:Wrong digest:
framework/framework-res.apk
E:Verification failed
Installation aborted."
kyleds said:
I keep getting this when I try to do the apply sdcard : update.zip
"veryfing update package...
E:Wrong digest:
framework/framework-res.apk
E:Verification failed
Installation aborted."
Click to expand...
Click to collapse
You aren't signing. Something isn't happening correctly for you.
What type of environment are you attempting to make your signing in?
4hed517 said:
Rock on dude! This is exactly what I was looking for...and coincidentally you ported the same theme I'm interested in. I hate to sound like a lazy mooch, but think maybe you could post your update.zip? That is if it would work for JF 1.51.
Click to expand...
Click to collapse
Hey, is there a JF 1.51 theme template? If there is I can make the update.zip but if not I would recommend to create it yourself. If there isn't a template the update.zip will contain the theme (icons, etc) and also all the applications.
In theory I believe someone could create a update.zip with malicious applications in addition to a theme you wanted, and you'd be installing their malicious apps over yours when you installed the theme.
Sorry I haven't kept up with this thread recently, I will keep checking it but if anyone needs anything urgently or finds an issue with the scripts please feel free to PM me & I will respond more quickly.
ported dthadamaja's Buuf 1.5 to CyanogenMod 4.0.1:
NOTE: this is a blind port (i.e. didn't fix any mixups)
I had template-cm-4.0.1-signed.zip and buuf3910.zip one directory below the workspace.
$ mkdir buuf-cm buuf-src buuf-src2
$ cd buuf-cm
$ unzip ../../template-cm-4.0.1-signed.zip
$ cd ..
$ cd buuf-src
$ unzip ../../template-cm-4.0.1-signed.zip
$ cd ..
$ cd buuf-src2
$ unzip ../../buuf3910.zip
$ cd ..
$ clean_template buuf-src
$ clean_template buuf-src2
$ cp -R buuf-src2/* buuf-src
$ update_apks buuf-src buuf-cm
$ sign_apks buuf-cm
$ create_update buuf-cm
You can get the update.zip I made here or redo this on your own machine:
http://rapidshare.com/files/268789905/update.zip
Thanks again to dthadamaja for his great theme and Cyanogen for his great mod!
I made this guide because I've found that a lot of us doesn't satisfied with our current custom ROM. Please don't bully the dev to make a rom with our personal preference. You may follow this guide instead to modify the custom rom to suit with your personal taste. I hope I could make it as simple as possible so all of us so even a new android user could understand. Please make sure you've read this guide throughly before make any modification.
Please note that this is just a simple guide. You won't find any guide about theming a rom here. Please refer to another guide about uot kitchen or apk modification.
Click to expand...
Click to collapse
tools:
1. a custom rom (to be customized) or stock rom.
2. 7zip or another similar program
3. apk files
4. dsixda kitchen (not mandatory)
5. apktools (not mandatory)
6. titanium backup (not mandatory)
7. CWM.
First of all, extract your custom rom. You'll see that the custom rom's zip file contain several files and folders. Some of them are common and could be find in almost all custom rom. The files and folders are:
1. meta-inf : contain the script needed to install the rom (don't touch it if you don't understand about scripting nor dsixdia kitchen).
2. system : contain the system files and folder of the custom rom
3. boot.img : the kernel used in the custom rom
4. additional file : (eg:install-busybox, check-data and bmlunlock) additional file contain scripts needed to install additional feature (eg: busybox, additional app in data/app, and install custom kernel) in the custom rom.
NOTE: you can start from either stock or custom rom. If you start from stock rom, use CWM to make nandroid backup, then extract the system.rfs.tar. That's the system folder that we need later. You'll need installer script from other custom rom to make your rom installable to other device. In my past experience, the script form hybrid 2.1 or myss 3.4 is easy to use. I'd like suggest use them if you only want a light customization (without custom kernel, init.d script, or a2sd support.)
Click to expand...
Click to collapse
If you don't know much about them, don't touch anything but system folder. now, open the the system folder. You'll see a lot of folders and some common files. Leave CSC files and SWconfiguration intact if you don't know about them. You can edit build.prop to insert more build.prop setting or modify the content if you understand how to do it. To change the rom's name, edit the value for 'ro.build.display.id'. You may also change the value for 'ro.build.version.release' to any number like 9.9.9 if you want to show off your modified custom rom
I'll give a quick explanation about the folders in /system.
1. app : contain all the system's app
2. bin : contain the command and bin files for the rom (don't touch it)
3. cameradata : camera files
4. csc : csc files. contain dictionary for the keyboard
5. etc : additional setting and files for the rom
6. font : the fonts
7. framework : system's framework
8. lib : drivers, modules, kernel related files for the rom
9. media : media files-ringtones, notification
10. sd : folder created by a2sd darktremor. (don't touch it)
11. usr : files needed for keyboard, bluetooth, etc.
12. xbin : additional command and bin files (busybox is normally installed here)(don't touch it)
13. T9DB: dictionary and language database for swype and stock keyboard
NOTE: if you start from stock rom, copy all the files under /system folder (the one from system.rfs.tar) except /system/bin and system/xbin. don't touch them.
Click to expand...
Click to collapse
now, you're ready to customize the rom. I'll divide the guide into several section. pass the section if you don't want to modify it.
>>> SYSTEM APP-CUSTOMIZATION <<<
Click to expand...
Click to collapse
DEODEX VS ODEXED ROM. Most of custom rom available is deodexed rom while our stock rom is half deodexed rom. I'll try to explain it in most simple way. First of all, we should understand that mostly every app in android consist of three part, *apk files, *dex/odex files, and lib files.
ODEXED rom means that *dex file needed to run the app is extracted from the apk file and placed in same folder with the apk files (/system/app). the positive side, it consume less internal memory and a execute faster. the negative side, it makes the app uncostumizable (cannot apply custom themes) and need more space in system partition.
DEODEXED rom means that *dex file needed to run the app is extracted from the apk file and placed in /data/dalvik-cache. the positive side, the app can be themed (full customizable) and consume less system partition. we could put more app in /system/app in deodexed rom. the negative side, it consume a lot of internal memory. please be cautious with the internal memory space if you use deodexed rom. (NOTE: if you start from stock rom, you may use dsixdia to convert odexed to deodexed rom).
system app customization is easy. you can add or remove any app in /system/app folder as long as it fit with the space in sistem partition (220MB). if you start from stock rom, please be cautious to not remove essential app from the folder. you may see the app in hybrid rom v.2.1 to see which app is safe to remove or not (the spreadsheet document in this forum is gone. sorry). having ~20mb free space in system partition is a good thing if you want to make the rom more customizable.
NOTE:
1. not all apk could be placed in /system/app (especially keyboard app)
2. tw launcher file is named tw'xxxxx'launcher.apk. you may remove it if you have another launcher.
3. not all custom launcerh could be placed in /system/app. you may put the launcher from other custom rom to minimalize the risk.
4. for the app info reference, please refer to this link
https://docs.google.com/spreadsheet/pub?key=0AulpDQBL_oTOdDRIbnV5b0UyQTd0TDNZSFBKYXJ1blE&output=html
if anyone want to edit it please contact me.
Click to expand...
Click to collapse
>>> THEME-CUSTOMIZATION <<<
Click to expand...
Click to collapse
Basicly, theme is easily changed by replacing systemUI.apk in /system/app and framework-res.apk in /system/framework. You may put theme from another custom rom or make for yourself from uot kitchen or make it by yourself with apktool. A high modified theme like dysmenorrhea is also modify some part in setting.apk and jobmanager.apk. and another app. Don't forget to delete the *odex file (for all changed app only)from /system/app if you start from stock rom.
NOTE: please be aware with the base firmware of the rom. make sure that systemUI.apk and framework-res.apk files are from exact firmware version. I've found that theme for DXLA, DXLB, DXLC are exchangeable but you can't put theme from DXKL2 to DXLA or the reverse. to minimize any risk, please use themes only from exact same firmware.
>>> PERFORMANCE-TUNING <<<
Click to expand...
Click to collapse
Performance tuning could be done in several ways. the easiest (proven works but risky) method is by edit build.prop file. I won't give you all the script. Feel free to search and apply the script with your personal preference. you can found in this forum or just copy from another rom. these script below is used to increase gprs/hsxdpa speed. this script is a common script and proven to be works in a lot of device. (I forgot the original source. sorry)
Code:
ro.ril.enable.dtm=1
ro.ril.gprsclass=10
ro.ril.hep=1
ro.ril.enable.3g.prefix=1
ro.ril.hsdpa.category=8
ro.ril.hsupa.category=6
ro.ril.hsxpa=2
ro.ril.enable.a53=1
there are also some common tweaks for build.prop file. these are the one I always using in my rom.
Code:
#mod battery kats
debug.performance.tuning=1
pm.sleep_mode=1
video.accelerate.hw=1
windowsmgr.max_events_per_sec=150
ro.ril.disable.power.collapse=1
wifi.supplicant_scan_interval=150
#mod performance
dalvik.vm.execution-mode=int:jit
persist.sys.purgeable_assets=1
dalvik.vm.dexopt-flags=m=y
ro.media.enc.jpeg.quality=100
ro.telephony.call_ring.delay=0
video.accelerate.hw=1
ro.kernel.android.checkjni=0
ro.HOME_APP_ADJ=1
======
the second way, (little bit harder, but its still proven works) by create or modify some file in /system/etc. I'll give you some of them.
1. sysctl script-to increase internet speed.
make a new file in system/etc, name it 'sysctl.conf' (or edit if it already exist). put this script inside.
Code:
net.ipv4.tcp_wmem = 4096 39000 187000
net.ipv4.tcp_rmem = 4096 39000 187000
net.ipv4.tcp_mem = 187000 187000 187000
net.ipv4.tcp_rfc1337 = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_ecn = 0
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.route.flush = 1
net.ipv4.ip_no_pmtu_disc = 0
net.core.rmem_default = 524288
net.core.rmem_max = 524288
net.core.wmem_default = 524288
net.core.wmem_max = 524288
its a common sysctl mod for linux based OS (I found it in another mod for another device but I forgot the source). you'll need busybox, and terminal emulator. to run it, type:
'su
'sysctl -p
in your terminal emulator (without ' symbol).
2. GPS mod-to make the GPS lock faster
this mod is based on zeusseuz's guide. please see this page for further information (the script is quite long) http://forum.xda-developers.com/showthread.php?t=1552076
======
the last way...by init.d script. it only works in custom kernel. I won't put any script here. you should find by yourself. you can use make a file in init.d with there script to check if your kernel support init.d script.
Code:
#!system/bin/sh
touch data/kurotsugi_test.txt
set the both init.d folder and the file's permission to rwxrwxrwx (777)
if the script work, you'll find kurotsugi_test.txt in /data.
======
>>> ADDITIONAL CUSTOMIZATION <<<
Click to expand...
Click to collapse
I'll only put the one I've tested and proven to be works.
1. beats audio
this is the old version but doesn't have FC issue. get the file from here http://forum.xda-developers.com/showthread.php?t=1526643
unzip. copy all the files into their respective folder
2. bravia engine
put be_photo and be_movie in system/etc folder then edit the build.prop file doesn't seems work. The real bravia engine mod is consist of
- be_photo, be_movie in /system/etc
- com.sonyericsson.android.SwIqiBmp.xml in /system/etc/permission
- com.sonyericsson.android.SwIqiBmp.jar in /system/framework
my megabassbeat mod contain these files. you can get it from there.
3. boot animation
download or get custom boot animation file from another custom rom or another source. rename it to bootanimation.zip, put it on /system/media.
you may check this out http://forum.xda-developers.com/showthread.php?t=1548479
please note that DXLB rom doesn't support bootanimation. you need to put bootanimation and samsungani files from another rom (like hybrid) in /system/bin and replace all file in /system/lib with lib files from older firmware (DXLA or older)
4. boot sound
make or download boot sound. please make sure the format is *ogg. rename it to poweron.ogg then put it in /system/etc.
5. custom ringtones, notification,
make or download the sound file (in ogg format). put it in /system/media/audio/(respective folder)
6. disable boot animation (for quick boot)
put 'debug.sf.nobootanimation=1' in build.prop.
7. megabassbeats (better than beat bass)
you can get the file from this link http://forum.xda-developers.com/showthread.php?t=1646406. you'll need to copy the files into its respective folder.
If you've done with the customization, enter the custom rom folder. select all the files then create zip file. to install the rom, copy to your sdcard, flash it either by stock recovery or CWM after wipe /data. PLEASE MAKE SURE THAT ALL THE FILES DOESN'T EXCEED THE LIMIT 220MB BEFORE ZIPPED.
This guide can be used if you want to make your own rom. if you start from stock rom, you may use this script (its from myss v.3.4) to install the rom. please make note that it will only install the rom, not the kernel. you'll still need the bin and xbin folder from custom roms in order to make it work.
http://www.mediafire.com/download.php?skw1ytt37mklb4o
DISCLAIMER:
1. do it with your own risk
2. please note that NOT ALL YOUR MODIFICATION WILL WORK. ROM modification is seriously hard thing. its not easy. thats why we should give the dev proper respect to them. you'll need a lot of research to make it work.
3. this guide is made for personal use only. don't publish the customized rom without permission from the original dev.
Click to expand...
Click to collapse
All credits for the dev who make the rom, the one I've used the guide here, and all XDA member. no need to say thanks or press it for me. give that to the real dev. I'm just a noob here. Feel free to correct me if I'm wrong.
ADDITION STUFFS
==============
Click to expand...
Click to collapse
1. dualboot
this mod actual intent is to make developing a rom a lot more easier without risking our native rom. I was using it a lot when customizing my rom. you can get the original link for dualboot here: http://forum.xda-developers.com/showthread.php?t=1598803 and for a little more detailed step how to use it http://forum.xda-developers.com/showthread.php?t=1600973.
you can find another dualboot kernel here. http://www.mediafire.com/download.php?gkb33aktyf7wbbh
this one have init.d support. all credits goes to irfanbagus
2. data2sd
this mod is used to increase data partition size. you can find the complete guide here http://forum.xda-developers.com/showthread.php?t=1622052
Noob guide: Light theming
just for addition...this guide is only about change minor aspect in your theme. please don't expect any hard modification. we'll only change some of the picture used by the app.
what you need:
1. 7zip
2. any graphic editor program
3. systemUI.apk and framework-res.apk
the steps:
1. extract both apk files
2. open /res/drawable-ldpi. you'll see the graphic files used by the app.
3. replace any graphic files with yours. please make sure the resolution size and the name are same.
4. open the apk file. right klik>7zip>open archive
5. drag n drop /res folder (from the extracted one) to 7zip.
6. push it to your rom
7. cross your finger...reboot your device.
IF YOU WANT TO CHANGE THE SETTING BACKGROUND, CHECK THIS LINK.
http://forum.xda-developers.com/showpost.php?p=25061115&postcount=90
it's a tranlated version of this post:http://www.kaskus.us/showpost.php?p=649687134&postcount=5784
all credits for heriawan.fx who make the original post.
m only translated it and post it to here.
CAUTION:
some user have found that this background setting mod cause a problem in deskclock.apk. if this happen, you can replace the deskclock.apk with this one http://www.mediafire.com/download.php?w5vchbdyj2k9837
please delete deskclock.odex if you're using a stock odexed rom.
Click to expand...
Click to collapse
NOTE:
- don't forget to make backup
- you may use the files attached in this post to push the file into your ROM. put systemUI in app and framework in framework.
here are some pic from my customized rom. its an odexed rom with a slight customized repencis v.2.5 theme.
{
"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"
}
the launcher is downloadable here
http://forum.xda-developers.com/showthread.php?t=1596280
Hmm, gonna read this later. It's a wall of text on phone lol. Hope I don't forget.
Anyway thumbs up for the effort.
Sent from my GT-S5360 using xda premium
reserved
good work dude
have done a lot of homework lol
excellent work bro !!
very informative.....really appreciate your work
thanks alot .
Wonderful thread. Can you give tutorials on how to recompile framework-res.apk with apktools? I always end up with lots of warnings regarding translations and end up with an apk which is about half the size as the original. And lots of force closes once it is pushed
Sent from my GT-S5360 using Tapatalk
bumslayer said:
Wonderful thread. Can you give tutorials on how to recompile framework-res.apk with apktools? I always end up with lots of warnings regarding translations and end up with an apk which is about half the size as the original. And lots of force closes once it is pushed
Sent from my GT-S5360 using Tapatalk
Click to expand...
Click to collapse
Sorry...I'm just a chemistry student and consider my self as a noob here. I never use apktool before and only use 7zip, notepadd++ and simpel graphic editor program to modify an apk files (only light theming). its a lot of simpler and easy for a mid user like me.
you may follow this guide instead
http://forum.xda-developers.com/showthread.php?t=1466100
Noted bro. I already took a peek at the link you gave. Thanks anyway.
Sent from my GT-S5360 using Tapatalk
bumslayer said:
Wonderful thread. Can you give tutorials on how to recompile framework-res.apk with apktools? I always end up with lots of warnings regarding translations and end up with an apk which is about half the size as the original. And lots of force closes once it is pushed
Sent from my GT-S5360 using Tapatalk
Click to expand...
Click to collapse
hey
I can provide you the tutorial for framework and system ui apks
with apktool for sgy
I think you are trying to make your themes
if that is I will provide the tutorial tommorow
if you need it
why don't you PM repencis? the setting.apk in repencis v3 changed a lot from the original one. I thought he could help you.
EDIT: thedeadlycoder seems already have the solution for you
Hahaha indeed he does! @deadlycoder I am anticipating your pm soon
Sent from my GT-S5360 using Tapatalk
I think I'll put a light theming tutorial in my reserved post...
Thanks for saving us dude! You rawk!
Sent from my AURORA ULTRA GT-S5360 through XDA Premium Customized by Androhacker Xavier
Very useful thread.Thanks
How can i confirm my init.d is working?is there any specific command for terminal emu :
su
init.d check (myb?) or with init.rc etc installed would be enough to prove it is working?
previously i tried init d-autorun-stock to my stock rom but not confident with tht method.Found [Script] init.d for STOCK ROM thread n member report its worked.
Thanks in adv.
thats a good question. please note that some of init.d script doesn't work in our device even if the script is running. stamatis's battery n performance script is one example. because of some script in init.rc (in kernel) it never change the value for RAM setting. to check the init.d script you may make a new file in init.d script. name it stest, put these script
\system\etc\init.d\99test
#!/system/bin/sh
touch /data/local/tmp/init.d_log_test.txt
echo "done" >> /data/local/tmp/init.d_log_test.txt
these script is made by doky73. if the init.d script works, you'll find 'init.d_log_test.txt' file in /data/local/tmp/ . init.d scipts need busybox don't forget to install it in your device
Kurotsugi
What is the correct permission for 99test?is it same like the others=777?
no problem if i change through root explore right?my device deny the latest version
of busybox 19.4 is this due to old su binary?19.3 will do right?
yup...thats fine. as long as the system could read it, the script will run at boot (if only it really support init.d scipt). any busybox version is OK as long as you have the binary files needed (in this case echo and touch). in my past experience, only vivek's kernel proved to support init.d script. I forgot the version. but its the last version without CWM integration.
kurotsugi said:
only vivek's kernel proved to support init.d script.
Click to expand...
Click to collapse
Kurotsugi..Thank u so much.I agree with u.Init.d script will only work with some kernel only.It is kernel dependent.My 1st attempt with stock kernel failed then
i change with stock kernel modify by blooper1 and succeed..Are u really a chemist
student ...Today is my off day n im gonna create all ur provided script.Thanks
again..
well...thanks for everyone here and this forum which help me learned a lot of stuff about android much faster. sgy is my first android device and I've only been using it for three months. with everyone help and information here I could make my own custom rom about one month ago. it sure nice to share about our sgy here :3
Wow! This seems really helpful and very useful thread. It gives me an eye opener.. Thanks!
This CWM script will reodex any custom ROM.
With BOOTCLASSPATH edit in dexo.sh it can work on any ROM and phone.
Reodexing gives some people perceivable speed up. And it frees data partition from system dalvik cache. So dalvik-cache rebuild is also accelerated.
I ran it with stock kernel (root injected). And had problems with running it on any custom kernel.
http://galaxytree.net/bravomail/universalOdex.zip
Also a good example of output from shell script into CWM console.
{
"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"
}
This is the work of the brilliant TommyTomatoe
strongsteve said:
This is the work of the brilliant TommyTomatoe
Click to expand...
Click to collapse
That it is, and he should prolly be credited in the 50 threads that this fellar started
Sent from my SPH-L710 using xda premium
Awesome.
Anyway to run this from ADB via PC for individul files rather than a whole ROM? I have been doing it manualy with this same script from TT but it takes a while typing it all in for each file.
This is what i do for individual files using dexopt wrapper:
Make sure you are currently runing an odex ROM or the script will not work
Move the dexopt wrapper file to /system/bin and cmod it 775 (you can get this file by unzipping the file in the OP)
move the files you want to odex to /mnt/extSdCard (for this exanple I will use SystemUI.apk)
Open an ADB window and type the following:
Code:
adb shell
su
mount -o remount,rw /system
chmod 777 /system
cd /mnt/extSdCard
dexopt-wrapper SystemUI.apk SystemUI.odex /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar
:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/android.policy.jar:/system/framework
/services.jar:/system/framework/apache-xml.jar:/system/framework/filterfw.jar:/system/framework/sec_edm.jar:/system/fram
ework/seccamera.jar
It will take a couple secoonds and it should spit out a "success" when done. If not, you typed something wrong.
Then you need to sign your new .odex file with the odex on your current system by typing the following code:
Code:
busybox dd if=/system/app/SystemUI.odex of=SystemUI.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
obviuosly if you were dealing with a file from say /system/framework you would change the line above to point to /system/framework instead of /system/app
Now you will have 2 files on your extSdCard:
SystemUI.apk (the original deodexed file you started with)
SystemUI.odex (the file the script just made)
Use 7zip or winrar to extract the classes.dex from the SystemUI.apk
Chmod them 644 and push them to the appropriate folder, for our example it would be /system/app
restart the phone and you should now be good.
Thats a lot of typing to go through for each file so a script or batch file would be awesome to be able to run and save some time. I like to run odex ROMs because they do seem to be faster but YRMV. I generally use DSIXDA's Kitchen to deodex the files I want to modify so I can get to the Smali files. I make the changes to the file and test them out in a dedoxed enviornment. When I know they work, i re-odex them (with the process above) and push them back into my stock odexed rom.
Not trying to step on your thread OP, just posting an alternate method of doing just individual files intead on an entire ROM.
Obviously credit for the process above goes to Tommy T!
ThanksTommy!
Didact74 said:
Awesome.
Anyway to run this from ADB via PC for individul files rather than a whole ROM? I have been doing it manualy with this same script from TT but it takes a while typing it all in for each file.
This is what i do for individual files using dexopt wrapper:
Make sure you are currently runing an odex ROM or the script will not work
Move the dexopt wrapper file to /system/bin and cmod it 775 (you can get this file by unzipping the file in the OP)
move the files you want to odex to /mnt/extSdCard (for this exanple I will use SystemUI.apk)
Open an ADB window and type the following:
Code:
adb shell
su
mount -o remount,rw /system
chmod 777 /system
cd /mnt/extSdCard
dexopt-wrapper SystemUI.apk SystemUI.odex /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar
:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/android.policy.jar:/system/framework
/services.jar:/system/framework/apache-xml.jar:/system/framework/filterfw.jar:/system/framework/sec_edm.jar:/system/fram
ework/seccamera.jar
It will take a couple secoonds and it should spit out a "success" when done. If not, you typed something wrong.
Then you need to sign your new .odex file with the odex on your current system by typing the following code:
Code:
busybox dd if=/system/app/SystemUI.odex of=SystemUI.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
obviuosly if you were dealing with a file from say /system/framework you would change the line above to point to /system/framework instead of /system/app
Now you will have 2 files on your extSdCard:
SystemUI.apk (the original deodexed file you started with)
SystemUI.odex (the file the script just made)
Use 7zip or winrar to extract the classes.dex from the SystemUI.apk
Chmod them 644 and push them to the appropriate folder, for our example it would be /system/app
restart the phone and you should now be good.
Thats a lot of typing to go through for each file so a script or batch file would be awesome to be able to run and save some time. I like to run odex ROMs because they do seem to be faster but YRMV. I generally use DSIXDA's Kitchen to deodex the files I want to modify so I can get to the Smali files. I make the changes to the file and test them out in a dedoxed enviornment. When I know they work, i re-odex them (with the process above) and push them back into my stock odexed rom.
Not trying to step on your thread OP, just posting an alternate method of doing just individual files intead on an entire ROM.
Obviously credit for the process above goes to Tommy T!
ThanksTommy!
Click to expand...
Click to collapse
That's exactly what I do as well.. I just baksmali the odex when I need to edit the smali.
If you are already in the odexed rom environment, you do not have to include the bootclasspath
Awesome bro, simply awesome! I used a similar script during my brief EVO 3D days that I always ran after flashing a new rom and I considered it priceless!
Thanks man..
strongsteve said:
If you are already in the odexed rom environment, you do not have to include the bootclasspath
Click to expand...
Click to collapse
What?!? I been typing all that for nothing? LOL.
So all i would need is:
dexopt-wrapper SystemUI.apk SystemUI.odex
Didact74 said:
What?!? I been typing all that for nothing? LOL.
So all i would need is:
dexopt-wrapper SystemUI.apk SystemUI.odex
Click to expand...
Click to collapse
Dextopt-wrapper sdcard/folder/app.apk sdcard/folder/app.odex
Sent from my SPH-L710 using xda premium
strongsteve said:
Dextopt-wrapper sdcard/folder/app.apk sdcard/folder/app.odex
Sent from my SPH-L710 using xda premium
Click to expand...
Click to collapse
Sweet.
Thanks man.
Strongsteve is the king of odex. Lol.
Sent from my Nexus S 4G using xda premium
So i flashed the zip on sonic free. how can i tell if the rom is now odexed?
Flashing zips in rehab!!
Holy cow amigo. You started a bunch of threads. A little credit to original author would have been nice if you took the work and revamped it. All credit cause you didn't.
Sharing is caring. But I suggest you put where you got the script, etc, as well as the original author.
edit. upon further review, i see that you did change some things, mainly removing the original header (which is absolutely lame) and made it work with CWM. Also, you set a static BOOTCLASSPATH - which defeats the purpose of this script!!
Let me check my pms and emails. Someone contacted me a long time ago asking me review to their changes. Maybe it was you lol.
Sent from my EVO using Tapatalk 2
tommytomatoe said:
Holy cow amigo. You started a bunch of threads. A little credit to original author would have been nice if you took the work and revamped it. All credit cause you didn't.
Sharing is caring. But I suggest you put where you got the script, etc, as well as the original author.
edit. upon further review, i see that you did change some things, mainly removing the original header (which is absolutely lame) and made it work with CWM. Also, you set a static BOOTCLASSPATH - which defeats the purpose of this script!!
Let me check my pms and emails. Someone contacted me a long time ago asking me review to their changes. Maybe it was you lol.
Sent from my EVO using Tapatalk 2
Click to expand...
Click to collapse
Tommy I miss your classic tomato over here! I know you got an HTC lte so I'm guessing we won't be seeing any roms from you here but one can only hope
-Sprint Galaxy Slll_Transformer Prime-
manso1102 said:
Tommy I miss your classic tomato over here! I know you got an HTC lte so I'm guessing we won't be seeing any roms from you here but one can only hope
-Sprint Galaxy Slll_Transformer Prime-
Click to expand...
Click to collapse
Haha thanks. Yeah I'm over here on HTC. Taking a long extended break from Android. Things have changed since I last did anything
Sent from my EVO using Tapatalk 2
tommytomatoe said:
Holy cow amigo. You started a bunch of threads. A little credit to original author would have been nice if you took the work and revamped it. All credit cause you didn't.
Sharing is caring. But I suggest you put where you got the script, etc, as well as the original author.
edit. upon further review, i see that you did change some things, mainly removing the original header (which is absolutely lame) and made it work with CWM. Also, you set a static BOOTCLASSPATH - which defeats the purpose of this script!!
Let me check my pms and emails. Someone contacted me a long time ago asking me review to their changes. Maybe it was you lol.
Sent from my EVO using Tapatalk 2
Click to expand...
Click to collapse
LOL.. Tell it like it is Tommy.
Tommy can u fix this script then for us since he set a static boot class path?
Sent from Galaxy SIII
musclehead84 said:
Tommy can u fix this script then for us since he set a static boot class path?
Sent from Galaxy SIII
Click to expand...
Click to collapse
http://classictomatoe.net/dexo-universal-odex-tool
Edit. Original thread. http://themikmik.com/showthread.php?t=12988
Sent from my EVO using Tapatalk 2
Made by pepcisko!!! I just wanted to post this here for those of you who have forgotten about the V6 Supercharger!
Original post here! Go hit the thanks button for him!
======================================================================
Contents
Patcher Information - Post 1 (this post)
[*]Simplified Tutorial - Post 2http://forum.xda-developers.com/showpost.php?p=31917581&postcount=2
[*]Download/Changelog - Post 3
======================================================================
----------------------------------------------------------------------------------------------------------------------------------------------
I hate that Zeppelinrox's thread is being cluttered with OT questions about this.. so opening a new thread. Please post any JellyScreamPatcher.exe questions here. Thanks.
----------------------------------------------------------------------------------------------------------------------------------------------
[experimental] Windows tool for patching services.jar for V6 SuperCharger
Opening note: When replying to this post, please do not quote it!!! Or quote selectively.
For each fully quoted reply a puppy will die somewhere in the world. If you love puppies as much as I do, you'll stop quoting long posts.. thank you
----------------------------------------------------------------------------------------------------------------------------------------------
Code:
#include <std_disclaimer.h>
/*
* Your warranty is now void.. LOL I guess you knew it already.
*
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because your phone bootloops. Please
* do some research if you have any concerns about features included in my utility
* before using it! YOU and only YOU are choosing to make these modifications.
* I'm providing no ETA's, though usually I'm responding PM's in a timely manner ;)
*
* While the tool provides some backup functionality, allowing you to roll back to
* a working system, feel free to create a nandroid backup trying this ;)
*
*/
For downloads and changelog, see Post #2
----------------------------------------------------------------------------------------------------------------------------------------------
Preface:
Many of us V6 Supercharger users have been flashing nightlies nightly and dailies daily, resulting in the need for a patched services.jar almost daily since the automatic web patcher no longer works for Android 4.1.1 Jellybean files, we had to stick with manually patching this files as described in Zep's guide here. Eventually Zep prepared several versions of the Jelly_Scream_Smali_Patcher_Test_x.sh script, which does the job perfectly, but the user still has to get his services.jar, extract the .smali files, put them to the phone, put the script to the phone, run it in the phone's terminal, copy the patched .smali files back to the PC etc. etc. and for many of us, this is time consuming (and difficult for others). Time is money, right?
Currently, this tool is using a ported version of the ALL_ROMS_Ultimate_Jar_Power_Tools-Jelly_ISCream+Maximum_MultiTasking_Mods-Smali_Patcher_Test_11.sh script for patching.
So... here an automated workflow, which assumes a few things:
you are running a MS Windows operating system (tested on Win7 x64)
you have Java installed. This was tested with Java7, should run fine on Java 6 as well. In the Q&A section below I provide a link to download Java. Make sure that java.exe is accessible from any folder (is in PATH). Java 7 installs the binaries into the windows/system32 folder, so I hope you have that folder in your PATH. If not, just google how to add a folder to the PATH, there are many tutorials on the web.
[optional] you know how to connect your phone to the PC via USB
[optional] you have ADB drivers installed (either via Android SDK or from your phone's manufacturer)
[optional] you know how to enable USB debugging in your phone and did that
[optional] the USB connection mode is NOT "mass storage" (for the online mode) - please set it to "Charge only" or "None" (varies from device to device)
How to patch the services.jar file
The following assumes you have a "stock" (or unchanged) services.jar in your phone's ROM or in my tool's framework subfolder .
Note: The current version should still be considered as beta-release. While it works for me (most of the computer stuff works when I'm near it, my family has been puzzled about this since long ago.. LOL), it may not work for you. Please report any bugs you find (thread, PM) and I'll be happy to fix them. Although I inserted many "hit the Enter" prompts into the tool, it's always good to run the tool from a console so that you can keep the output in case you flash through the workflow too fast
Also, the tool maintains an activity.log file where it flushes messages about what's happening. If you encounter a bug, send me this file. Please do not copy/paste the log contents into the thread!!! Attach it. Or upload to any cloud service and send me the public URL.
Click to expand...
Click to collapse
Tip: When running the tool, feel free to enlarge the command prompt window vertically
Click to expand...
Click to collapse
After running the tool and passing the initial screen, you will be presented with a choice between online and offline mode.
Online mode
Online mode assumes that the phone is connected via USB. In this mode, the tool can pull all the information from the phone. Not only the files, but system variables, as well as some debug info (e.g. is the ROM odexed?)
Connect the phone via USB
Enable connection mode "Charge only" or "None". This won't work, if the phone is in "Mass Storage" mode!
Sit back and enjoy (and don't forget to answer the tool's questions!)
After patching there will be a warm reboot
Offline mode
Offline mode means, that there will be no interaction of the tool with the phone via USB. You need to do all the file transfers and in case of odexed ROMs, the final in-phone patching, manually. Also you will have to enter some other information into the tool manually.
make sure to copy your /system/framework/services.jar to the tool's framework folder. If you have an odexed ROM (e.g. stock), copy the whole /system/framework folder contents to the tool's framework folder.
make sure to know your system's version because the tool will ask for it
make sure to know your BOOTCLASSPATH variable. It can be pulled from the phone using the command
Code:
adb.exe set | grep BOOTCLASSPATH
make sure you know if the ROM is odexed or not
After patching, you will need to transfer the patched files to the phone and perform manual patching/replacement:
Odexed ROM:
For odexed ROMs, there is some more patching required that you can do in the phone.
copy services.jar from the 'dist' folder to the sdcard
copy 'dexopt-wrapper' from the 'odex' folder to the sdcard
copy 'dexopt-wrapper.sh' from the 'scripts' folder to the sdcard
Make sure they are in the card's root folder !!
In the phone, open Script Manager or any other app that can run shell scripts with superuser rights.
Open the app, run the dexopt-wrapper.sh script. A warm reboot may occur, since the script will restart the framework
Reboot to recovery, Clean Cache, Clean Dalvik Cache
That's it
Deodexed ROM:
update-signed.zip in the dist folder
Copy this file to your sdcard, then reboot to cwm recovery and install it from there. Then do a Dalvik Cache wipe, Cache wipe and reboot.
services.jar in the dist folder
You can copy this file to phone's /system/framework folder and replace the existing one. Make sure that the new file will have owner/group 'root' and permissions 644. Then reboot to recovery, clean Cache & Dalvik Cache.
Rollback
In case something goes wrong, there should be a message about that in the activity.log file.
Feel free to send this file to me - either attach (not paste!!!) the file to a post in this thread, or upload it to any of the cloud services and tell me the URL. I'll take a look.
Before patching, the tool creates backup of the files as a CWM recovery compatible update.zip file. It will sit in the backup folder. This is your way back to a working system. Of course, you can do a nandroid backup..
So what is the tool actually doing?
Very easy to explain.
it pulls the services.jar (and odex files if needed) from your phone to the working folder (or takes an existing one that you put into the folder)
it uses the baksmali.jar to decompile the services.jar/odex
creates a backup of the unchanged files
it runs a ported perl version (and compiled to exe) of Zeppelinrox's JellyScream patcher script (v6) to patch the .smali files
it uses smali.jar to compile the new classes.dex
inserts the new classes.dex back to the services.jar
[optionally] it pushes the new services.jar back to the phone
[optionally] for ODEXed ROMs, created services.odex from the patched services.jar
[optionally] for deODEXed ROMs, it creates and signs an update.zip that can be flashed in CWM recovery
collects the garbage and exits with a nice message .. LOL
Q&A
Q: It doesn't decompile the services.jar and complains that the .smali files don't exist !!!
A: Yeah, probably your Java is crap. Install Java JRE from Oracle's web (http://java.com/en/download/index.jsp), it will offer you the latest version. I tested with Java 7, but latest releases of Java 6 should work as well.
Q: Getting java errors "not recognized" "not found" and so !!!
A: You probably don't have the java executable in the system PATH. Search the web on how to do this. Typically, Java7 installs its binaries to the <system>:\Windows\System32 folder, other versions may act differently.
Q: I'm getting bootloops after patching the services.jar with this tool!
A: Make sure to Wipe Cache, Wipe Dalvik Cache and Fix permissions in the CWM recovery. ALso, feel free to send me your original services.jar, I'll take a look. If you have an odexed ROM, send me the whole /system/framework folder and the activity.log file generated while using this tool in "online" mode.
Q: After reboot with the new services.jar file, it says "Android is upgrading" and optimizing apps, even though I did not wipe my dalvik cache.
A: Well, yes that is expected. It will take a while, depending on how many apps you have installed.
Q: Will my phone's memory be blazing fast and effective after this?
A: No, you still have to run the V6 Supercharger script.
Q: Does it run on Linux?
A: Not yet, but it will. I need some more internal testing to release a Linux version.
Q: Does it run on ODEXed ROMs?
A: Yes !!!
Q: Why is the executable so large???
A: Blame PAR long story short, I wrote my stuff in Perl and used Perl to port Zep's stuff as well. Then I compiled the script to exe using the PAR:acker package, resulting in the huge executable. I know, there is another way, to use Activestate's PDK (Perl Development Kit), but the license is approx. $250 and I just don't have that money for spending on a single tool. PDK creates much smaller files (approx. 1/3rd), but for now we have to stick with what we have
Q: Tool fails and in the log I see messages like "failed to copy 'C:/super/backup/services.jar' to '/mnt/sdcard/services.jar': Permission denied"
A: Make sure the USB connection mode is other than "Mass Storage". It can be "Charge Only" or "None", really this is depending on the device you own.
Q: Isn't there a virus included in the executable?
A: LOL.. No. This community gave me a lot since 2007 and I have no intention to harm it in any way. If you are using NOD32 and it starts complaining about the URL to my file I posted above, let me know. ESET support is pretty quick in identifying and fixing false warnings
Enjoy.. and feel free to PM me in case of any questions. I'll keep this post updated all the time.
Thanks
- Zeppelinrox for the V6 Supercharger and the associated scripts/tools
- Rexstor for the ODEX guide
- Android community for all the other tools (smali/baksmali/sign)
- Google for Android... luv ya!!!
If you feel like I deserve a beer for what I've done, feel free to consider donating to Zeppelinrox first as I'm just making his fabulous work a tiny bit more accessible. And if you still think I deserve a beer, you can use the button below.
Simplified Tutorial
Here's my tutorial on this if the above is unclear!
Starting
Download the patcher
Plug in your phone with USB debugging ON!
Now you're already almost done!
Patching
Go to where you downloaded the patcher and unzip it.
Open the JellyScreamPatcherV6_0.9.x.x folder and launch the .exe
{
"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"
}
READ ALL THE INFORMATION and select your desired options.
After you have completed patching, you may now exit the cmd window and reboot your phone to recovery.
Wipe the CACHE, DALVIK CACHE, and FIX PERMSSIONS!
Reboot and enjoy!
ALL CREDITS TO pepcisko and Zeppelinrox!!!
Download/Changelog
Downloads
http://dev.pepcok.info/jellyscreampatcher/JellyScreamPatcherV6_0.9.0.6.7z
Changelog
0.9.0.6 [2012-09-23]
still using ALL_ROMS_Ultimate_Jar_Power_Tools-Jelly_ISCream+Maximum_MultiTasking_Mods-Smali_Patcher_Test_11.sh
added a proper error reporting when sdcard is not writable in online mode
0.9.0.5 [2012-09-20]
using ALL_ROMS_Ultimate_Jar_Power_Tools-Jelly_ISCream+Maximum_MultiTasking_Mods-Smali_Patcher_Test_11.sh
multiple users with Odexed ROMs have reported this version to work. Feel free to try
with online mode, there is a framework restart after patching, causing warm reboot of the device.
0.9.0.4 [2012-09-13]
using ALL_ROMS_Ultimate_Jar_Power_Tools-Jelly_ISCream+Maximum_MultiTasking_Mods-Smali_Patcher_Test_11.sh
Warning for odexed ROM users - proceed with cautions, many have reported bootloops (even with previous version). Investigating
0.9.0.3c [2012-09-12]
patcher: Jelly_IScream+Time_Killer_Killer--Smali_Patcher_Test_9.sh
fixes STUPID bug with storage detection (I hope)
0.9.0.3b [2012-09-12]
patcher: Jelly_IScream+Time_Killer_Killer--Smali_Patcher_Test_9.sh
storage detection, as requested by one of the users (thanks Zep for the code! )
fixes in shell scripts for online mode
removal of the -f flag for rm commands
0.9.0.3 [2012-09-11]
patcher: Jelly_IScream+Time_Killer_Killer--Smali_Patcher_Test_9.sh
odex: if the baksmali decompile fails (e.g. file missing, although being in BOOTCLASSPATH), the tool will create an alternate BOOTCLASSPATH based on the files that were pulled from the phone and try decompile again. It even this fails, then I guess the world will end in 2012
ui: revamped the whole ui, user is now selecting offline vs online (adb) mode at the beginning
ui: added a proper note for the user to make sure to clean cache/dalvik cache when rebooting for the first time with the new services
ui: added instructions for the user in offline mode (when he wants to do the final steps manually)
internal: added some file exists checking, online (with adb) mode works better now and is prettier
other: as always, please read what the tool says.
0.9.0.2 [2012-09-06]
patcher: Jelly_IScream+Time_Killer_Killer--Smali_Patcher_Test_9.sh
instead of using crappy adb commands, the final patching is done via shell scripts in the phone - please help me test that. I already restored my phone's system partition 4 times (since patching a GB MotoDefy+ with ICS HTC Evo services is not healthy, but necessary for my testing), all the final patching seems to work fine here. Tested for both odexed and deodexed files and my phone already hates me
the tool will make a backup of your original services.jar/odex file into a CWM recovery update.zip (will be in the backup folder) .. that's your way back from potential hell
fixed a typo in manual API level selection - thanks for catching
0.9.0.1 [2012-09-05]
patcher: Jelly_IScream+Time_Killer_Killer--Smali_Patcher_Test_9.sh
few fixes (shell user detection, trying to implement better /system rw mount )
0.9.0 [2012-09-05]
patcher: Jelly_IScream+Time_Killer_Killer--Smali_Patcher_Test_9.sh
initial support for ODEXed ROMs - alpha version. I need testers please ! Since my phone does not have any odexed ICS or JB, I was able to test with sample files from xda fellow members end-to-end, but the real full fledged experience, I can't verify
0.8.9.2 [2012-09-05]
patcher: Jelly_IScream+Time_Killer_Killer--Smali_Patcher_Test_9.sh
minor update to capture the system calls, stdout and stderr into the log, for people who have problems with java. Let's see how it works
0.8.9 [2012-09-04]
patcher: Jelly_IScream+Time_Killer_Killer--Smali_Patcher_Test_9.sh
updated adb communication
added proper logging
internal preparation for ODEX ROMs (yeah, 0.9.0 will work with ODEXed ROMs !!!)
added framework folder as the working folder (reduces file clutter.. LOL)
0.8.5 [2012-08-27]
patcher: Jelly_IScream+Time_Killer_Killer--Smali_Patcher_Test_9.sh
update-binary from Titanium Backup
0.8.4 [2012-08-26]
patcher: Jelly_IScream+Time_Killer_Killer--Smali_Patcher_Test_8.sh
minor fixes only
0.8.3 [2012-08-25]
patcher: Jelly_IScream+Time_Killer_Killer--Smali_Patcher_Test_8.sh
this one should work with services.jar files where the smali files don't include debug information
0.8.2 [2012-08-23]
some more checks for "non-compatible" data, will provide warnings to the user in case of "incompatible" services.jar. Users seeing that message should proceed with caution until the next version. Zeppelinrox is aware of the potential problem.
0.8.1 [2012-08-22]
patching based on Zep's v7 script
resolves patching issue with the services.jar from the Alliance 2.1 ROM for Galaxy Note (GT-N7000)
resolves a weird compilation error when running the executable
0.8 [2012-08-22]
First public version, based on Zep's v6 patcher
Deleted
???
I like your tutorial so make sure you keep that but i heard the dev is picky about permissions, how did you get permission?
Anyway, i'll be trying this
THEindian said:
I like your tutorial so make sure you keep that but i heard the dev is picky about permissions, how did you get permission?
Anyway, i'll be trying this
Click to expand...
Click to collapse
I think you're talking about Zeppelinrox... lol pepcisko is very nice and allowed for me to post this!
What exactly does the v6 super charger do and will it work with Toasted Marshmallow?
Sent from my Toasted Marshmallow using Tapatalk 2
pyr0sphere said:
What exactly does the v6 super charger do and will it work with Toasted Marshmallow?
Sent from my Toasted Marshmallow using Tapatalk 2
Click to expand...
Click to collapse
It makes your phone FAST... super snappy with better multitasking!
It rearranges and fixes the OOM Groupings and Priorites and lowmemorykiller values.
So basically, it's a COMPLETE MEMORY MANAGEMENT FIX!
It's the ONLY one of it's kind
NO LAUNCHER REDRAWS, faster than ever, multitasking is better... why?
Because it works with the lowmemorykiller and letting it work the way it's meant to work.
And yes! It works with Toasted Marshmallow... I'm using it now
Coryyyy said:
It makes your phone FAST... super snappy with better multitasking!
It rearranges and fixes the OOM Groupings and Priorites and lowmemorykiller values.
So basically, it's a COMPLETE MEMORY MANAGEMENT FIX!
It's the ONLY one of it's kind
NO LAUNCHER REDRAWS, faster than ever, multitasking is better... why?
Because it works with the lowmemorykiller and letting it work the way it's meant to work.
And yes! It works with Toasted Marshmallow... I'm using it now
Click to expand...
Click to collapse
With this substantial increase in performance, is there an opposite hit in battery life?
Sent from my Toasted Marshmallow using Tapatalk 2
pyr0sphere said:
With this substantial increase in performance, is there an opposite hit in battery life?
Sent from my Toasted Marshmallow using Tapatalk 2
Click to expand...
Click to collapse
Not at all
Sent from my SGH-T999 using Tapatalk 2
I've never noticed a change on AOSP/AOKP/CM ROMs when using V6.
I have, however, noticed a significant change on Sense ROMs, since they are such memory hogs.
Sent from my HTC Glacier using xda app-developers app
estallings15 said:
I've never noticed a change on AOSP/AOKP/CM ROMs when using V6.
I have, however, noticed a significant change on Sense ROMs, since they are such memory hogs.
Sent from my HTC Glacier using xda app-developers app
Click to expand...
Click to collapse
I concur!,I although a slight improvement on AOKP/CM ,it really seems to help Sense Roms alot!!
:good:
estallings15 said:
I've never noticed a change on AOSP/AOKP/CM ROMs when using V6.
I have, however, noticed a significant change on Sense ROMs, since they are such memory hogs.
Sent from my HTC Glacier using xda app-developers app
Click to expand...
Click to collapse
Yep I totally agree only sense version I believe in my opinion that don't need super charge would be 2.1/4.0 Lite since they don't get up ram
sent from my glacier via tapatalk
I'll be adding to my tutorial on how to continue on to actually using the V6 Supercharger after patching the services.jar! I just realized that some might not know you still have to run that I just got wait until my cord ships in... mine broke.
Sent from my SGH-T999 using Tapatalk 2
Somebody recommended flashing this V6 cuz I'm experiencing slow data & wifi speeds on the Glacier One V. Do I have to do the services.jar step or can I just go ahead & download the sh file & run the exe?? Lil bit confused here
I cannot seem to gain adb shell root rights when I'm on elginsk8r or 0.0 jellybean roms. Works fine with toasted marshmallow. Anyone else have this problem?
I'm not sure about roasted marshmallow, but the 0.0 Rom doesn't have and adb root selected by default under settings/developer options. Check there.
Sent from my T-Mobile myTouch 4G using XDA
hi, good work bro.
i got this
Activity log:
[system call] java -Xmx1024M -jar "C:/Users/Papenko/Desktop/JellyScreem/smali/smali.jar" "C:/Users/Papenko/Desktop/JellyScreem/framework/classout" -o "C:/Users/Papenko/Desktop/JellyScreem/dist/classes.dex"
2012-11-18 04:18:12 | D | [stdout] Error occurred during initialization of VM
Could not reserve enough space for object heap
2012-11-18 04:18:12 | D | [stderr] Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
2012-11-18 04:18:12 | E | [smali] Classes.dex does not exist after compilation. Exiting.
2012-11-18 04:18:16 | D | [cleanup] deleting the framework\classout folder
2012-11-18 04:18:16 | D | [cleanup] deleting the framework folder contents
I just put the last and problematic part. Cheers M8
Just tried using JellyScream Patcher 0.9.0.6 with the new ViperTouch v1.0.0 ROM and stuck at HTC logo. Clear cache/dalvik/fix permissions. Still no good. Dirty flash of ViperTouch and I'm back in business (minus the supercharger of course).
All that said, it could just be me. I didn't have luck with Pimp My Rom either (not on ViperTouch but garlest(sp?) Sense ROM) where others seemed to do ok.
Dear all,
I have recently managed to modify Lloirs SlimBean 3.1 rom to both update the apps and adjust the themes, so I thought I would take the time to share how this can be done with you all.
This guide will not tell you how to build a rom from source, but instead how to initially ruin the perfectly good rom someone else made, and then eventually customise it to your little hearts content without ever having to ./make it.
The intent of the guide is to cover
rom.zip File structure
apks & apktool
SystemUI and framework-res.apk
Anything amazing I haven't thought of yet
The first thing to realise is that both the rom file that you flash and the .apk files within it are all basically .zip files and can be opened using 7zip or other linux variants like fileroller. So if all you want to do is open up the rom and poke around, then I suggest you do just that. Its a great place to start to try and get your head around what is going on in there!
I have tried to do all of these modifications with the minimum install of tools and whatnot, as I like to be as close to what is actually being done as possible. There are a variety of all in one tools available, and a quick search of XDA will find them. In my experience these tend to become outdated quite quickly or development stops. So best to learn from the basics, which means the lowest level of tool possible.
With all that said I strongly recommend getting your mits on Gimp-2.8, fileroller and apktool.
Code:
sudo apt-get install gimp file-roller
Apktool can be found from the Git - repository or the google code site,
http://code.google.com/p/android-apktool/ I'll add install instructions and info on this tool in the specific section. There is also an excellent XDA thread covering the progress iBotPeaches is making with the tool.
http://forum.xda-developers.com/showthread.php?t=1755243
rom.zip File Structure
WIP
OK lets get started with the basics. Download a flashable rom.zip file and start poking your nose where it didn't belong before. If your ready yo get down and dirty just go ahead and unzip it into its own folder. Depending on what rom.zip you have will depend on how much of the file structure below you will see:
{
"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"
}
and here we have the root of the flashable.zip starting from the top we have:
data: this contains anything that is already signed and not part of the original build but that we want to install with the rest of the rom
META-INF: Full of all the meta information you could ever dream of. This contains all the certification and signing files along with our most important file of the install script.
system: This contains all the files that actually make up our ROM so this is everything above the HAL (Hardware Abstraction Layer). In here are the goodies I will describe how to play with later.
boot.img: Is the all important kernel, if you are S-OFF this will flash on install, if not you will need to use fastboot to flash it separately.
So if your unhappy with all of this and want out of the woods already then you can just re-zip the files back together and they will work fine, no harm done. If not the lets move onto the easy folder data. I say easy because we can't break anything here, if you get it wrong then the packages here just won't install.
DATA
So as we can see above, we have a folder called app, which is full of a load of packages that I wanted to include into the rom, but and this is the important part. I didn't want this apps to be system apps, this means I wanted them to be easy to remove without using root access. As you will see system apps live somewhere else, not totally unlike the system/app folder :silly:. Another important point is that the apps/packages, I will use these terms interchangeably, that get installed from here are all signed, this means they have a signature in there meta.inf files saying that they have not been messed with. Most app developers will sign there work, to help keep it safe, and stop people from pirating it with such ease. All apps from the playstore are signed in such a manner. The apps in other folders must not be signed, but we will get back to that. If you have any apps or packages you have got the .apk from XDA thread or elsewhere this is one of the best places to put them if you want them to install with your rom.zip
So the truth be told, I have no idea what other folders you can put in aside from the app one, but I am sure there are plenty, if you find any let me know.
NEXT, we have the META-INF folder:
META-INF
Here as mentioned we have or CERT.SF which is a certification file, our MANIFEST.MF which is the manifest ie list of everything going into this rom, and CERT.RSA another signature file. DON'T BE MESSING WITH THESE. They are core to the install process, and generated by the build scripts used to create the rom in the first place. You can open and look at them all, which will help your general understanding and break nothing, however No saving the files.
Above is the full expanded file structure, again there is really nothing you want to mess with in here, but I'll explain what I know about them. First up is the:
Android folder files, which these cover the Over The Air (OTA) update information, this is just some data that identifies what version etc of the rom for what phone you are using. It used to make sure you get the right ota update, in this rom I haven't set up ota as I have literally no idea how.
google folders stashed in the second android folder are the updater files, this is effectively a list of what the recovery program is to do when installing the rom, so you will even find the lovely message that gets printed as your rom installs saying its all going well.
This leaves us with the most important of all the folders, the system folder. In here as mentioned before are all the golden nuggets that make the trove that is your rom. Lets take a peek.
As we would be hoping the folder is full of goodness! Taking it from the top we have:
SYSTEM
system/addon.d This contains shell scripts (Ones that would run in your terminal) here we have the 50 - slimupdate.sh slimupdate script, again for OTA but this backs up the hosts (I'll get to this later) file so that it is re-instated after the upgrade. Secondly we have the 81-aio_gapps.sh which backs up the gapps that you had installed before the ota update. So they can be put back afterwards. Feel free to open these look around, and if your not doing any ota they are pretty useless.
APP
system/app This is a very significant folder as it contains all the apps that will run as part of the system, in here you'll find the dialer phone.apk, the google search package velvet.apk, the google play store vending.apk and your text messenger mms.apk. All of these files are important, come unsigned as they used to be unavailable on the playstore, and for other important reasons I am unaware of. The important part is that when we start to think about editing them with apktool, or you make your own they stay unsigned them.
The system folder is protect as read only (-ro) so that these files are not available to be changed during normal use of the phone. Of course using esExplorer or another root explorer you can change the -ro mount setting to -rw allowing you to write to the folder as well, and so change the files.
I will be happy to answer any questions as to what .apk file relates to what if you are stuck at any point. You can remove and re-install these as you wish, but be warned remove the sytemUI.apk will result in very limited functionality on the phone, which is why I will be talking it up a bit later. Its also worth noting that different roms use different android versions of the .apk and they won't always play nicely together. Whats more some of the .apks are reliant on each other, for instance googles gallery.apk and camera.apk have cross funstionality, as do mms.apk, phone.apk, contacts.apk, and contactsprovider.apk, as they share usage and files.
BIN
Just like in your linux file directory the bin folder holds all the functions and programs that get called throughout the day to day use of android. As an example adb and the backuptool are in here. Again I would advise not messing with these files, but be aware that when your trying to add new packages or functionality to a rom you may find yourself adding files or functions in here.
/-- OK enough for now I'll get back to this --/
apks and apktool
OK so hopefully we now know where all the lovely .apk files are hiding within the file structure of our rom. Which don't get me wrong is nice enough in itself, but what we really really wanna do is open these bad boys up and start editing them just the way we like it.
The simplest way to do this is with 7zip or fileroller, you should be able to just double click pop them open, then navigate to the res folder where you will find all the folders with the .png and .9.png s for the gui systems in the app. If your using gimp or photoshop or pretty much any paint related software you can immediately go ahead and edit the .png files. The smart thing to do here is not to replace any files but edit and save them as the same resolution, as you may have noticed that the different res folders are separated into different resolutions and upright and sideways display. For the HOV most of what we want will always be in teh HDdpi or xHDdpi folders. Do Not Edit the .9.pngs As this will result in the failure later. This method is only really useful if your lazy, and only want to grey-scale a single image or what.
If you've got this far you probably want to be able to edit the .9.png s and start opening and changing the .xml code so that you can edit default backgrounds and text colours. To do this we will want the excellent apktool,
http://code.google.com/p/android-apktool/
This tool will unpack the .apk file and allow us to rebuild it as well, however it is rom specific to some degreee, as some .apks have been created using a different aapt file (Slim, some AOKPs) and so will require a more specific version. This may sound like a pain, but it can be dealt with super easily.
The slim one can be found here and has just recently been updated to handle Slim4.4 apks
https://github.com/SlimRoms/apktool
So how do I install, and then run these tools? How do I swap between slim and aosp or other .apktool versions?
First is first, download the version of the tools you want, either through direct link on the googlecode page or from downloading as .zip from the github page. Its worth noting that the latest apktool (v2) which works with java1.7 and can be downloaded from the github works slightly differently from the guide here, but its easy to work out how and is documented on the website.
I am going to assume we are too lazy to read the website, in which case stoppit go back read the website!
That done we can now run the install.sh script in terminal which will create an apktool folder where we can run the tool to our delight.
Importantly it should also put an aapt, apktool, and apktool,jar file into our /usr/local/bin/
Please note that any file structure starting with / is from the true root of the file structure whereas any with ~/ will be starting from your root folder in my case /mcgi5sr2/
This is one place where files go that you can execute anywhere within your file structure, so you can apktool anywhere in your file structure, please not that the decompiled files will always end up in your ~/apktool/<fileName>.apk folder.
So with this knowledge we can rip the aapt, apktool and apktool.jar out of the slimapktool, rename and put them in the /usr/local/bin/ folder for safe keeping. To use them in the heat of battle we simply rename the exisitng ones to 1.5 or 2 or whatever really, then change the name of the slim files back to aapt, apktool and apktool.jar . This way we can swap between them with ease. There are other ways of doing this, but they are beyond my ken (understanding).
OK so we are now installed, and can swap between apktool versions and have an apktool folder! We can really begin.
Delve into you rom or phone and pull out systemUI.apk from your rom/system/app folder and framework-res.apk rom/system/framework/ folder. This can also be done using adb
Code:
adb pull /system/systemUI.apk /apktool/systemUI.apk
adb pull /system/framework/framework-res.apk /apktool/framework-res.apk
Should do the trick, With some HTC roms ie stock you may find you need to also pull the htc-framework-res.apk. Once this has been done then one of the most important steps takes place. We extract the file framework for the rom so that we can decompile and recompile successfully for the phone. From within the same folder as the systemUI.apk and framework-res.apk on your computer type:
Code:
apktool if systemUI.apk
apktool if framework-res.apk
this will create a framework folder within ~/apktool/ which should contain a 1.apk and normally a 127.apk these are SUPER important let them be.
Finally it seems we are ready to decompile the .apk file we wanted to edit, a good place to start is the phone.pk or mms.apk so move the file wherever, I use the ~/apktool/ folder for all this craziness. Then type:
Code:
apktool d mms.apk
The magic should happen and you will have a ~/apktool/mms folder! In which is basically a lot of the same stuff in the unzipped version we talked about earlier. This can be edited to your delight and then recompiled, in fact its worth recompiling immediately to check it all works, nothing more annoying than spending a long time working in your res and values folders only to have it not recompile! So,
Code:
apktool b mms
Note the fact that the .apk is no longer present this is because we are building using the folder as source.
We are not done! We need to make sure the certification and signing is all correct, so we need to open the original .apk file, and extract the AndroidManifest.xml and the META-INF folder and replace the ones in the ~/apktool/mms/build/apk/ folder this will make sure we have the original signatures. Then we
Code:
apktool b mms
one final time, now the finished mms.apk should be in ~/apktool/mms/dist/ folder ready for use in the rom.
Once decompiled not only can we edit the .png files in the res/drawable folders but we can edit the .9.png files and the .xml and if we are really know what we are about the .smali files. I strongly recommend staying away from smali unless you really know whats up. There is an important rule to follow when editing .9.png files as well, that you should not alter the black lines that surround the edges. Everything else can be edited bar them.
As you can see above these lines normally only a pixel or so wide, but play an important role in how the files are used, stretched, repeated etc. In fact in some cases I have found that even using black (rgb ff000000) caused problems so I used just off black (rgb ff010000). The RGB codes used in the .xml files are also slightly different to normal, the first two digits represent how transparent the colour is with ff being solid, and 00 being transparent.
.xml files of interested will undoubtedly be found in the /res/values folder, as this is where most of the colours are defined.
There are a lot of things that can go awry in this, but if you follow these instructions you should be cool. Any issues you can try me, or go for the mega thread on apktool listed at the top.
A few pointers on what you'll find in the different folders once you've decompiled the .apk can be found in the post below about SystemUI.apk and Framework-res.apk
SystemUI and Framework-res
reserved to cover these special apks
Forgotten Isle
reserved for any new important things I may want to tag onto the en of this
File Structure
Also reserved...... for a reason yet to become apparent
Awesome work mcgi5sr2. This guide is really useful..
MScorporation95 said:
Awesome work mcgi5sr2. This guide is really useful..
Click to expand...
Click to collapse
I'm pretty busy right now, but will try and finish this for anyone else who is interested. I would add a build guide, but there are a lot of those out right now anyway.
If people are interested we could start a build and build errors thread for Primo to help each other out
Thank you!!!
---------- Post added at 09:01 PM ---------- Previous post was at 08:55 PM ----------
Very good guide
Sent from my One V using XDA Premium 4 mobile app
HTC ONE V reflash from *ZIP
hi, could you suggest me how to flash from ZIP(official EU ROM, downloaded from htc dev site), and I won't to change below mentioned?
* bootloader - LOCKED
* have orig. ROM but UK oriented
vinm07 said:
hi, could you suggest me how to flash from ZIP(official EU ROM, downloaded from htc dev site), and I won't to change below mentioned?
* bootloader - LOCKED
* have orig. ROM but UK oriented
Click to expand...
Click to collapse
You have to unlock your bootloader and install a recovery to flash a rom.