[GUIDE] - The differences between Odex and Deodex Files

Search This thread

Sib64

Senior Member
May 27, 2010
3,508
3,231
Somewhere in Brittany
Now, it's impossible that you have not encountered the term ‘deodexed’ if you’ve ever installed a custom firmware on your device, since almost all ROM developers choose to deodexed their roms. What this means for the average user. To understand the concept, you’ll first need to grasp what odex files are, and why are present in the OS in the first place.
Odex files contain pre-optimized code extracted from the system libs and apps, and are in the same directory as the jar or apk files inside /system, so they are part of the ROM. Odex files depend on each other, so the whole system, once odexed, cannot easily be modified.



WHAT IS EXACTLY 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 The odexed file structure works well as an optimization tool. Since these .odex files contain preliminary load information about each system app, the OS knows what to expect when it’s booting up, and consequently, loads all these apps faster.
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.

For instance, on a non-rooted device you’ll find
system/app/Phone.apk ===> as well as ===> system/app/Phone.odex


AND NOW THE DEODEX FILE ?

It’s the process to take all the packages out from .odex file and reassemble them all together in classes.dex file which is kept inside the APK file. 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.

on the same device but rooted now, you’ll find this:
system/app/Phone.apk ===> but no longer the corresponding .odex file. The reassembled files become classes.dex


HOW THESE FILES WORK ?

In normal cases, where an Android firmware is odexed, the .odex files for each /system APK (which are stored outside of the APKs themselves) are written into the Dalvik Virtual Machine when the OS boots up. Since these .odex files contain preliminary load information about each system app, the OS knows what to expect when it’s booting up, and consequently, loads all these apps faster. Ultimately, for the user, it means that boot times are significantly sped up, and you can put your device to use much sooner.
Android applies this technique by default to all the system applications.

By deodexing these APKs, a developer actually puts the .odex files back inside their respective APK packages. Since all code is now contained within the APK itself, it becomes possible to modify any application package without conflicting with the operating system’s execution environment.


CONCLUSION: ADVANTAGES & DISADVANTAGES FOR BOTH SYSTEM FILES

The advantage of deodexing is in modification possibilities. This is most widely used in custom ROMs and themes. A developer building a custom ROM would almost always choose to deodex the ROM package first, that’s why developers prefer it and most, if not all, of the custom ROMs come pre-deodexed.

The advantage of .odex file is the faster load time of the app and were supposed to quickly build the dalvik cache, removing them would mean longer initial boot times. However, this is true only for the first ever boot after deodexing, since the cache would still get built over time as applications are used. Longer boot times may only be seen again if the dalvik cache is wiped for some reason.

And finally rooting need not necessarily mean your device is deodexed, rather that almost all stock ROMs are odexed to some extent, and usually most custom ROMs are deodexed for easy theming.
For a casual user, the main implication is in theming possibilities. Themes for android come in APKs too, and if you want to modify any of those, you should always choose a dedoexed custom ROM.



And don't forget to RATE FOR THIS THREAD -
ratef.png
if it's helped you and eventually click to "Newsworthy Thread? "Thanks in advance ;)
 
Last edited:

falkuto

Member
Mar 23, 2013
13
2
it also makes hacking those applications difficult because a part of the coding has already been extracted to another location before execution
 
  • Like
Reactions: nimasalehi72

copyl3ft

Member
Mar 10, 2012
18
1
after tinkering with my phone from HTC DND to HTC One X to Lenovo P770 in a span of 2years, I finally understand what odex and deodex mean!

thanks! :)
 

ASMI1

Senior Member
Dec 23, 2010
333
121
28
thanks for the post:)
Btw, I want to mention that a deodexed rom can be Re-odexed and that will give you the benefits of odexing and deodexing at the same time
this is very useful when you deodexed your stock rom to apply some mods and customisations and wanted to re-odex to get the benefits of odexing without removing your modifications..
here is a complete guide on how to Re-odex a deodexed rom (thanks to TearsDontFalls for this thread)
hope this was helpful for you guys:)
 

Top Liked Posts

  • There are no posts matching your filters.
  • 199
    Now, it's impossible that you have not encountered the term ‘deodexed’ if you’ve ever installed a custom firmware on your device, since almost all ROM developers choose to deodexed their roms. What this means for the average user. To understand the concept, you’ll first need to grasp what odex files are, and why are present in the OS in the first place.
    Odex files contain pre-optimized code extracted from the system libs and apps, and are in the same directory as the jar or apk files inside /system, so they are part of the ROM. Odex files depend on each other, so the whole system, once odexed, cannot easily be modified.



    WHAT IS EXACTLY 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 The odexed file structure works well as an optimization tool. Since these .odex files contain preliminary load information about each system app, the OS knows what to expect when it’s booting up, and consequently, loads all these apps faster.
    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.

    For instance, on a non-rooted device you’ll find
    system/app/Phone.apk ===> as well as ===> system/app/Phone.odex


    AND NOW THE DEODEX FILE ?

    It’s the process to take all the packages out from .odex file and reassemble them all together in classes.dex file which is kept inside the APK file. 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.

    on the same device but rooted now, you’ll find this:
    system/app/Phone.apk ===> but no longer the corresponding .odex file. The reassembled files become classes.dex


    HOW THESE FILES WORK ?

    In normal cases, where an Android firmware is odexed, the .odex files for each /system APK (which are stored outside of the APKs themselves) are written into the Dalvik Virtual Machine when the OS boots up. Since these .odex files contain preliminary load information about each system app, the OS knows what to expect when it’s booting up, and consequently, loads all these apps faster. Ultimately, for the user, it means that boot times are significantly sped up, and you can put your device to use much sooner.
    Android applies this technique by default to all the system applications.

    By deodexing these APKs, a developer actually puts the .odex files back inside their respective APK packages. Since all code is now contained within the APK itself, it becomes possible to modify any application package without conflicting with the operating system’s execution environment.


    CONCLUSION: ADVANTAGES & DISADVANTAGES FOR BOTH SYSTEM FILES

    The advantage of deodexing is in modification possibilities. This is most widely used in custom ROMs and themes. A developer building a custom ROM would almost always choose to deodex the ROM package first, that’s why developers prefer it and most, if not all, of the custom ROMs come pre-deodexed.

    The advantage of .odex file is the faster load time of the app and were supposed to quickly build the dalvik cache, removing them would mean longer initial boot times. However, this is true only for the first ever boot after deodexing, since the cache would still get built over time as applications are used. Longer boot times may only be seen again if the dalvik cache is wiped for some reason.

    And finally rooting need not necessarily mean your device is deodexed, rather that almost all stock ROMs are odexed to some extent, and usually most custom ROMs are deodexed for easy theming.
    For a casual user, the main implication is in theming possibilities. Themes for android come in APKs too, and if you want to modify any of those, you should always choose a dedoexed custom ROM.



    And don't forget to RATE FOR THIS THREAD -
    ratef.png
    if it's helped you and eventually click to "Newsworthy Thread? "Thanks in advance ;)
    2
    This should help a lot of People. :)
    2
    INFO

    Also mention that odexed ram uses less internal app storage space than deoxed rom :cool:
    Useful on devices with low internal storage:D:cowboy:
    2
    How to make a ODEX rom for a android phone like company of that phone :silly:

    Search a little and you will find a good thread for:
    Use the search bar "Search all forums" and type "how to make a Odex rom" ;)

    Thanks
    2
    thanks for the post:)
    Btw, I want to mention that a deodexed rom can be Re-odexed and that will give you the benefits of odexing and deodexing at the same time
    this is very useful when you deodexed your stock rom to apply some mods and customisations and wanted to re-odex to get the benefits of odexing without removing your modifications..
    here is a complete guide on how to Re-odex a deodexed rom (thanks to TearsDontFalls for this thread)
    hope this was helpful for you guys:)