Hey guys & gals!
Here is a little tool I made.
What it does is take 2 APK files - the original, and the modified/themed one. It then extracts the APK's and collects all the files that have changed from the original in the modified APK. It also adds the new files in the modified APK.
It wont handle changes to the smali code, but any xml or png changes will work fine.
Then it builds the changed files into a zip file that can be flashed using ZipThemer.
To use:
make an empty directory for apkdiff to work in.
create 2 folders new_apk and old_apk and place the 2 files in their respective directories.
Run the script:
apkdiff /system/app Phone
The 2 parameters are:
The folder on your device the APK is located in
The name of the APK file (without .apk on the end)
There are a couple of parameters you may need to adjust at the top of the file.
The result will be a file in the "out" folder which can then be used on other devices to modify the original apk using ZipThemer. This is a lot smaller file than if you redistribute the whole modified APK.
I hope this makes sense to someone!!
I am sure there are bugs in it somewhere, so if you give it a try and it breaks let me know.
Cheers!
Great and useful work mate,
thank you very much!!!
This is deodexed system part of G900FXXU1BNL2 ROM.
It's for chiefs and devs only and cannot be flashed directly.
Because i don't have S5 device, i cannot test it by myself. So, i'm asking qualified devs with S5 to try to make ROM based on this package and make a report if it can boot or even work.
Some important notes:
1) Because almost all APKs were originally odexed, all of them were required deodexing and then signing. So, original signatures are lost. I've used standard android development test certificate. Usually it's ok for system APK which never update from Play Store (only through ROM updates).
Thus, probably some APKs won't work correctly. You can delete such APK and replace it with one from Google Play store. Btw, Play Store is also resigned and may be won't work with Google servers (need to check).
Also, all resigned APKs won't be able to update in Play Store - so you need to replace such APKs with those from Play Store as well.
2) Following APKs i wasn't able to deodex without errors and not include in package:
Maps.apk
Music2.apk
DocumentService.apk
3) In Android 5.0 APKs having library, they are placed in lib folder of APK sub-folder. While deodexing, i've put these libs inside APKs. Probably, you need to extract these libs and put them all into /system/lib (same as all pre-5.0 ROMs).
4) I've placed APKs similar to pre-5.0 way (not every apk in its own folder). I hope it will work this way. If device won't be able to boot, then place them as in original system structure.
Those, who can build the ROM, please test it and tell me about result.
https://mega.co.nz/#!A4kynJpR!pobkpLuFBAUnhtnUwgJSa2KfT6S8apqWwYD5Asb83DU
Update 1:
- contains only modified parts of system, i.e.: only framework, app, priv-app dirs.
- app and priv-app dirs now have correct structure: each apk in its own dir and lib sub-dir.
- not re-signed, i.e. all apks contain original Samsung or Google certificate
- oops, i've forgot to delete Maps.apk, Music2.apk and DocumetService.apk - they were deodexed with errors and most likely won't work.
https://mega.co.nz/#!1l1BlSza!QN1fNyrU7qtwBu6xqkBRH85h3rL81Rvlc-JZv1OtMeE
Nice build
Sadly im just a normal rom builder with knowledge on v4.4 and below, idunno on v5.0 have to learn it to make good roms out of it
Procedures with 5.0 should be the same. The only difference i've found is placing apks in separate subfolder. I think, it required only for pre-odexed ROMs. So, just need to make an usual ROM, same as 4.4 and then check if it work.
sorg said:
Procedures with 5.0 should be the same. The only difference i've found is placing apks in separate subfolder. I think, it required only for pre-odexed ROMs. So, just need to make an usual ROM, same as 4.4 and then check if it work.
Click to expand...
Click to collapse
Very good than ill give it a try when home
But im not an advanced dev sadly dont expect much [emoji14]
I've tested it out, by putting all your deodexed apk's in their folders of my odexed XtreStoLite 2.0 TW Lollipop BETA ROM (and removed the 'arm' folders), also extracted out the lib files from your apk files, and put them in the 'lib' folder.
And replaced mine framework folder with your deodexed one...
But the phone doesn't boot up then.
So your deodexed files are probably not working.
edgarf28 said:
I've tested it out, by putting all your deodexed apk's in their folders of my odexed XtreStoLite 2.0 TW Lollipop BETA ROM (and removed the 'arm' folders), also extracted out the lib files from your apk files, and put them in the 'lib' folder.
And replaced mine framework folder with your deodexed one...
But the phone doesn't boot up then.
So your deodexed files are probably not working.
Click to expand...
Click to collapse
No log?
edgarf28 said:
I've tested it out, by putting all your deodexed apk's in their folders of my odexed XtreStoLite 2.0 TW Lollipop BETA ROM (and removed the 'arm' folders), also extracted out the lib files from your apk files, and put them in the 'lib' folder.
And replaced mine framework folder with your deodexed one...
But the phone doesn't boot up then.
So your deodexed files are probably not working.
Click to expand...
Click to collapse
logcat would be helpful.
Also you can try it step by step. At first, use odexed framework, and my deodexed APKs in subfolders (use my framework.apk and twframework.apk for certificate match).
Then try to put deodexed APKs into common folder (like 4.4 ROM).
If either of above will work, then try to replace the framework jar files.
It's not exactly because of wrong deodexing. May be you need to keep /arm/boot.* files in order to pass initial boot. And then may be OS will re-create new boot.
So, need to try different combination and look what you get in logcat. May be 5.0 requires some additional steps for deodexed ROMs.
Btw, after extracting libs, don't delete them from APKs.
Just checked CM12 ROM structure:
1) copy each APK in its separate folder (same as stock 5.0 ROM).
2) extract lib to separate lib folder (same as stock 5.0 ROM)
3) all arm folders should be deleted (including framework/arm)
http://www.xda-developers.com/android/deodex-lollipop-system-apps-with-ease/ ???
I've tried to replace some apps by deodexed singly (e.g. SamsungCamera3, SecMms_Candy, TeleService), of course with deleted corresponding arm folder
Unfortunately, none of them work (even completely unmodified), only FC ...
_alexndr said:
I've tried to replace some apps by deodexed singly (e.g. SamsungCamera3, SecMms_Candy, TeleService), of course with deleted corresponding arm folder
Unfortunately, none of them work (even completely unmodified), only FC ...
Click to expand...
Click to collapse
can you provide logcat? FC may be related to incompatible certificate.
sorg said:
can you provide logcat? FC may be related to incompatible certificate.
Click to expand...
Click to collapse
See attachment... logcat while I'm trying to run deodexed SamsungCamera3
_alexndr said:
See attachment... logcat while I'm trying to run deodexed SamsungCamera3
Click to expand...
Click to collapse
I don't see anything about SamsungCamera3 in logcat... If you get FC, then at least FC reason should be shown in logcat.
If it fc post the dumpstate_app_error.txt.gz from data/log rather than taking a log. Guaranteed to include all info
sorg said:
I don't see anything about SamsungCamera3 in logcat... If you get FC, then at least FC reason should be shown in logcat.
Click to expand...
Click to collapse
My mistake. I have not looked at sending and uploaded incomplete file. Now it should be ok
Goldie said:
If it fc post the dumpstate_app_error.txt.gz from data/log rather than taking a log. Guaranteed to include all info
Click to expand...
Click to collapse
This file is also attached
Assuming this permission is in manifest to start with it looks like some issue with actually reading the manifest?
12-12 09:09:30.688 6530 6530 E AndroidRuntime: Caused by: java.lang.SecurityException: Requires SET_ANIMATION_SCALE permission
Goldie said:
Assuming this permission is in manifest to start with it looks like some issue with actually reading the manifest?
12-12 09:09:30.688 6530 6530 E AndroidRuntime: Caused by: java.lang.SecurityException: Requires SET_ANIMATION_SCALE permission
Click to expand...
Click to collapse
While deodexing i didn't touch neither resources nor manifest, only injected dex then signed and then aligned. Probably, because re-signed apk uses different certificate (obviously, i don't have Samsung's private key), OS denies some system level access.
Usually, when i create custom ROM i resign all APKs which use Samsung certificate - thus all system APKs share the same signature and everything works.
Why do you resign all samsung apks? System apps do not require signing unless manifest is changed. Is this something you have always done?
Disabling signature checking may fix this then I guess or not resigning in the first place
Goldie said:
Why do you resign all samsung apks? System apps do not require signing unless manifest is changed. Is this something you have always done?
Disabling signature checking may fix this then I guess or not resigning in the first place
Click to expand...
Click to collapse
No problem, i will update pack with updated structure without resigning.
In my custom ROM i do many changes, sometimes including manifest change and adding additional system APKs imported from other devices or written by myself.
sorg said:
While deodexing i didn't touch neither resources nor manifest, only injected dex then signed and then aligned. Probably, because re-signed apk uses different certificate (obviously, i don't have Samsung's private key), OS denies some system level access.
Click to expand...
Click to collapse
Goldie said:
Why do you resign all samsung apks? System apps do not require signing unless manifest is changed. Is this something you have always done?
Disabling signature checking may fix this then I guess or not resigning in the first place
Click to expand...
Click to collapse
And... this was the cause :laugh:
I've put classes.dex from @sorg 's apk to original SamsungCamera3.apk and it works as deodexed !!!!!!
I will try to baksmali, then modify the code and smali again
Hi,
Deodexed rom is faster then odexed?
SMikeS said:
Hi,
Deodexed rom is faster then odexed?
Click to expand...
Click to collapse
Have a look at this
WHAT IS AN ODEX FILE?
In Android file system, applications come in packages with the extension .apk. These application packages, or APKs contain certain .odex files whose supposed function is to save space. These ‘odex’ files are actually collections of parts of an application that are optimized before booting. Doing so speeds up the boot process, as it preloads part of an application. On the other hand, it also makes hacking those applications difficult because a part of the coding has already been extracted to another location before execution.
THEN COMES DEODEX
Deodexing is basically repackaging of these APKs in a certain way, such that they are reassembled into classes.dex files. By doing that, all pieces of an application package are put together back in one place, thus eliminating the worry of a modified APK conflicting with some separate odexed parts.
In summary, Deodexed ROMs (or APKs) have all their application packages put back together in one place, allowing for easy modification such as theming. Since no pieces of code are coming from any external location, custom ROMs or APKs are always deodexed to ensure integrity.
Click to expand...
Click to collapse
No it's just better for theming
Please help, is there any specific how to or tutorial on how to make Odex cm 12.1 or 12 directly on the phone. On my Xperia m. Using commands line or apk maybe.
I want to Odex :
Code:
/system/app
/system/priv-app
/system/framework
Thanks in advance.
Add explanation
Quote from nexus 5 thread. Link in post 3.
*What is ODEX and DEODEX?
Odex = More speed__Less customization
Deodex = Less speed__More customization
Extensive explenation:
In Android file system, applications come in packages with the extension .apk. These application packages, or APKs contain certain .odex files whose supposed function is to save space. These odex files are actually collections of parts of an application that are optimized before booting. Doing so speeds up the boot process, as it preloads part of an application. On the other hand, it also makes hacking those applicationsdifficult because a part of the coding has already been extracted to another location before execution.
THEN COMES DEODEX
Deodexing is basically repackaging of these APKs in a certain way, such that they are reassembled into classes.dex files. By doing that, all pieces of an application package are put together back in one place, thus eliminating theworry of a modified APK conflicting with some separate odexed parts.
In summary, Deodexed ROMs (or APKs) have all their application packages put back together in one place, allowing for easy modification such as theming. Since no pieces of code are coming from any external location, custom ROMs or APKs are always deodexed to ensure integrity.
I think that you like more speed and less customization (less costumization for dev because is to difficult mod an Odex file)
Another explanation is this:
If you use a odex rom, you'll have also more space in data (this is important because if you don't have partition ext4 in sdcard, you won't have too free space), increase battery life, more stability and increase perfomance( the Rom is more faster to load system and app) but you can't modifie apk after odex (you can't mod program with classes.dex).
Infact ODEX is an OPTIMIZED-DEX and Android load system and app faster than deodexed (DEOPTIMIZED-DEX) app and system.
When you have a deodex file (a lot of roms are deodexed) you have File.apk in system/app and in data/dalvik-cache [email protected]@[email protected], but with odex file you have File.apk in system/app and File.odex in system/app
ndrancs said:
With odexed the rom, you can get more free space in internal memory, about 400mb.
Click to expand...
Click to collapse
It's also more stable and faster... Thought also about but have doubts that it's easy possible in the Art system because of subfolder structure, missing symlinks and so on... Will be hard work
http://forum.xda-developers.com/android/help/odex-deodex-matter-android-lollipop-art-t2944293
But it seems, some did it:
http://forum.xda-developers.com/goo...om-xtraslim-1-0-stock-odex-optimized-t2924150
This tool http://forum.xda-developers.com/showthread.php?p=47462548
Not yet updated to support lollipop / 5.x.x
All it takes is for you to take a backup and run the deodex wrapper on your device creating classes.dex's files in all you'r apks allowing to edit the smali. I would do it myself but I currently dont own the device.
Pneuma1985 said:
All it takes is for you to take a backup and run the deodex wrapper on your device creating classes.dex's files in all you'r apks allowing to edit the smali. I would do it myself but I currently dont own the device.
Click to expand...
Click to collapse
Here you go i included the app, dex, framework, odex, priv-app you will need 7-zip because i compressed it from 850mb's to 350mb's.
https://www.androidfilehost.com/?fid=24549084345925845
That does not have all the .dex files in the dex folder. Thus I can not access the smali... Which is what I was after a certrain method within the netxbit systemUI smali. Though it did give me the .dex files of several apks just not the exact one I was after. How do I access the systemUI .dex. It's been a long time since I've made roms and deodexed apks especially now with art. I'm really after the UI .dex file so I can gain access to a specific method within in it. If you could post that I'd be ecstatic Something I decompile to track down smali methods I want to recreate in my own custom 6.0 SystemUI.
Nvm Ticklefish's tool did the job http://www.mediafire.com/download/czod7v081w0ravt/TickleMyAndroid+-+v13.3.0.exe
The only tool out of all the deodexing tools that worked!!!!! The only one! Aside from the linux kitchen but I wasnt setting that up... Mess up my linux install no thanks!
FM radio
Is this FM radio apps