Rapid Theme Creation/Porting in Linux - G1 Themes and Wallpapers

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!

Related

[JVP] Automatic brightness fix DIY

I've made this thread to show you how to fix this frustrating bug. After few steps you'll get working light sensor better than in previous GB versions
Files need to be replaced or edited:
- services.jar
- framework-res.apk
- sensors.default.so
Recommended kernel:
- Galaxian*
Based on original Samsung sources
All Voodoo addictions (color fix, sound V9)
CPU frequencies: 100MHz, 200MHz, 400MHz, 800MHz, 1000MHz, 1200MHz, 1300MHz, 1400MHz.
CONFIG_HZ=500
CWM 3.0.0.5 based on, and fully compatible with CF-ROOT
Light sensor polling 1s instead of 2s
Compatible with RFS and EXT4
Much more I can't remember
What needs to be done:
framework-res.apk edit
1. Get apk manager (attached)
2. Put framework-res.apk in "place-apk-here-for-modding" folder
3. Run apk manager, decompile with dependancy (option 10)
4. Drag twframework-res.apk from your ROM into the script, or extract it somewhere and type path to it
5. Go into projects\framework-res\res\values\arrays.xml
6. Replace two sections:
<integer-array name="config_autoBrightnessLevels">
<item>30</item>
<item>300</item>
<item>600</item>
<item>1500</item>
<item>1500</item>
</integer-array>
<integer-array name="config_autoBrightnessLcdBacklightValues">
<item>80</item>
<item>150</item>
<item>200</item>
<item>255</item>
</integer-array>
Click to expand...
Click to collapse
7. Delete .bak file if you got one after changes
8. Go back to script and select compile
9. Say y
10. Say y
11. Delete resources.arsc from keep folder
12. Enter in script
13. U'll find unsignedframework-res.apk in "modding" folder
14. Use ADB
Code:
adb push unsignedframework-res.apk /data/local/tmp/framework-res.apk
adb shell
su
mount -o rw,remount /dev/block/stl9 /system
stop
rm /system/framework/framework-res.apk
cp /data/local/tmp/framework-res.apk /system/framework/
rm /data/local/tmp/framework-res.apk
reboot
services.jar replace/edit
Attached services.jar should be compatible with all JVP releases as long as author didn't modified it. If you are not sure you can always edit your own version by doing:
1. Get apk manager (attached)
2. Put services.jar in "place-apk-here-for-modding" folder
3. Rename it to services.apk
4. Run apk manager, decompile (option 9)
5. Go into projects\services.apk\smali\com\android\server\
6. Replace PowerManagerService.smali file with the one from my services.jar
7. Delete .bak file if you got one after changes
8. Go back to script and select compile
9. Say n
13. U'll find unsignedservices.apk in "modding" folder
14. Rename it to services.jar
14. Use ADB
Code:
adb push services.jar /data/local/tmp/
adb shell
su
mount -o rw,remount /dev/block/stl9 /system
stop
rm /system/framework/services.jar
cp /data/local/tmp/services.jar /system/framework/
rm /data/local/tmp/services.jar
reboot
sensors.default.so replace
1. Use ADB
Code:
adb push sensors.default.so /data/local/tmp/
adb shell
su
mount -o rw,remount /dev/block/stl9 /system
stop
rm /system/lib/hw/sensors.default.so
cp /data/local/tmp/sensors.default.so /system/lib/hw/
chmod 644 /system/lib/hw/sensors.default.so
rm /data/local/tmp/sensors.default.so
reboot
GALAXIAN KERNEL:
1. Go to the Market place
2. Install SGS kernel flasher
3. Extract zImage.7z to your internal SD card
4. Select zImage and flash
5. Be happy
New version of sensors.default.so! Now all 4 steps are working!
BTW. With those files you will now loose BLN!
Thank you very much in providing this fix.
Thks
This is what I have been waiting for....
I will recompile my services.jar n framework-res.apk and incorporate them into my custom rom.
Thank you so much!
i do not get it =) what is this fixing Oo
$omator said:
i do not get it =) what is this fixing Oo
Click to expand...
Click to collapse
It fixes the Auto brightness issue in some kernels.
i guess when auto brightness is checkedit is not reacting or reacting wrong?
Im guessing this only works on deodexed?
This is a fix of the moth !
THANK YOU SIR !
btw., what kernel is this? your own ?
Simce I can't find Galaxian anywhere on the forum.
Btw. where are the attached binaries from? Extract from original JVP kernel ?
$omator said:
i guess when auto brightness is checkedit is not reacting or reacting wrong?
Click to expand...
Click to collapse
In some kernels the brighness is reversed or totally wrong.
This has fixed it.
@ Brotuck
Will you try and include this in your GingerMod Rom? (...does it need it?)
eternal-intent said:
@ Brotuck
Will you try and include this in your GingerMod Rom? (...does it need it?)
Click to expand...
Click to collapse
I already updated my GM22 @ damians site.
It also uses a slightly different value, tested it today worked fine !
Brotuck said:
I already updated my GM22 @ damians site.
It also uses a slightly different value, tested it today worked fine !
Click to expand...
Click to collapse
Cool.
Well, I'm off to check it out...
And to the OP thanks, I'm interested to see what effect this has...it's not that I'm lazy, I just still lack confidence in my adb (dis)ability or I'd be more inclined to try and do it myself.
CWM can ask
ok now i see what is going on here =)
-provided sensors.default.so is 1:1 with stock JVP one
Click to expand...
Click to collapse
-arrays.xml is tweaked when compared to stock - and my guess OP made an error here as
<!-- Array of output values for LCD backlight corresponding to the LUX values
in the config_autoBrightnessLevels array. This array should have size one greater
than the size of the config_autoBrightnessLevels array.
-->
Click to expand...
Click to collapse
those are stock values from JVP below
<integer-array name="config_autoBrightnessLevels">
<item>30</item>
<item>2000</item>
<item>6000</item>
<item>11000</item>
</integer-array>
<integer-array name="config_autoBrightnessLcdBacklightValues">
<item>32</item>
<item>70</item>
<item>116</item>
<item>177</item>
<item>253</item>
</integer-array>
Click to expand...
Click to collapse
Click to expand...
Click to collapse
-at the services.jar few more tweeks that i do not see much sense in =)
i would realy like to see explanation of those changes
Click to expand...
Click to collapse
Ill look at this properly, but couldn't you put this in a CWM flashable package? Thanks if you can.
Sent from my ever changing Galaxy S
CWM flashable package, please
The biggest "problem" is that you need to change values in the framework.
And that one is connected to the theme you use.
Battery color / lockscreens stuff like that.
So making 1 general CWM is a problem....
If you encounter brightness problems, like not responding to changes or bright light in the dark (when it should be darker)
Then but only then consider this mod, if you do not know how to do it, then ask the theme maker.
ill rephrase my question =)
why those fixes (left stock, right this fix/tweak)
ALL_BRIGHT from 15 to 255
ANIM_STEPS from 10 to 50
AUTOBRIGHTNESS_ANIM_STEPS from 10 to 50
LIGHT_SENSOR_DELAY from 2000 to 1000
@$omator: it`s working! i think this is the only relevant answer!
you know a better way? then do it and start your own thread!
I'd like to try this fix but I can't because each time >compile< gets me an error in APK Manager! Something like "unknown source" and "could not exec command". Does anyone here have any success with this fix and Bezke JVP-ROM?

[HOW TO][Windows]Extract Deodex Sign and Zipalign an official ROM

Hi,
Just want to share tools I found in order to :
- Extract SGS2 stock firmwares :
* Use sgs2toext4.jar Application from drphrozen to convert .img files to ext4.img
* Then MOUNT ans EXTRACT ext4.img with Diskinternals Linux Reader : Here
- Deodex, sign and zippalign :
with this deodex kit : _Kit_Deodexage.zip
- Create your CWM customROM (wype script)
using a Skeleton ROM : Custom_ROM GS2 by SicOpaT.zip
Click to expand...
Click to collapse
Nothing from me, just reporting for you
Links at the end of post (or in changeLog)
EDIT 16/08 :
1/ update of Kit_deodexage with last versions of smali/baksmali v1.2.7 to avoid LAG bug of browser
2/ add of Custom_ROM GS2 by SicOpaT_v2.zip with a new CWM script NON WIPE
To customise the CWM script, go to Custom_ROM GS2 by SicOpaT.zip\META-INF\com\google\android and edit updater-script with notepad ++
Step by step guide ​:
Preparation :
1/ Extract Custom_ROM GS2 by SicOpaT.zip in order to have a folder with the same name (your future customROM)
2/ Extract sgs2toext4.zip to sgs2toext4.jar and put it in C:\
3/ Extract _Kit_Deodexage.zip to a folder of the same name
4/ install Diskinternals Linux Reader : Here
5/ Install Java SE Development Kit (JDK) if not already installed : Here
Click to expand...
Click to collapse
Extracting the stock ROM :
1/ open your stock__firmware.tar with 7-zip or winRAR
2/ extract in C:\ :
factoryfs.img,
cache.img (if you have 3 tar files in your firmware, extract cache.img from CSC.tar)
modem.bin
zImage : your kernel
Click to expand...
Click to collapse
* Extracting KERNEL and PHONE part :
3/ put zImage and modem.bin in the root folder of : Custom_ROM GS2 by SicOpaT (next to META_INF)
Click to expand...
Click to collapse
* Extracting Factoryfs.img :
4/ Double click sgs2toext4.jar, a windows is opening :
{
"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"
}
5/ drag factoryfs.img in the sgs2converter.jar windows
factoryfs.ext4.img is created
6/ Open Diskinternals Linux Reader
Code:
> Drives > Mount Image > browse to your factoryfs.ext4.img > Mount
Then a new drive appears in the Diskinternals window, called Linux native Volume > double click on it
7/ Select all and press Save > Next > Browse to Custom_ROM GS2 by SicOpaT/System/ check for Save directory structure and then press Next > Next > Finish
8/ In Diskinternals click Back and then right click to your Linux volume and select unmount
Click to expand...
Click to collapse
* Extracting cache.img :
9/ Double click sgs2toext4.jar
10/ drag cache.img in the sgs2converter.jar windows
cache.ext4.img is created
11/ Mount cache.ext4.img in diskinternals
12/ In your linux drive goto \recovery and save sec_csc.zip
Don't save it in your Custom_ROM GS2 by SicOpaT folder
13/ Extract sec_csc.zip (same structure as an update.zip)
14/ Copy everything in /system exept /app to Custom_ROM GS2 by SicOpaT/system
like here :
Now you can unmount and close diskinternal, we have done with extracting the ROM
Click to expand...
Click to collapse
Now time to Deodex, sign and zipalign : with the _Kit_Deodexage script
1/ in Custom_ROM GS2 by SicOpaT/system/ MOVE everything in the app folder to _Kit_Deodexage/app
3/ in Custom_ROM GS2 by SicOpaT/system/ MOVE everything in the framework folder to _Kit_Deodexage/framework
4/ Press : Deodex_Gingerbread.cmd and it will
- deodex
- sign
- zipalign
4 bis/ edit after beginning of deodexing process the NePasSigner.txt and add samsung apps
5/ 2 folders are created : Deodex_framework and Deodex_app
6/ verify that the /app and /framework folders are empty
6/ Move everything from /Deodex_framework exept java.awt.jar to Custom_ROM GS2 by SicOpaT/system/framework
7/ Move everything from Deodex_app to Custom_ROM GS2 by SicOpaT/system/app
Click to expand...
Click to collapse
Buid your CWM update.zip :
With WinRAR : CTRL A in your custonROM root folder and Right Click > Add to Archive > ZIP and None or Normal compression
Click to expand...
Click to collapse
That's all ! You have a stock customROM fully deodexed, signed and zipaligned
PS : You should change the Kernel for the CF-Root Kernel (CWM Manager ...) changing the zImage with the zImage from ChainFire CF-Root
PS 2 : You can add some apps (like Titanium backup) in the /data/app folder of your customROM
EDIT 1 : The deodexed browser.apk obtained will be bugy : Lag scrolling
Since pulser_g2 found the FIX, DEVs used an old deodexed browser.apk (from KE2 ROM for example).
So pulser_g2 foung the FIX, in order to avoid this Lag trouble using the last deodexed browser.apk (KF2 for example). You can see the How To FIX yourself the laggy browser.apk following advices from pulser_g2 in the changeLog of 07/03/2011.
EDIT 2 : just added a zip of an META_INF folder witch can be used for update over a previous deodexed customROM with same signature (a previous ROM built with the same script).
With this META_INF, you will not loose any data/cache
Credits :
Thanks to drphrozen for sgs2toext4.jar and sgs2converter.jar tools
Thanks to xeudoxus for his custom java.awt.jar (deodexing some apks without errors)
Thanks to Okarin for his Deodex script
Thanks to Pulser-g2 for the laggy Browser Fix
Thanks to omrij for showing us an alternative to _Kit_Deodexage : AutoDeoTool (see below)
Click to expand...
Click to collapse
ChangeLog of the HOW TO :
07/04/2011 :
* Switch bugy sgs2converter.jar to new sgs2toext4.jar from drphrozen
* Re-Add the Convert_sgs2img.exe tool to extract .img to .ext4.img (end of post)
CMD command :
Code:
Convert_sgs2img.exe factoryfs.img factoryfs_ext4.img
07/02/2011 :
Modification of _Kit_deodexage.zip in order to add the custom java.awt.jar from xeudoxus
07/01/2011 :
Add the new version of drphrozen sgs2converter.jar, available HERE
Now you just need to double click on the sgs2converter.jar, without opening any CMD promt command.
You drag and drop your stock .img file and the tool will convert it in <inputname>.ext4.img in the same folder
06/30/2011 :
How to manually deodex Email.apk and MobilePrint.apk : (working for others APKs)
Code:
[QUOTE][B]1/[/B] In the same folder, you put :
[QUOTE]*Email.apk
*Email.odex
*MobilePrint.apk
*Mobileprint.odex
AND
all the content of the initial ODEXED framework folder (with all JAR files)
PLUS custom [B]java.awt.jar[/B]
AND
*smali.jar ---> found in _Kit_Deodexage/_binaires/
*baksmali.jar ---> found in _Kit_Deodexage/_binaires/[/QUOTE]
[B]2/[/B] Then open a [B]CMD promt[/B] in the target folder
[B]3/[/B] Then type :
[CODE]java -Xmx1024m -jar baksmali.jar -c :am.jar:android.policy.jar:android.test.runner.jar:bmgr.jar:bouncycastle.jar:com.android.location.provider.jar:com.google.android.maps.jar:com.samsung.device.jar:com.yamaha.android.media.jar:core.jar:core-junit.jar:ext.jar:framework.jar:ime.jar:input.jar:java.awt.jar:javax.obex.jar:libvtmanagerjar.jar:monkey.jar:pm.jar:sec_feature.jar:seccamera.jar:sechardware.jar:secmediarecorder.jar:services.jar:sqlite-jdbc.jar:svc.jar:twframework.jar -x Email.odex
You have a new OUT folder created
4/ Then type :
Code:
java -Xmx1024m -jar smali.jar out -o classes.dex
A classes.dex file is created
5/ Open (without extracting) Email.apk with 7-zip
Push classes.dex in Email.apk with 7-zip
6/ Put the new deodexed Email.apk in app folder, in _Kit_Deodexage
Press Deodex_Gingerbread.cmd
You now have a fully deodexed signed zipalligned Email.apk
Now Mobileprint.apk :
7/ DELETE classes.dex ans Out folder created before
8/ Same procedure, in CMD pompt, type :
Code:
java -Xmx1024m -jar baksmali.jar -c :am.jar:android.policy.jar:android.test.runner.jar:bmgr.jar:bouncycastle.jar:com.android.location.provider.jar:com.google.android.maps.jar:com.samsung.device.jar:com.yamaha.android.media.jar:core.jar:core-junit.jar:ext.jar:framework.jar:ime.jar:input.jar:java.awt.jar:javax.obex.jar:libvtmanagerjar.jar:monkey.jar:pm.jar:sec_feature.jar:seccamera.jar:sechardware.jar:secmediarecorder.jar:services.jar:sqlite-jdbc.jar:svc.jar:twframework.jar -x MobilePrint.odex
You have a new OUT folder created
9/ Then type :
Code:
java -Xmx1024m -jar smali.jar out -o classes.dex
A classes.dex file is created
10/ Open (without extracting) MobilePrint.apk with 7-zip
Push classes.dex in MobilePrint.apk with 7-zip
11/ Put the new deodexed MobilePrint.apk in app folder, in _Kit_Deodexage
Press Deodex_Gingerbread.cmd
You now have a fully deodexed signed zipalligned MobilePrint.apk[/CODE]
Important !! You should NOT have error while deodexing
Click to expand...
Click to collapse
06/27/11 :
added : old version of sgs2converter.jar from drphrozen get it HERE
How To :
Extract sgs2converter.zip to sgs2converter.jar
Put in the same folder : Stock .IMG file, sgs2converter.jar
Open CMD Promt in the folder
run command :
Code:
java -jar sgs2converter.jar factoryfs.img factoryfs.ext4.img
factoryfs.ext4.img is created in same folder. You can pen it with Diskinternals Linux Reader
*AutoDeoTool an alternative to the "kit_deodexage" from HERE thanks to omrij
[/QUOTE]
BONUS :
To personalise your customROM, you can change the name of the ROM shown in Parameters > Version number :
with Notepad++, open the file "\Custom_ROM GS2 by sicOpaT\system\build.prop" and look for the line beginning with : "ro.build.display.id=" (often the 4th). Example : ro.build.display.id=GINGERBREAD.XXKF2
Replace everything after the "=" with what you want. Example : ro.build.display.id=SicOpaT's ROM KF2
Then save the file
Thanks for the infor .. but what does the " - CWM GS2 Skeleton ROM (wype script) : Custom_ROM GS2 by SicOpaT.zip" do ??
anyway of getting a step by step guide.
Thanks
I've used Ubuntu until now... Testing this one
xinfinityoO said:
Thanks for the infor .. but what does the " - CWM GS2 Skeleton ROM (wype script) : Custom_ROM GS2 by SicOpaT.zip" do ??
anyway of getting a step by step guide.
Thanks
Click to expand...
Click to collapse
This is the begining oh a CWM update.zip with the structure folders and I just added : busybox, superuser an su.
I am going to add a step by step guide
nice thanks
Email.apk and MobilePrint.apk are leftover. Trying to do them manually but can't find superclass Ljava/awt/componet;
Mackzen said:
nice thanks
Email.apk and MobilePrint.apk are leftover. Trying to do them manually but can't find superclass Ljava/awt/componet;
Click to expand...
Click to collapse
got the same problem, i took deodexed ones from other deodexedROM
Couldn't flash using cwm (maybe battery low, don't know)
better luck tomorrow I guess
How does the script take care of the Linux file permissions in Windows?
Thanks for the info.
That was some info which i was looking for the last few weeks, but mostly ended in apps that didn't work for everything.
Gonna give it a shot tomorrow.
Thnx for the info.
very well defined and this will sure help some newcomers to build thier own custom roms. you deserve a star from me !!
Thanks for this Guide!
1.) The last step would be to put the new CustomRom Folder to a Zip and flash via CWM?
...or is it a problem with signing then?
EDIT: you have to put the files back into the original ZIP!
2.) why do we have to put cache.img and modem.bin to the customrom root folder?
Thanks
Flashed via cwm 4.0.2 -> Bootloop :/
No modifications done at the moment
walda said:
Thanks for this Guide!
1.) The last step would be to put the new CustomRom Folder to a Zip and flash via CWM?
...or is it a problem with signing then?
EDIT: you have to put the files back into the original ZIP!
Click to expand...
Click to collapse
Yes you have to create an update.zip archive with all in your CustomROM root folder
walda said:
2.) why do we have to put cache.img and modem.bin to the customrom root folder?
Thanks
Click to expand...
Click to collapse
No you have to put :
- zImage (your kernel)
- modem.bin (phone part in ODIN)
Mackzen said:
Couldn't flash using cwm (maybe battery low, don't know)
better luck tomorrow I guess
Click to expand...
Click to collapse
walda said:
Flashed via cwm 4.0.2 -> Bootloop :/
No modifications done at the moment
Click to expand...
Click to collapse
I have forgotten wype.sh in the /system folder of the skeleton customROM.
The wype.sh will wype everything in the /data folder in order to prevent bootloops
I reuploaded the CustomROM GS2 with the wipe.sh
Thanks! Works now
walda said:
Thanks! Works now
Click to expand...
Click to collapse
You're welkome
Sorry for the forgotten wype.sh
thanks for this!
i am running per instructions, trying to deodex KF2 rom. but i face problem at the deodex/sign/zipalign. after running the script file, there are still a lot of files in the "app" and "frameworks" directory. what am i doing wrong?
edit: 2nd round works, no idea why?? but left email and mobileprint, and as per you suggestion get it from another deodex rom.
This is EXACTLY the thing i was looking for since getting my SGS2 this week.
Wanted this since the Hebrew/RTL routine fixing i did on other devices needed deodexed ROMs to work (modifies framework.jar/libwebcore.so).
I'll give it a shot today or tomorrow and report back.
Either way, THANK YOU very much for the effort!
I know this is a stupid question, but where can i find my factoryfs_out.img iv done the cmd bit but cannot find the factoryfs_out.img to mount??

[TOOL][SHARE][WINDOWS] ANDROID MULTITOOL v2.1 (Decompile and recompile apks's)

Hi guys I'm just sharing the work of the XDA member Flextrick.This is a simple tool which helps you to compile/decompile and sign the apk's.​
- Easy handling: Select your apk and push the "decompile" button!
- This tool makes modding much faster and easier, no cmd handling any more.
- You can read the log which is integrated in the tool to find your mistake in the error. ​
Requirements:
Winows OS XP / 7 / 8
Installed Java on Windows
Installed Microsoft Powerpacks
Installed .NET framework
How to use this tool?​
Follow this small how to!
Here you go..
Well, first extract the AndroidApktool folder to C:\. Otherwise it propably won´t work
-copy your framework-res.apk and other files you want to mod in the "Files" folder (this folder is for all your files you want to mod, don't pick files from any other location)
-Next you have to start AndroidApktool.exe
-select your framework-res.apk and push the "install" button (check log for errors)
​
Decompiling and recompiling apk files:
-select the apk you want to mod/decompile and push the "decompile" button (check log for errors)
Note: You can check the "use baksmali" checkbox, then e.g. the useless .line text will be removed
-your decompiled apk will be located in C:\AndroidApktool\Decompiled_apk\"apkname" as a folder
-if you want to compile your apk again, select your decompiled folder, check the "apk" radiobutton and compile it again (check log for errors)
!!!NOTE!!! After compiling you have to copy the AndroidManifest.xml and the META-INF folder from your old apk to your newly compiled one!! Otherwise you´ll get bootloop! (Don't check the smali checkbox, it will create a classes.dex file from you smali files)
-your recompiled apk will be located in C:\AndroidApktool\Compiled_apk\"apkname"​
Decompiling and recompiling jar files:
-select in the combobox ".jar" (check the "use baksmali" checkbox for deleting the useless .line comments)
-select the ".jar" file you want to mod
-push the "decompile" button
-your decompiled jar file will be locaten in C:\AndroidApktool\Decompiled_jar\"jarname"
-for recompiling you have to check the "jar" radiobutton and select the folder within your decompiled ".jar" file
-push the compile button
-your compiled jar file will be located in C:\AndroidApktool\Compiled_jar\"jarname"\classes.d ex
-delete the "classes.dex" file in your ".jar" file
-copy the new "classes.dex" file you compiled in the ".jar" file
​
Signing apk files:
-select the ".apk" you want to sign
-push the "sign" button
-the signed apk file is located in C:\AndroidApktool\Signed_apk\"apkname_signed"
​
Downloads 1.Windows 8 - http://www.mediafire.com/download/3xc18gs3we9gt8h/AndroidMultitool_2.1.zip
2.Windows XP/Windows 7 - http://www.mediafire.com/download/5aby5m5zh9vj1h9/AndroidMultitool_2.1_Win7.zip
​
Questions and answers:
​
Q: The programm does not start, it crashes.
A: Please install Powerpacks, this one: http://download.microsoft.com/downl...-684E8AD6F0AE/VisualBasicPowerPacks3Setup.exe
Q: What do you mean exactly with "!!!NOTE!!! After compiling you have to copy the AndroidManifest.xml and the META-INF folder from your old apk to your newly compiled one!! Otherwise you´ll get bootloop! " .. I don't understand.
A: You have to open your old apk (this one you selected for decompiling in the folder /files) and copy from that apk the AndroidManifest.xml and the META-INF folder to the apk you just decompiled and recompiled. ​
Original Thread : http://forum.xda-developers.com/showthread.php?t=2326604​
Credits :
Flextrick
Click to expand...
Click to collapse
​
nice share bro!!!!!
powerpack link not working!!!!!! wat to do?????????????
kumar akarsh said:
powerpack link not working!!!!!! wat to do?????????????
Click to expand...
Click to collapse
Try this one http://download.microsoft.com/downl...-684E8AD6F0AE/VisualBasicPowerPacks3Setup.exe
update the download links please :crying:
radiocity966 said:
update the download links please :crying:
Click to expand...
Click to collapse
Updated!
Hey, thanks for sharing!
You can update to 3.0 if you've got some time.
Maybe also my new app is interesting for you guys: Sysfile Copymaster
Makes it easy to work with system files.
Greetings
Flextrick said:
Hey, thanks for sharing!
You can update to 3.0 if you've got some time.
Maybe also my new app is interesting for you guys: Sysfile Copymaster
Makes it easy to work with system files.
Greetings
Click to expand...
Click to collapse
Alright! :thumbup:
I'll try your app soon!
Thanks for the update alert!
It refuses to recompile... no matter what.
It just won't compile. I edited nothing, recompiled it to test, and got a huge number of errors about it not being able to find directories. I moved the AndroidManifest.xml and META-INF folder...
TheTechnoToast said:
It just won't compile. I edited nothing, recompiled it to test, and got a huge number of errors about it not being able to find directories. I moved the AndroidManifest.xml and META-INF folder...
Click to expand...
Click to collapse
Post your query in the original thread.
aniket.lamba said:
Hi guys I'm just sharing the work of the XDA member Flextrick.This is a simple tool which helps you to compile/decompile and sign the apk's.​
- Easy handling: Select your apk and push the "decompile" button!
- This tool makes modding much faster and easier, no cmd handling any more.
- You can read the log which is integrated in the tool to find your mistake in the error. ​
Requirements:
Winows OS XP / 7 / 8
Installed Java on Windows
Installed Microsoft Powerpacks
Installed .NET framework
How to use this tool?​
Follow this small how to!
Here you go..
Well, first extract the AndroidApktool folder to C:\. Otherwise it propably won´t work
-copy your framework-res.apk and other files you want to mod in the "Files" folder (this folder is for all your files you want to mod, don't pick files from any other location)
-Next you have to start AndroidApktool.exe
-select your framework-res.apk and push the "install" button (check log for errors)
​
Decompiling and recompiling apk files:
-select the apk you want to mod/decompile and push the "decompile" button (check log for errors)
Note: You can check the "use baksmali" checkbox, then e.g. the useless .line text will be removed
-your decompiled apk will be located in C:\AndroidApktool\Decompiled_apk\"apkname" as a folder
-if you want to compile your apk again, select your decompiled folder, check the "apk" radiobutton and compile it again (check log for errors)
!!!NOTE!!! After compiling you have to copy the AndroidManifest.xml and the META-INF folder from your old apk to your newly compiled one!! Otherwise you´ll get bootloop! (Don't check the smali checkbox, it will create a classes.dex file from you smali files)
-your recompiled apk will be located in C:\AndroidApktool\Compiled_apk\"apkname"​
Decompiling and recompiling jar files:
-select in the combobox ".jar" (check the "use baksmali" checkbox for deleting the useless .line comments)
-select the ".jar" file you want to mod
-push the "decompile" button
-your decompiled jar file will be locaten in C:\AndroidApktool\Decompiled_jar\"jarname"
-for recompiling you have to check the "jar" radiobutton and select the folder within your decompiled ".jar" file
-push the compile button
-your compiled jar file will be located in C:\AndroidApktool\Compiled_jar\"jarname"\classes.d ex
-delete the "classes.dex" file in your ".jar" file
-copy the new "classes.dex" file you compiled in the ".jar" file
​
Signing apk files:
-select the ".apk" you want to sign
-push the "sign" button
-the signed apk file is located in C:\AndroidApktool\Signed_apk\"apkname_signed"
​
Downloads 1.Windows 8 - http://www.mediafire.com/download/3xc18gs3we9gt8h/AndroidMultitool_2.1.zip
2.Windows XP/Windows 7 - http://www.mediafire.com/download/5aby5m5zh9vj1h9/AndroidMultitool_2.1_Win7.zip
​
Questions and answers:
​
Q: The programm does not start, it crashes.
A: Please install Powerpacks, this one: http://download.microsoft.com/downl...-684E8AD6F0AE/VisualBasicPowerPacks3Setup.exe
Q: What do you mean exactly with "!!!NOTE!!! After compiling you have to copy the AndroidManifest.xml and the META-INF folder from your old apk to your newly compiled one!! Otherwise you´ll get bootloop! " .. I don't understand.
A: You have to open your old apk (this one you selected for decompiling in the folder /files) and copy from that apk the AndroidManifest.xml and the META-INF folder to the apk you just decompiled and recompiled. ​
Original Thread : http://forum.xda-developers.com/showthread.php?t=2326604​
Credits : ​
Click to expand...
Click to collapse
Link Not wrking man. Please Solve It .!!!
http://forum.xda-developers.com/showthread.php?p=42639253
GREETZ FROM TEAM-OPTIMA!!!

[Guide] Modding your rom.zip

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.

[TOOL][v1.2.0] Batch Deodexing Tools using Android Device

[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

Categories

Resources