Related
Deprecated.
Deprecated.
Deprecated.
I must be missing something..but how do i get to the com/android/server/status?
backdown said:
I must be missing something..but how do i get to the com/android/server/status?
Click to expand...
Click to collapse
This reference assumes that you already know how to recompile a framework file using smali/baksmali.
You're my hero for this, steel.
Just saying.
This is something that has driven me straight up the wall. Having so many useless icons means that when I finally do get some notifications, they get pushed right off the edge. I really can only seem to fit ~4 notifications most of the time before I get the arrow.
Well I've got the necessary lines changed to take out the location icons... Now to repackage it. Thanks for this!
Uh... I've never signed a .jar before. Anyone???
EDIT: I attached the services.jar I edited. It has to be signed for the phone to even boot up. Hopefully someone can sign this.
This is hot... I like it a lot. I have been looking for something like this for quiet awhile. Now to read up on smali/baksmali. I know how to edit a .jar file but there are "files" within that file.... Great... But I have to learn at least one thing a day right. If anyone has insight for me feel free to enlighten us but google search will suffice for now.
webby_s said:
This is hot... I like it a lot. I have been looking for something like this for quiet awhile. Now to read up on smali/baksmali. I know how to edit a .jar file but there are "files" within that file.... Great... But I have to learn at least one thing a day right. If anyone has insight for me feel free to enlighten us but google search will suffice for now.
Click to expand...
Click to collapse
Start here: http://code.google.com/p/smali/.
Thank you very much for posting this. This has been something bothering me since I got the device.
I have no idea how to use these tools, but I will figure them out.
EDIT: Figured it out. The steps worked! My taskbar is so clean and beautiful now!
Here are some VERY BASIC directions. Use at your own risk. They worked for me.
Make a backup of your services.jar on your device (or alternatively make a nandroid backup): adb shell cp /system/framework/services.jar /system/framework/services.jar.bak
Get services.jar from your device: adb pull /system/framework/services.jar .
Extract classes.dex from services.jar
Decompile the .dex file: java -jar baksmali.jar classes.dex -o outputdir
Make desired edits to the files now in outputdir/
Recompile the .dex file: java -Xmx512M -jar smali.jar outputdir/ -o classes.dex
Add the new (modified) classes.dex file to the existing services.jar file (which is actually a zip file)
Cross your fingers and push services.jar back to your device: adb push services.jar /system/framework/services.jar
Reboot device: adb reboot
How about someone post two edited and signed files to share with everyone else...?
EVOme said:
How about someone post two edited and signed files to share with everyone else...?
Click to expand...
Click to collapse
I believe (please correct me if I'm wrong) the services.jar could be different in certain ROMs or themes. It's better to make the edits yourself on the file that came off your device to preserve the integrity of the rest of your system.
EDIT: What we need is an app that makes the edits on the device for us...
Thanks, Xak
EVOme said:
Thanks, Xak
Click to expand...
Click to collapse
Sure thing. By the way, I love (and concur with) your avatar
So, as usual, I made this a lot more complicated than it needs to be. Somehow I was un-signing services.jar. I don't know. I got it to work now though. WORD!
many thanks to xak and the OP. with your help i was easily able to get rid of that pesky gps on/off icon! i appreciate the tips
Nice, this made me learn smali/baksmali and edit services.jar according to what I want.
Thanks!
webby_s said:
This is hot... I like it a lot. I have been looking for something like this for quiet awhile. Now to read up on smali/baksmali. I know how to edit a .jar file but there are "files" within that file.... Great... But I have to learn at least one thing a day right. If anyone has insight for me feel free to enlighten us but google search will suffice for now.
Click to expand...
Click to collapse
Very useful information about services.jar, smali/baksmali, classes.dex can be found HERE
As someone else mentioned, they learned how to use smali/baksmali and do customizations themselves. My OP along with the link posted here gives you all the info you need to perform these mods yourself, and at the same time you will learn a great deal on customizing your evo; The benefits of which are endless!
One final note, you need to use the services.jar from the ROM you are running, THEY ARE NOT interchangeable due to the fact that almost all ROM devs add some customizations into their roms.
SteelH - thanks for posting this! I love learning new things, so this was interesting... wasn't exactly sure where to start though, so these steps from xak were a great help.
xak944 said:
Thank you very much for posting this. This has been something bothering me since I got the device.
I have no idea how to use these tools, but I will figure them out.
EDIT: Figured it out. The steps worked! My taskbar is so clean and beautiful now!
Here are some VERY BASIC directions. Use at your own risk. They worked for me.
Make a backup of your services.jar on your device (or alternatively make a nandroid backup): adb shell cp /system/framework/services.jar /system/framework/services.jar.bak
Get services.jar from your device: adb pull /system/framework/services.jar .
Extract classes.dex from services.jar
Decompile the .dex file: java -jar baksmali.jar classes.dex -o outputdir
Make desired edits to the files now in outputdir/
Recompile the .dex file: java -Xmx512M -jar smali.jar outputdir/ -o classes.dex
Add the new (modified) classes.dex file to the existing services.jar file (which is actually a zip file)
Cross your fingers and push services.jar back to your device: adb push services.jar /system/framework/services.jar
Reboot device: adb reboot
Click to expand...
Click to collapse
In addition to these steps, I wanted to mention a few things... these might be obvious to most, but hopefully they help someone.
- to extract and re-add classes.dex from/to services.jar, use winzip
- to modify the .smali files that Steel mentions, use notepad
- you will need to mount /system as read/write before you can push services.jar back to the phone
- it took a long time for my phone to reboot... i got pretty nervous
thanks again, I love not having the alarm and gps icons taking up space
My epic was lost,so I cannt continue to work for it.
Now i make a porting guide for you.You can continue to work for it based on the present build.It may need more additional works in the furture if the cm7 fixes others things.
1. Download miui_port_ns.zip and ns (or ns 4g,or others)miui rom from miui.us.
miui_port_ns.zip contains some files come from cm7 and EH17. What we need to do is that replace some files of miui.us latest rom with miui_port_ns's ones.
2. Extract miui_port_ns.zip to “miui_port_ns”.
3. Extract the ns(or ns 4g)miui rom to a new folder,then rename it “miui_epic”.
4. cd into “miui_epic”,delete all folders and files except “system” folder.(In the future,if our cm7 support mtd,you may need reserve some related files)
5. copy kernel_update/ and META-INF/ folders to “miui_epic”
6. cd into “miui_epic/system/vendor”
(1) delete bin/pvrsrvinit
(2) delete etc/
(3) cut and replace lib/ to system/lib/
7. cd into “miui_epic/system/lib”,delete egl/ and hw/ folders.
8. Cd into “miui_epic/system/app”,delete Nfc.apk and Tag.apk(nfc related).
9. Copy and replace “miui_port_ns/system/” to “miui_epic/system/”.
10. Modify build version in miui_epic/system/buid.prop.
11. Modify system/framework/ framework.jar to enable data:
(1) Smali framework.jar: apktool d framework.jar
(2) Copy and replace “miui_port_ns/framework.jar/com” to “framework.jar.out/smali/com”
(3) Baksmali framework.jar: apktool b framework.jar.out
(4) Copy and replace framework.jar.out/dist/ framework.jar to miui_epic/system/framework/
12. Modify system/framework/ framework-res.apk to remove “Roaming Indicator” chars:
(1) apktool d framework-res.apk
(2) Cd into framework-res/res,open strings.xml in “values”,” values-en-rUS”,” values-zh-rCN”,search for “roamingText1”,set value null,then save them.
(3) apktool b framework-res
(4) Replace miui_epic/system/framework/ framework-res.apk’s resources.arsc with framework-res/build/apk/resources.arsc.
13. The last step:cd into miui_epic,zip “kernel_update”,” META-INF” and ” system” to a zip file.You also can sign it(not have to).Then flash it!
Thanks:EpicCM team,xboxfanj and and many other contributors.
bxfxf said:
My epic was lost,so I cannt continue to work for it.
Now i make a porting guide for you.You can continue to work for it based on the present build.It may need more additional works in the furture if the cm7 fixes others things.
1. Download miui_port_ns.zip and ns (or ns 4g,or others)miui rom from miui.us.
2. Extract miui_port_ns.zip to “miui_port_ns”.
3. Extract the ns(or ns 4g)miui rom to a new folder,then rename it “miui_epic”.
4. cd into “miui_epic”,delete all folders and files except “system” folder.(In the future,if our cm7 support mtd,you may need reserve some related files)
5. copy kernel_update/ and META-INF/ folders to “miui_epic”
6. cd into “miui_epic/system/vendor”
(1) delete bin/pvrsrvinit
(2) delete etc/
(3) cut and replace lib/ to system/lib/
7. cd into “miui_epic/system/lib”,delete egl/ and hw/ folders.
8. Cd into “miui_epic/system/app”,delete Nfc.apk and Tag.apk(nfc related).
9. Copy and replace “miui_port_ns/system/” to “miui_epic/system/”.
10. Modify build version in miui_epic/system/buid.prop.
11. Modify system/framework/ framework.jar to enable data:
(1) Smali framework.jar: apktool d framework.jar
(2) Copy and replace “miui_port_ns/framework.jar/com” to “framework.jar.out/smali/com”
(3) Baksmali framework.jar: apktool b framework.jar.out
(4) Copy and replace framework.jar.out/dist/ framework.jar to miui_epic/system/framework/
12. Modify system/framework/ framework-res.apk to remove “Roaming Indicator” chars:
(1) apktool d framework-res.apk
(2) Cd into framework-res/res,open strings.xml in “values”,” values-en-rUS”,” values-zh-rCN”,search for “roamingText1”,set value null,then save them.
(3) apktool b framework-res
(4) Replace miui_epic/system/framework/ framework-res.apk’s resources.arsc with framework-res/build/apk/resources.arsc.
13. The last step:cd into miui_epic,zip “kernel_update”,” META-INF” and ” system” to a zip file.You also can sign it(not have to).Then flash it!
Thanks:EpicCM team,xboxfanj and and many other contributors.
Click to expand...
Click to collapse
Awesome! Sorry to hear about your epic though. Thanks for the work you've put into it, and thanks for the future work that this will inspire.
Thanks for this. Maybe more devs can jump on this. Think we seen many modified touchwiz roms!!
Sent from my SPH-D700 using Tapatalk
Thank you bxfxf. I'll miss you.
Sent from my SPH-D700 using Tapatalk
I hope other dev's pick this up! I love this ROM! I hope it does die!
Thank you so much for your work! You've done a hell of a job!
bxfxf said:
My epic was lost,so I cannt continue to work for it.
Now i make a porting guide for you.You can continue to work for it based on the present build.It may need more additional works in the furture if the cm7 fixes others things.
Click to expand...
Click to collapse
Thank you for all of your hard work and for these wonderful instructions!
joshts0 said:
I hope other dev's pick this up! I love this ROM! I hope it does die!
Thank you so much for your work! You've done a hell of a job!
Click to expand...
Click to collapse
Lol... just going to let you know.. you said you hope the rom does die
I'm pretty sure yall knew someone was gonna ask this sooner or later..
but, is there anyway a flashable version of this can be uploaded..
becasue I dont know what..
"cd into" means (maybe copy directory.. but I dont think thats right..)
"Smali" means..
"Baksmali" means..
"apktool b framework-res" mean..
pretty much im lost after step 3. "Extract the ns(or ns 4g)miui rom to a new folder,then rename it “miui_epic”."
I dont mind doing it myself and learning.. So maybe a link to a video that goes thru the steps..
bigdreco said:
I'm pretty sure yall knew someone was gonna ask this sooner or later..
but, is there anyway a flashable version of this can be uploaded..
becasue I dont know what..
"cd into" means (maybe copy directory.. but I dont think thats right..)
"Smali" means..
"Baksmali" means..
"apktool b framework-res" mean..
pretty much im lost after step 3. "Extract the ns(or ns 4g)miui rom to a new folder,then rename it “miui_epic”."
I dont mind doing it myself and learning.. So maybe a link to a video that goes thru the steps..
Click to expand...
Click to collapse
These are commands that need to be run
"Cd" means change directory, move to folder etc.
"Smali" and "baksmali" are used to decompile and compile .jars basically.
And "apktool d framework-res.apk" will decompile the framework-res.apk.
If I'm wrong correct me please
Sent from my Samsung Legen-wait for it-dary! 4g
bigdreco said:
I'm pretty sure yall knew someone was gonna ask this sooner or later..
but, is there anyway a flashable version of this can be uploaded..
becasue I dont know what..
"cd into" means (maybe copy directory.. but I dont think thats right..)
"Smali" means..
"Baksmali" means..
"apktool b framework-res" mean..
pretty much im lost after step 3. "Extract the ns(or ns 4g)miui rom to a new folder,then rename it “miui_epic”."
I dont mind doing it myself and learning.. So maybe a link to a video that goes thru the steps..
Click to expand...
Click to collapse
If i understand what you are saying correctly...
A flashable version has been posted for a while: here
These instructions are for developers to be able to take the latest version as MIUI is updated and recompile it so that we have the latest version of MIUI available for our phones.
Death259 said:
If i understand what you are saying correctly...
A flashable version has been posted for a while: here
These instructions are for developers to be able to take the latest version as MIUI is updated and recompile it so that we have the latest version of MIUI available for our phones.
Click to expand...
Click to collapse
Yea.. that is the version that I was using for about a week, up till today..
but as I was reading the instructions from this one.. I noticed that it compiles files from miui_port_ns.zip with files from miui.us.. and I know miui.us is the "american version".. so I figured that it would take away most of the Japanese language/apps that I don't understand..
So, maybe this is a dumb question...
But aren't steps 6-8 irrelevant, if you proceed with step 9?
ac16313 said:
These are commands that need to be run
"Cd" means change directory, move to folder etc.
"Smali" and "baksmali" are used to decompile and compile .jars basically.
And "apktool d framework-res.apk" will decompile the framework-res.apk.
If I'm wrong correct me please
Sent from my Samsung Legen-wait for it-dary! 4g
Click to expand...
Click to collapse
yea,you are right!
I am sorry my english is poor,these instructions may have some grammar errors.
Should the step 12(4) comes before 12(3)?
Sent from my SPH-D700 using Tapatalk
hienkhieu said:
Should the step 12(4) comes before 12(3)?
Sent from my SPH-D700 using Tapatalk
Click to expand...
Click to collapse
No.Should do "apktool b framework-res" first,then you can get the new file "resources.arsc" in framework-res/build/apk/ ,then put it in the original framework-res.apk.
bigdreco said:
Yea.. that is the version that I was using for about a week, up till today..
but as I was reading the instructions from this one.. I noticed that it compiles files from miui_port_ns.zip with files from miui.us.. and I know miui.us is the "american version".. so I figured that it would take away most of the Japanese language/apps that I don't understand..
Click to expand...
Click to collapse
Lol... that was a one time messup. You just got lucky with the one you tried Everyone other version i have used doesn't have the language issue.
Death259 said:
Lol... that was a one time messup. You just got lucky with the one you tried Everyone other version i have used doesn't have the language issue.
Click to expand...
Click to collapse
OHHH.. OK..well imma upgrade to the new version that was posted yesterday 11/17/2011 and see how it works out for me.. thanks!!
bxfxf said:
My epic was lost,so I cannt continue to work for it.
Now i make a porting guide for you.You can continue to work for it based on the present build.It may need more additional works in the furture if the cm7 fixes others things.
1. Download miui_port_ns.zip and ns (or ns 4g,or others)miui rom from miui.us.
miui_port_ns.zip contains some files come from cm7 and EH17. What we need to do is that replace some files of miui.us latest rom with miui_port_ns's ones.
2. Extract miui_port_ns.zip to “miui_port_ns”.
3. Extract the ns(or ns 4g)miui rom to a new folder,then rename it “miui_epic”.
4. cd into “miui_epic”,delete all folders and files except “system” folder.(In the future,if our cm7 support mtd,you may need reserve some related files)
5. copy kernel_update/ and META-INF/ folders to “miui_epic”
6. cd into “miui_epic/system/vendor”
(1) delete bin/pvrsrvinit
(2) delete etc/
(3) cut and replace lib/ to system/lib/
7. cd into “miui_epic/system/lib”,delete egl/ and hw/ folders.
8. Cd into “miui_epic/system/app”,delete Nfc.apk and Tag.apk(nfc related).
9. Copy and replace “miui_port_ns/system/” to “miui_epic/system/”.
10. Modify build version in miui_epic/system/buid.prop.
11. Modify system/framework/ framework.jar to enable data:
(1) Smali framework.jar: apktool d framework.jar
(2) Copy and replace “miui_port_ns/framework.jar/com” to “framework.jar.out/smali/com”
(3) Baksmali framework.jar: apktool b framework.jar.out
(4) Copy and replace framework.jar.out/dist/ framework.jar to miui_epic/system/framework/
12. Modify system/framework/ framework-res.apk to remove “Roaming Indicator” chars:
(1) apktool d framework-res.apk
(2) Cd into framework-res/res,open strings.xml in “values”,” values-en-rUS”,” values-zh-rCN”,search for “roamingText1”,set value null,then save them.
(3) apktool b framework-res
(4) Replace miui_epic/system/framework/ framework-res.apk’s resources.arsc with framework-res/build/apk/resources.arsc.
13. The last step:cd into miui_epic,zip “kernel_update”,” META-INF” and ” system” to a zip file.You also can sign it(not have to).Then flash it!
Thanks:EpicCM team,xboxfanj and and many other contributors.
Click to expand...
Click to collapse
I started last night on making a GUI that will automate this process. Basically all that will need to be done is the downloading of a new version whenever it comes out. I'm thinking the baksmali/smali stuff will cause an issue, and might not be able to be automated, and if that's the case, then i will just do as much automation as i can.
One question though... is this the smali/baksmali tool everyone is using?
Death259 said:
I started last night on making a GUI that will automate this process. Basically all that will need to be done is the downloading of a new version whenever it comes out. I'm thinking the baksmali/smali stuff will cause an issue, and might not be able to be automated, and if that's the case, then i will just do as much automation as i can.
One question though... is this the smali/baksmali tool everyone is using?
Click to expand...
Click to collapse
That is correct
Sent from my Samsung Legen-wait for it-dary! 4g
bxfxf said:
My epic was lost,so I cannt continue to work for it.
Now i make a porting guide for you.You can continue to work for it based on the present build.It may need more additional works in the furture if the cm7 fixes others things.
1. Download miui_port_ns.zip and ns (or ns 4g,or others)miui rom from miui.us.
miui_port_ns.zip contains some files come from cm7 and EH17. What we need to do is that replace some files of miui.us latest rom with miui_port_ns's ones.
2. Extract miui_port_ns.zip to “miui_port_ns”.
3. Extract the ns(or ns 4g)miui rom to a new folder,then rename it “miui_epic”.
4. cd into “miui_epic”,delete all folders and files except “system” folder.(In the future,if our cm7 support mtd,you may need reserve some related files)
5. copy kernel_update/ and META-INF/ folders to “miui_epic”
6. cd into “miui_epic/system/vendor”
(1) delete bin/pvrsrvinit
(2) delete etc/
(3) cut and replace lib/ to system/lib/
7. cd into “miui_epic/system/lib”,delete egl/ and hw/ folders.
8. Cd into “miui_epic/system/app”,delete Nfc.apk and Tag.apk(nfc related).
9. Copy and replace “miui_port_ns/system/” to “miui_epic/system/”.
10. Modify build version in miui_epic/system/buid.prop.
11. Modify system/framework/ framework.jar to enable data:
(1) Smali framework.jar: apktool d framework.jar
(2) Copy and replace “miui_port_ns/framework.jar/com” to “framework.jar.out/smali/com”
(3) Baksmali framework.jar: apktool b framework.jar.out
(4) Copy and replace framework.jar.out/dist/ framework.jar to miui_epic/system/framework/
12. Modify system/framework/ framework-res.apk to remove “Roaming Indicator” chars:
(1) apktool d framework-res.apk
(2) Cd into framework-res/res,open strings.xml in “values”,” values-en-rUS”,” values-zh-rCN”,search for “roamingText1”,set value null,then save them.
(3) apktool b framework-res
(4) Replace miui_epic/system/framework/ framework-res.apk’s resources.arsc with framework-res/build/apk/resources.arsc.
13. The last step:cd into miui_epic,zip “kernel_update”,” META-INF” and ” system” to a zip file.You also can sign it(not have to).Then flash it!
Thanks:EpicCM team,xboxfanj and and many other contributors.
Click to expand...
Click to collapse
On step 11(1) you have to "Smali framework.jar: apktool d framework.jar" does this mean i need to do both, or i can i do one or the other?
Death259 said:
I started last night on making a GUI that will automate this process. Basically all that will need to be done is the downloading of a new version whenever it comes out. I'm thinking the baksmali/smali stuff will cause an issue, and might not be able to be automated, and if that's the case, then i will just do as much automation as i can.
One question though... is this the smali/baksmali tool everyone is using?
Click to expand...
Click to collapse
I use apktool, but both are probably fine. To answer ur question about step11, u have to baksmali first, then modify whatever he said to modify, then smali
Sent from my SPH-D700 using Tapatalk
Normally to decompile my dex files I use smali and baksmali, how can I re-odex them?
Id like to get my service.jar re-odexed so I can try and push it to my phone via a zip update.
Sent from my MB865 using xda premium
[mini HOW-TO] Re-Odex (or create a new .odex file)
Fall of Enosis said:
Normally to decompile my dex files I use smali and baksmali, how can I re-odex them?
Id like to get my service.jar re-odexed so I can try and push it to my phone via a zip update.
Sent from my MB865 using xda premium
Click to expand...
Click to collapse
It all needs to be done on your phone, live.. with adb.
Here's how I accomplished it - I will use the services.jar in this example. Just change the file name and path to existing .odex accordingly for other files (not sure if all steps are required exactly, but it has worked for me multiple times with different jars and SysUI apk):
Requirements:
Odexed system
adb
dexopt-wrapper
Put this dexopt-wrapper file (unzip first) in /system/bin with 775 permissions:
X X X
X....X
X....X
Probably a good idea to reboot after pushing that file, if you use root explorer (like I did).
Put the deodexed services.jar (or other jar/apk file you want to make an new odex of) on your sd card.
Go to /system folder (with root explorer or equal) and mount it R/W (not sure if this is necessary - but won't hurt)
Put your USB connection to "Charge only" mode.
Go here (big props and credit to jhotmann for this) and follow steps 8-12 (I've recreated the steps with the A2's bootclasspath below).
The bootclass path is located in the /init.rc file at the root of your phone.
Connect with adb (do a adb devices check to make sure you're all good).
To create the new odex:
Code:
adb shell
su
cd /sdcard/
dexopt-wrapper services.jar new.odex /system/framework/core.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/core-junit.jar:/system/framework/com.motorola.android.frameworks.jar:/system/framework/com.motorola.android.widget.jar
I know it's a long entry for those who don't work with command lines often (like me), but double check your entry before hitting enter.
To copy the signature from the existing odex (change path to /system/app/.. if necessary):
Code:
busybox dd if=/system/framework/services.odex of=new.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
Done! Rename new.odex (created on your /sdcard) to services.odex since that is your new signed odex file...
You can then get that on your odexed system by your choice of method (adb push, update.zip, root explorer push, etc.. - note: please know what you are doing before trying to push files with root explorer! - you cannot simply copy and paste!)
Or, if you want to deodex it right away again for some odd reason like I did (personal issues )... Take the services.jar and the new services.odex from your sdcard and put them on your computer - and open the services.jar with 7-zip (maybe winzip) and delete the classes.dex file from the 7-zip window. Now you have a fresh new set of .jar/.odex files ready for deodexing (I did this all with the SystemUI.apk last night, that's why I elaborated and re-typed this whole thing today..).
Frigging brilliant man.
Much appreciated. I'm super sick and my USB cable is at work.
Once i get it back on Wednesday, I'll work all this out. If I could thank you twice I would.
Thanks man!
Sent from my MB865 using xda premium
Fall of Enosis said:
Frigging brilliant man.
Much appreciated. I'm super sick and my USB cable is at work.
Once i get it back on Wednesday, I'll work all this out. If I could thank you twice I would.
Thanks man!
Sent from my MB865 using xda premium
Click to expand...
Click to collapse
Not a prob.
And, I updated the dexopt-wrapper link so it's easier to download - just unzip it first..
Good luck on your quest.. let me know if you catch any snags along the way - and i'll try and help you out.
Sent from my mind using XDA
Ok sooo, I think we (or most likely me) are confused on what I wanted to do. I don't want to make a NEW odex file. I need to recombine my modded classes.dex BACK with the service.jar.
Since I needed to modify some script in the services.jar I had to de-odex it so I had a classes.dex file to use baksmali with so I could modify it. Once I modded it I used smali to create the NEW MODDED classes.dex. And now I need to re-odex(bad terminology?) them to re-combine the services.jar with the classes.dex so the modded services.jar could be used on a odexed ROM.
I'm working on a de-odexed version also, but I'd like to be able to offer both
Fall of Enosis said:
Ok sooo, I think we (or most likely me) are confused on what I wanted to do. I don't want to make a NEW odex file. I need to recombine my modded classes.dex BACK with the service.jar.
Since I needed to modify some script in the services.jar I had to de-odex it so I had a classes.dex file to use baksmali with so I could modify it. Once I modded it I used smali to create the NEW MODDED classes.dex. And now I need to re-odex(bad terminology?) them to re-combine the services.jar with the classes.dex so the modded services.jar could be used on a odexed ROM.
I'm working on a de-odexed version also, but I'd like to be able to offer both
Click to expand...
Click to collapse
So, you have a deodexed services.jar (with an unedited classes.dex inside)? And, you also have an edited classes.dex (the new modded one). Just drag and drop the new modded classes.dex into the services.jar file with 7-zip to overwrite the old one.
Then I would check out the mods on a deodexed system, and provided they work, then go through the re-odexing process (separating that classes.dex from the apk and creating a new odex file) as described above to get it working on odexed systems.
Hope that helps.. Good luck!
Yes sir, you are correct. That was the first thing I tried to do was just drag and drop the modded classes.dex with 7zip, save it, however when i tried to flash the "modded" ROM it can't install the system folder because (according to Jim), when I modded copied the new classes.dex, I changed the size, and so the signature needed to be changed as well. They mismatched.
Fall of Enosis said:
Yes sir, you are correct. That was the first thing I tried to do was just drag and drop the modded classes.dex with 7zip, save it, however when i tried to flash the "modded" ROM it can't install the system folder because (according to Jim), when I modded copied the new classes.dex, I changed the size, and so the signature needed to be changed as well. They mismatched.
Click to expand...
Click to collapse
Not sure about the details of that.. I know the signatures can be tricky, but I've modded a few apks/jars similarly with no problems... when you say "can't install.." is that it wouldn't flash in recovery, or you bootlooped?
Just wouldn't flash at all.
And thanks for all your help man.
Sent from my MB865 using xda premium
I've updated the 2nd post with more detail on creating a new odex file...
Not to be a "rooster" (replace with your word of choice) or anything, but maybe this info has a place somewhere besides the general threads..?:angel: (and what is up with these new Smilies and posting reply layout?) - it just seems so hard to come by good literature on this process (which, I suppose, is a process so rarely needed though...)
So I need to perform the processes above while running in an odexed environment correct? Does this process change the deodexed APK we are running the script on to an odexed one as well as create a new .odex file for that APK? I am just confused about what the result is after running the script. For my situation I want to take 2 deodexed files (systemui and sec settings.apk) and odex them. Then push them into an odexed rom. Once I run the script above what am I left with?
Didact74 said:
So I need to perform the processes above while running in an odexed environment correct?
YES.
Does this process change the deodexed APK we are running the script on to an odexed one as well as create a new .odex file for that APK?
(Yes, it will create a new odex file that you will need to rename, but..)NO. You will need to take the classes.dex out of the deodexed apk/jar - use something like 7-zip. Unless you only edited smali, then you really only need the new odex file.
I am just confused about what the result is after running the script. For my situation I want to take 2 deodexed files (systemui and sec settings.apk) and odex them. Then push them into an odexed rom. Once I run the script above what am I left with?
Click to expand...
Click to collapse
I broke up your quote with my best answers...
As for what your're left with is a new.odex file, properly signed, if all goes well. You are going to need to do it for each of your deodexed files.
Rename them, remove the classes.dex from the deodexed files you used, and get them on your phone however you choose (I prefer zip packages and a restore.zip in case something goes wrong).
Also note that the bootclass path is different from GB to ICS.. and among different devices of course. Check init.rc file if need be. I posted the one to use for A2 ICS (think it may be the same for razr too) here: http://forum.xda-developers.com/showthread.php?t=1753659
I can't garuntee you won't have problems, but good luck... if you do you could try the dexopt-wrapper from here: http://forum.xda-developers.com/showthread.php?t=1645950 - just unzip it first obviously (but I think it's the exact same file though..)
Btw, it's all done with adb, one line at a time.. not really a script, but thank you for the idea - maybe a batch file?
Sent from my phone's mind
Great, thank you for the detailed response. Last question.
What if I have the original SystenUI.odex and SecSettings.odex files that used to be attributed to them before i deodexed them? Can I simply reuse those without having to run through the adb process?
Thanks,
Didact74 said:
Great, thank you for the detailed response. Last question.
What if I have the original SystenUI.odex and SecSettings.odex files that used to be attributed to them before i deodexed them? Can I simply reuse those without having to run through the adb process?
Thanks,
Click to expand...
Click to collapse
But, you deodexed them to edit the smali files in the classes.dex right? So, no, you will need to use the new odex files that are created from the modded deodexed files you used..
If you never edited any of the smali files, then you didn't need to deodex in the first place... you only need to deodex in order to mod the smali files - everything else in the apk can be modded as is on odexed systems.
Sent from my phone's mind
Thank you very much. Can you repost the wrapper file? Its not downloading correctly.
Didact74 said:
Thank you very much. Can you repost the wrapper file? Its not downloading correctly.
Click to expand...
Click to collapse
Updated the link in Post #2 with a zip file - you need to unzip it first then move it.
Thank you.
So I am getting an error trying to re-odex. See the attached image of the error.
Weird thing is that even though I get an error it still creates the new.odex file. I triedto go through the entire process even though I was getting errors and it just got stuck on the boot screen and never loaded. Anything in my error attached raise any flags?
Thanks,
Didact74 said:
Thank you.
So I am getting an error trying to re-odex. See the attached image of the error.
Weird thing is that even though I get an error it still creates the new.odex file. I triedto go through the entire process even though I was getting errors and it just got stuck on the boot screen and never loaded. Anything in my error attached raise any flags?
Thanks,
Click to expand...
Click to collapse
Hmmm... First thing I can think of is: are all of those framework files in the bootclass path that you used actually in your /framework folder? With our A2, in ICS there are a few extra .jar files listed that were not actually on our phone, so I had to remove those from the path...
I will try to make a new odex myself and make sure that's not a standard error message... @Fall of Enosis, you recall what it spits out?
EDIT: Shoot - forgot I'm deodexed right now... will attempt later or hear back from Fall by then..
alteredlikeness said:
Hmmm... First thing I can think of is: are all of those framework files in the bootclass path that you used actually in your /framework folder? With our A2, in ICS there are a few extra .jar files listed that were not actually on our phone, so I had to remove those from the path...
I will try to make a new odex myself and make sure that's not a standard error message... @Fall of Enosis, you recall what it spits out?
EDIT: Shoot - forgot I'm deodexed right now... will attempt later or hear back from Fall by then..
Click to expand...
Click to collapse
Yes, all .jar files listed in my bootclass were located in the framework directory.
Nevermind...my mistake. I had an issue with my files not being deodexed correctly from the start. I went back and deodexed, made the edits to res and smali then odexed using the method above again and all went well!
Thanks!
Here in this tutorial, I will show some facts about Deodex and Odex, then explain how to odex the framework of a ROM(which is pretty annoying, you'll find out). Credits goes to myself
This method should work on all Android devices.
------------------------------------------------------------------------------------------------------------
First of all, what is odex? Something you should know about classes.dex.
Odex stands for Optimized dex. I'm not gonna explain a lot because I'm not sure if I'm right. First of all, in typical apk files, when you open it with WinRAR or something like that, you can find a file called "classes.dex"(this type of apk is deodexed). This file is the key. It contains the core codes of the apk. However the other type of apk comes with an *.odex file and doesn't have classes.dex inside the apk file. This is odexed apk. There are 2 types of ROMs here, odexed and deodexed. Odexed ROMs' classes.dex are already out of the apk files, while deodexed ROMs' classes.dex are still in the apks. When Android executes an apk, it has to extract the classes.dex out and execute it. So when you flash an deodexed ROM, the first boot takes a long long time since the Android system needs to extract all the classes.dex into dalvik-cache(it shows "Optimizing apks" on the screen for 4.0 ROMs, shows boot animation on screen for 2.3 or below ROMs). However for the odexed ROMs, because the classes.dex are already out there, the system just grabs them and use them, without wasting time and storage space extracting classes.dex out.
Why odex framework?
It can boost your device a little by odexing your framework. Your phone can run more efficiently. Although it's a complicated process, but trust me, it's worth it.
What is so special about odexing framework files? What's the difference?
Odexing an app is very easy, and I believe everyone knows how to do it. But odexing framework is really annoying. Why? Because apps and more like stand-alone things, they are not a part of system. You delete it, nothing bad happens, your phone still boots, you just get endless FC if you delete the wrong one, or missing status bar, that's all. But framework files you cannot mess around. They are parts of the system. They have to match the system's codes precisely, without any error, even the order of files(keep this in mind, very important). So for every ROM, the framework initialize codes are different(same RUU or other ROM based ROMs count as its base ROM), and you must modify the odexing binary to make it odex for you properly, or you can sit and watch the beautiful bootloop.
What's the relationship between odexing apps and odexing framework?
Simple, but important. If you odexed apps, you cannot touch the framework. Framework always goes in the first place. If you wanna odex both, you must odex framework first. Or... "The Tragedy of App and Framework"...
So what do we have to keep in mind before we start?
Keep your mind clear, prepare a bag of ice in case you feel dizzy with the codes, and MAKE ENOUGH SPACE FOR FRAMEWORK ODEXING. I would prefer you remove a few useless apks in /system/app first to make more room in system partition. Failing odexing may brick your device forever! Nah just kidding it will only cause you to bootloop. No big deal. Also, it won't odex your framework-res.apk and always will not, so don't feel bad and do it again and again till your phone burn . Make sure your device is ROOTED and enable USB debug. You need Java Runtime Environment.
What tools do you need?
Notepad++ and a magical rar that contains all you need to success.
Let's get started.
------------------------------------------------------------------------------------------------------------
1. Use your file manager to find init.rc at the very root directory of your phone and copy it to SDCard for later code editing, or you simply adb pull it out and skip the coping step. (If you know how to compile boot.img it is even easier, just unpack boot in Android Kitchen, look for line "export BOOTClassPATH". I'm not gonna introduce that method since most people can't. Silly me, didn't I just intoduced that? XD)
2. Connect USB, set mode as disk drive so you can access your SDCard. Copy init.rc into your computer. Open it with notepad, and find where it says "export BOOTClassPATH", create a new file and copy line "export BOOTClassPATH" into the new file. For example:
Code:
export BOOTCLASSPATH/system/framework/core.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/core-junit.jar:/system/framework/HTCExtension.jar:/system/framework/com.htc.framework.jar:/system/framework/com.htc.android.pimlib.jar:/system/framework/com.htc.android.easopen.jar:/system/framework/com.scalado.util.ScaladoUtil.jar:/system/framework/com.orange.authentication.simcard.jar:/system/framework/android.supl.jar:/system/framework/com.ecrio.sip.jar
3. Open dexopter in the rar you downloaded with Notepad++. Find the lines that show the similar contents to the things after "export BOOTClassPATH". It is Line 21 to Line 35 on my laptop. Edit them according to the things you just copied out of init.rc. For example, if the first file is "X.jar", then you will have to edit the line into "dexopt-wrapper/system/framework/X.jar /system/framework/X.odex". Then repeat until you finish with all the files that are listed in the long list you copied out of init.rc. File order DOES MATTER. Use the bag of ice I told you to prepare eariler to make you sober if you feel dizzy with the codes. The lines may be more or less after you edited them, doesn't matter.
4. Copy "dexopter" and "dexopt-wrapper" into /system/bin and set the correct permissions. Make sure they have enough permission to change your system files. Restart your phone.
5. Go to CMD and lead it to where adb.exe is(included in the rar). Type these in order:
Code:
adb shell
su
cd system/framework
dexopter fr
Then the codes will run crazy in your cmd window... The odex process has begun!
6. If the odex process completed without error, you are half way there! Well it doesn't mean you have to stare at your screen during the process. It's about time we figure it out! The phone will automatically reboot once it's finished. If it doesn't and you are sure all are done, reboot manually.
7. If you can't boot properly, go back and check everything carefully. If you can, then open your file manager and copy the entire framework directory into your SDCard. You can still adb pull and skip the next coping step.
8. Mount SDCard. Go into framework directory on your computer. Open every file that has an odex file with it, delete the classes.dex inside. WinRAR is okay. The files may seem ridiculously small after you delete the classes.dex, but don't worry since classes.dex are already pulled out and turned into odex files.
9. Copy the whole framework folder into the folder where adb is at. Use adb to push all the files back into /system/framework.
Code:
adb root
adb remount
adb push framework /system/framework
adb shell
su
chmod /system/framework xxx (xxx is a permission code, depends on your ROM. They should be the same as the old deodexed framework files. Use Google to find out how to use the permission codes.)
10. After all the files are pushed in, reboot your phone.
11. If it still boots into the system, congratulations! You've successfully odexed your framework! If it doesn't, then go back and read everything carefully. The most common error occurs when you are editing the dexopter code. You will have to redo everything again.
Done! Everything is ready to go!
You can directly grab the files you've odexed and put it in your custom ROM(must be the same base), just don't forget the odex files.
------------------------------------------------------------------------------------------------------------
Okay, hmm, what to say now? Still, I would be glad if you donated me, but if you don't it's okay, just reply and hit thanks .
Oh almost forgot, the magical rar: http://d-h.st/tYi
------------------------------------------------------------------------------------------------------------
Big thanks to Scott, see him in #3. He explained why some files aren't odexed and provided a easier method(but they all get you dizzy )
Big thanks to JSLEnterprises, see him in #4. He provided a newer busybox for Scott's method.
If you can, send me a PM on how to odex apps.
Sent from my HTC One X using Tapatalk 2
BreatheHT said:
Here in this tutorial, I will show some facts about Deodex and Odex, then explain how to odex the framework of a ROM(which is pretty annoying, you'll find out). Credits goes to myself
Also, it won't odex your framework-res.apk and always will not, so don't feel bad and do it again and again till your phone burn . Make sure your device is ROOTED and enable USB debug. You need Java Runtime Environment.
Click to expand...
Click to collapse
Good write up. Other files that wont "re-odex" are com.htc.resources.apk, com.htc.videowidget.res.apk, com.htc.weather.res.apk and framework-htc-res.apk.
The reason? The files dont have .dex files because there is no code in them. These files just carrier resources like images (for those that didint know).
The .dex files are the actual smali code that devs mod to make the ROM do crazy things
Also, an easier method can be found here: http://themikmik.com/showthread.php?12988-Tool-App-Dexo-the-Universal-Odex-Utility
It does it all and pulls the bootclass for you. And it also does /system/app/ in one simple shot.
Also, one last thing... You can just as easily pull the files back to the PC using the ADB Pull command...
Code:
adb pull /system/app ./app
adb pull /system/framework/ ./framework
EDIT: And another simple method to get your bootclass is do another ADB Pull
Code:
add pull init.rc
I find the adb pull method quicker and more simple...
theking_13 said:
If you can, send me a PM on how to odex apps.
Sent from my HTC One X using Tapatalk 2
Click to expand...
Click to collapse
You can use the method I just explained or if you want to try the framework manually then do apps seperately then you can use this: http://forum.xda-developers.com/showthread.php?t=1514576
I use that app to re-odex updated files in the ROM. For example... If Gmail updates (which it just did) I would remove the old gmail files from system/app/ and put the new one in and run that program then pull the files.
-Scott
If anyone finds this to be too much work... dont worry... it only unpacks the classes.dex once. It will only need to unpack a dex if original file has changed (changed entries need to propogate). That's why all the consecutive boots are back to a 'normal' span of time.
re-odexing your roms IS recommended if either A) you're anal-retentive/have OCD or B) propogation ("Android is Upgrading...") happens every time you reboot your device (it happens sometimes)
If you're going to use the tool scrosler linked to, replace the busybox binary with the one inside the attatched zip (this is busybox 1.20.1). The one that come with the tool is pretty dated.
:good:
Update: Busybox 1.20.2 has been released (though not compiled for android use yet)
Great stuff guys.
scrosler said:
Good write up. Other files that wont "re-odex" are com.htc.resources.apk, com.htc.videowidget.res.apk, com.htc.weather.res.apk and framework-htc-res.apk.
The reason? The files dont have .dex files because there is no code in them. These files just carrier resources like images (for those that didint know).
The .dex files are the actual smali code that devs mod to make the ROM do crazy things
Also, an easier method can be found here: http://themikmik.com/showthread.php?12988-Tool-App-Dexo-the-Universal-Odex-Utility
It does it all and pulls the bootclass for you. And it also does /system/app/ in one simple shot.
Also, one last thing... You can just as easily pull the files back to the PC using the ADB Pull command...
Code:
adb pull /system/app ./app
adb pull /system/framework/ ./framework
EDIT: And another simple method to get your bootclass is do another ADB Pull
Code:
add pull init.rc
I find the adb pull method quicker and more simple...
You can use the method I just explained or if you want to try the framework manually then do apps seperately then you can use this: http://forum.xda-developers.com/showthread.php?t=1514576
I use that app to re-odex updated files in the ROM. For example... If Gmail updates (which it just did) I would remove the old gmail files from system/app/ and put the new one in and run that program then pull the files.
-Scott
Click to expand...
Click to collapse
hehe yep I know the adb pull command, I thought about it and I didn't put it in...
theking_13 said:
If you can, send me a PM on how to odex apps.
Sent from my HTC One X using Tapatalk 2
Click to expand...
Click to collapse
You confused bro?
Thanks. Even though I won't ever be doing this, it's good to know what's going on.
This is awesome. Thanks so much for this. I wanted to know how to odex and deodex roms.
Sent from my HTC One XL using xda app-developers app
scrosler said:
Good write up. Other files that wont "re-odex" are com.htc.resources.apk, com.htc.videowidget.res.apk, com.htc.weather.res.apk and framework-htc-res.apk.
The reason? The files dont have .dex files because there is no code in them. These files just carrier resources like images (for those that didint know).
The .dex files are the actual smali code that devs mod to make the ROM do crazy things
Also, an easier method can be found here: http://themikmik.com/showthread.php?12988-Tool-App-Dexo-the-Universal-Odex-Utility
It does it all and pulls the bootclass for you. And it also does /system/app/ in one simple shot.
Also, one last thing... You can just as easily pull the files back to the PC using the ADB Pull command...
Code:
adb pull /system/app ./app
adb pull /system/framework/ ./framework
EDIT: And another simple method to get your bootclass is do another ADB Pull
Code:
add pull init.rc
I find the adb pull method quicker and more simple...
You can use the method I just explained or if you want to try the framework manually then do apps seperately then you can use this: http://forum.xda-developers.com/showthread.php?t=1514576
I use that app to re-odex updated files in the ROM. For example... If Gmail updates (which it just did) I would remove the old gmail files from system/app/ and put the new one in and run that program then pull the files.
-Scott
Click to expand...
Click to collapse
Is there also a tool to deodex roms?
Sent from my HTC One XL using xda app-developers app
SkizzMcNizz said:
Is there also a tool to deodex roms?
Sent from my HTC One XL using xda app-developers app
Click to expand...
Click to collapse
Like Scott posted?
Basically that is the steps right there..you are doing the apk in the system/app and framework.
That link provides a tool which when done properly will run on the de-odexed stock Rom and odex it...
Good luck with that...it's a nightmare...haha..
SkizzMcNizz said:
Is there also a tool to deodex roms?
Sent from my HTC One XL using xda app-developers app
Click to expand...
Click to collapse
Yep Android Kitchen can do it.
Hopefully this will help to see more odex ROMs
This is the first phone I've had where developers strive to odex their roms
Something to get used to
Sent from my HTC One X using Tapatalk 2
superchilpil said:
This is the first phone I've had where developers strive to odex their roms
Something to get used to
Sent from my HTC One X using Tapatalk 2
Click to expand...
Click to collapse
Most official ROMs are odexed.
BreatheHT said:
Most official ROMs are odexed.
Click to expand...
Click to collapse
Quite the opposite where I come from
Although I came from a different carrier so this side of the forums is different
Sent from my HTC One X using Tapatalk 2
superchilpil said:
Quite the opposite where I come from
Although I came from a different carrier so this side of the forums is different
Sent from my HTC One X using Tapatalk 2
Click to expand...
Click to collapse
Nah carrier doesn't matter.
SkizzMcNizz said:
Is there also a tool to deodex roms?
Sent from my HTC One XL using xda app-developers app
Click to expand...
Click to collapse
http://forum.xda-developers.com/showthread.php?t=1208320
(you'll have to update the versions included in the zip as this thread is dated - 2011)
Note: the API level for 4.0.3/4.0.4 (what our HOX's run) is '15'.
you can also use DSIXDA's kitchen which can be used to batch deodex apk's after you set the api level
(it's defaulted to '10'... which was Gingerbread -> 2.3.3-2.3.7)
Full list of API levels for their specific Android versions
BreatheHT said:
hehe yep I know the adb pull command, I thought about it and I didn't put it in...
Click to expand...
Click to collapse
Yeah, I like to do it better that way. Dont have to move my hands from the keyboard and mouse. Makes you more efficient :good:
BreatheHT said:
Most official ROMs are odexed.
Click to expand...
Click to collapse
I think all?
superchilpil said:
Quite the opposite where I come from
Although I came from a different carrier so this side of the forums is different
Sent from my HTC One X using Tapatalk 2
Click to expand...
Click to collapse
Carrier is irrelevant. Most people dont know how to work with ODEX files so they go with de-odex. Its mroe challanging but provides a better experience.
techlogik said:
Like Scott posted?
Basically that is the steps right there..you are doing the apk in the system/app and framework.
That link provides a tool which when done properly will run on the de-odexed stock Rom and odex it...
Good luck with that...it's a nightmare...haha..
Click to expand...
Click to collapse
No he is asking to go the other way from odex to de-odex.
BreatheHT said:
Yep Android Kitchen can do it.
Click to expand...
Click to collapse
JSLEnterprises said:
http://forum.xda-developers.com/showthread.php?t=1208320
(you'll have to update the versions included in the zip as this thread is dated - 2011)
Note: the API level for 4.0.3/4.0.4 (what our HOX's run) is '15'.
you can also use DSIXDA's kitchen which can be used to batch deodex apk's after you set the api level
(it's defaulted to '10'... which was Gingerbread -> 2.3.3-2.3.7)
Full list of API levels for their specific Android versions
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Yep, I love that script. I was the one that sent him the mnt point file for the HOX :highfive:
I am going to talk to him about bringing in "official" support for the Asus TF300T. I got the boot.img fiugred out this morning! Woot. **** is about to get real with the Asus!
superchilpil said:
This is the first phone I've had where developers strive to odex their roms
Something to get used to
Sent from my HTC One X using Tapatalk 2
Click to expand...
Click to collapse
its a good final touch when cook done with smali tweaks.
another benefit is sorta kang-protection
EDIT 2 : WAIT NO MORE! Thanx to our friend @joeldroid for his AMAZING TOOL that can batch deodex lollipop files.!
Head over HERE and learn more about it. It is in early stages but works perfectly!
EDIT : I didn't made these tools as I said I compiled (gathered) a set of tools and wrote the guide and so mentioned on XDA Portal that I created a "Quick Guide" please refer that point. Credit goes to the devs of these tool creator. I am extremely sorry for my ignorance but I don't know the devs, please PM me your names so I can give proper credits.
A related guide to this can be found here on this blog, here is the link http://softdx.kr/220200813802
Hello Guys,
I am back with another exciting guide. Deodex lollipop apps and jar's now successfully.! This tool can be useful for ROM developers, chefs and themers and for those who can port apps.
Now on XDA Portal : http://www.xda-developers.com/android/deodex-lollipop-system-apps-with-ease/
I compiled together a set of tool to deodex Lollipop. I'll be attaching it at the end of the thread.
Well now lets get to it.
As we know in Android 5.0 Lollipop framework, app, priv-app folder we have * .apk files and * .jar file, and subsequently when you look at the sub-folder called * .odex files they have a specific folder for art runtime in order to compress into two modes.
* odex.art.xz -> The art mode to native file.
* .odex.xz -> 7zip * .odex appears when you unzip the file.
* .odex.xz unpack the file compression, uses the * .odex file.
unless the ARM is compressed folder * .odex
So in order to deodex files we need this deodex tool and your apk along with *.odex.xz.
Procedure
1) Extract the attached 7z file to desktop and hold right shift key and right click mouse button, you'll see "Open Command Prompt here" click on it.
2) Now a command prompt window will open. Now place you .apk and .odex.xz file there and type "7za x *.odex.xz " and press enter. This will lead to xz uncompressing and output file we will recieve as an odex, though a new format odex will be given in output so we need oat2dex converter
3) Now enter this command "oat2dex.bat *.odex and press Enter. With this command, you confirm that there is OAT file and DEX file header present. Note if you face any errors during this command you'll unfortunately have to give up as that apk won't be converted.
4) Now assuming you got no error in converting enter this command "oat2dex.bat *.odex temp.dex. This command will will you give you your required output ,i.e. .temp.dex. file is created, it is odex file with the old structure.
5) Now using the baksamli / smali to De-Odex use this command "java -jar baksmali-2.0.3.jar -a 21 -x temp.dex -o deodex". As you all know this command will decompile dex and as a result we will find find a deodex output folder without any error.
6) Now to compile the output back to classes.dex use this command "java -jar smali-2.0.3,jar -a 21 deodex -o classes.dex".
7) Now to put classes.dex into apk use this command "7za u -tzip *.apk classes.dex"
Hope this guide makes you to deodex your required file(s) properly
P.S. I am not big of a dev and this guide may contain a number of errors as this took me around 2 hours to figure out the proper way to write this guide , if you spot any error please do help me correcting it.
I am writing a program that can batch deodex all files, but as I said I am no dev Hope someone can do this to write a program to batch deodex.
Please hit like if this helped you :fingers-crossed:
Any suggestion(s) are welcome.:laugh:
For Example
Say we need to deodex SemcVideo.apk
Keep SemcVideo.odex in the folder and then
1) 7za x SemcVideo.odex.xz
To decompress the compressed files that SemcVideo.odex has and to use them for later purpose.
Then, using the oat2dex tool*
2) oat2dex.bat SemcVideo.odex
With this command, you confirm that OAT file and DEX file header is present.
If a file error occurs here it will not convert.
In order to convert the file name to dex format.
3) oat2dex.bat SemcVideo.odex temp.dex
temp.dex file is created, it is odex file with the old structure.
Now, using the baksamli / smali to De-Odex.
4) java -jar baksmali-2.0.3.jar -a 21 -x temp.dex -o deodex
If a deodex folder is created without any error during Decompile, next step is to pack it properly.
Now, the recompiling process to generate classes.dex file.
5)java -jar smali-2.0.3.jar -a 21 deodex -o classes.dex
Now, without any error a classes.dex file is generated.
Now to add this in apk
6) 7za u -tzip SemcVideo.apk classes.dex
This will update SemcVideo.apk video files with file newly created classes.dex
Hope this helps.
Nice, I will be trying this out a little later. Would love a batch option though. Major pain to deodex everything manually LOL
Edit: A little lost here. So I extracted the shamu factory image, and I have the full set of system files. I extract the package you uploaded. So I would simply drop an apk or jar into the directory with the tools, along with its matching odex file, right? Could you provide an example of how to deodex say "SystemUI.apk"? I am not following the steps and understanding what you are suggesting we do . .
hlxanthus said:
Nice, I will be trying this out a little later. Would love a batch option though. Major pain to deodex everything manually LOL
Click to expand...
Click to collapse
Yup working on the batch deodex thing hope some advanced dev can write a program and help in batch deodexing
hlxanthus said:
Nice, I will be trying this out a little later. Would love a batch option though. Major pain to deodex everything manually LOL
Edit: A little lost here. So I extracted the shamu factory image, and I have the full set of system files. I extract the package you uploaded. So I would simply drop an apk or jar into the directory with the tools, along with its matching odex file, right? Could you provide an example of how to deodex say "SystemUI.apk"? I am not following the steps and understanding what you are suggesting we do . .
Click to expand...
Click to collapse
Check Post 2 added an example
Excellent!! That was all it took to figure it out. As they say, now we are cooking with gas. :good:
Successfully deodexed several apks and jars from the nexus 6 factory images, trying to figure out where the heck to shoehorn in an extended power menu . . but android.policy.jar doesnt have an odex . .
any method to do this on linux?
what do u push to phone? i pushed apk i drug over earlier and wont install?
---------- Post added at 07:42 PM ---------- Previous post was at 07:40 PM ----------
i did following:
1) unzipped the oat2dex archive
2) run command prompt
3) drag apk and apk.odex.xz
4) follow all steps successfuly
5) what gets pushed to phone? I found apk i drug over in step 3? or do i find in a folder or where lol.. is the apk.odex go too?
This doesn't touch your phone at all . . you put the apk and odex file in the tools directory and follow the guide, see the example in the second post.
Tech N You said:
For Example
Say we need to deodex SemcVideo.apk
Keep SemcVideo.odex in the folder and then
1) 7za x SemcVideo.odex.xz
To decompress the compressed files that SemcVideo.odex has and to use them for later purpose.
Then, using the oat2dex tool*
2) oat2dex.bat SemcVideo.odex
With this command, you confirm that OAT file and DEX file header is present.
If a file error occurs here it will not convert.
In order to convert the file name to dex format.
3) oat2dex.bat SemcVideo.odex temp.dex
temp.dex file is created, it is odex file with the old structure.
Now, using the baksamli / smali to De-Odex.
4) java -jar baksmali-2.0.3.jar -a 21 -x temp.dex -o deodex
If a deodex folder is created without any error during Decompile, next step is to pack it properly.
Now, the recompiling process to generate classdex.dex file.
5)java -jar smali-2.0.3.jar -a 21 deodex -o classes.dex
Now, without any error a classes.dex file is generated.
Now to add this in apk
6) 7za u -tzip SemcVideo.apk classes.dex
This will update SecVideo.apk video files with file newly created classes.dex
Hope this helps.
Click to expand...
Click to collapse
Thanks much for this. I been have using the oat2dex script (Pau Oliva) on my linux build but have not been able to successfully deodex. I got the classes extracted but hit the wall there. I just gave you method a quick try with my sysui apk and i got an fc on reboot. I will start fresh in the morning and report back to you. I am currenty using an N9 with LRX22C stock factory images. Also, I thought I understood that JesusFreke may need to fix the smali/baksmali for us to properly deodex lollipop.
Regards
hlxanthus said:
This doesn't touch your phone at all . . you put the apk and odex file in the tools directory and follow the guide, see the example in the second post.
Click to expand...
Click to collapse
i know.. i meant there is no way to port apks using oat2dex? after deodex what do we push to phone?
can someoen explain to me whats ht epoint of doing this guide?
will it make lollypop GPE compatible with xposed?
anyone know how to convert the modified dex file back to oat format odex?
i found dex2oat, but it is an android binary; would like to be able to convert on pc.
i'm hoping there's a way to do this to be able to make minor smali edits without deodexing the entire system.
hlxanthus said:
Excellent!! That was all it took to figure it out. As they say, now we are cooking with gas. :good:
Successfully deodexed several apks and jars from the nexus 6 factory images, trying to figure out where the heck to shoehorn in an extended power menu . . but android.policy.jar doesnt have an odex . .
Click to expand...
Click to collapse
I am so sorry for late reply. Glad it worked. Some files that don't have .odex.rz can be deodexed simply by Xultimate. Give a try
Hi, no I am sorry but I have no expertise on Linux may be some of you can try this to port to linux
fhem said:
Thanks much for this. I been have using the oat2dex script (Pau Oliva) on my linux build but have not been able to successfully deodex. I got the classes extracted but hit the wall there. I just gave you method a quick try with my sysui apk and i got an fc on reboot. I will start fresh in the morning and report back to you. I am currenty using an N9 with LRX22C stock factory images. Also, I thought I understood that JesusFreke may need to fix the smali/baksmali for us to properly deodex lollipop.
Regards
Click to expand...
Click to collapse
Great, If you face any FC issues try to avoid those apk's as this is still a beta phase but many devs out there can work on this to make it stable.
lewonsky said:
can someoen explain to me whats ht epoint of doing this guide?
will it make lollypop GPE compatible with xposed?
Click to expand...
Click to collapse
Hi, First refer this guide for difference b/w odex and deodex http://forum.xda-developers.com/showthread.php?p=40026270#post40026270
It will not make it compatible with Xposed, but you can manually theme it as many themers do or you can port apps to different android versions.
elliwigy said:
i know.. i meant there is no way to port apks using oat2dex? after deodex what do we push to phone?
Click to expand...
Click to collapse
After deodexing the files successfully you can create flashable zip and flash via recovery, as I can see that Lollipop already has TWRP for it.
Tech N You said:
Hello Guys,
I am back with another exciting guide. Deodex lollipop apps and jar's now successfully.! This tool can be useful for ROM developers, chefs and themers and for those who can port apps.
Now on XDA Portal : http://www.xda-developers.com/android/deodex-lollipop-system-apps-with-ease/
I compiled together a set of tool to deodex Lollipop. I'll be attaching it at the end of the thread.
Well now lets get to it.
As we know in Android 5.0 Lollipop framework, app, priv-app folder we have * .apk files and * .jar file, and subsequently when you look at the sub-folder called * .odex files they have a specific folder for art runtime in order to compress into two modes.
* odex.art.xz -> The art mode to native file.
* .odex.xz -> 7zip * .odex appears when you unzip the file.
* .odex.xz unpack the file compression, uses the * .odex file.
unless the ARM is compressed folder * .odex
So in order to deodex files we need this deodex tool and your apk along with *.odex.xz.
Procedure
1) Extract the attached 7z file to desktop and hold right shift key and right click mouse button, you'll see "Open Command Prompt here" click on it.
2) Now a command prompt window will open. Now place you .apk and .odex.xz file there and type "7za x *.odex.xz " and press enter. This will lead to xz uncompressing and output file we will recieve as an odex, though a new format odex will be given in output so we need oat2dex converter
3) Now enter this command "oat2dex.bat *.odex and press Enter. With this command, you confirm that there is OAT file and DEX file header present. Note if you face any errors during this command you'll unfortunately have to give up as that apk won't be converted.
4) Now assuming you got no error in converting enter this command "oat2dex.bat *.odex temp.dex. This command will will you give you your required output ,i.e. .temp.dex. file is created, it is odex file with the old structure.
5) Now using the baksamli / smali to De-Odex use this command "java -jar baksmali-2.0.3.jar -a 21 -x temp.dex -o deodex". As you all know this command will decompile dex and as a result we will find find a deodex output folder without any error.
6) Now to compile the output back to classes.dex use this command "java -jar smali-2.0.3,jar -a 21 deodex -o classes.dex".
7) Now to put classes.dex into apk use this command "7za u -tzip *.apk classes.dex"
Hope this guide makes you to deodex your required file(s) properly
P.S. I am no dev and this guide may contain a number of errors as this took me around 2 hours to figure out the proper way to write this guide , if you spot any error please do help me correcting it.
I am writing a program that can batch deodex all files, but as I said I am no dev Hope someone can do this to write a program to batch deodex.
Please hit like if this helped you :fingers-crossed:
Any suggestion(s) are welcome.:laugh:
Click to expand...
Click to collapse
don't be posting the you create this mode ..! i was the one the found how to get the job down ..thank you to (Goldie) and ( tdunham) and SAC23) for creating the tools ...NOT YOU ! give the credit to proper person.. .it's not about creating a conflict without you.
ORIGINAL
http://forum.xda-developers.com/gal...-5-0-gonna-t2961967/post57262607#post57262607
hlxanthus said:
Excellent!! That was all it took to figure it out. As they say, now we are cooking with gas. :good:
Successfully deodexed several apks and jars from the nexus 6 factory images, trying to figure out where the heck to shoehorn in an extended power menu . . but android.policy.jar doesnt have an odex . .
Click to expand...
Click to collapse
You can find it on "/system/framework/arm/" directory.
---------- Post added at 11:18 PM ---------- Previous post was at 11:13 PM ----------
Tech N You said:
For Example
Now to add this in apk
6) 7za u -tzip SemcVideo.apk classes.dex
This will update SecVideo.apk video files with file newly created classes.dex
Hope this helps.
Click to expand...
Click to collapse
Thank you very much!!But, do you know how to re-odex the modified dex file?