I am a bit confused by the effect of deodexing (or even by terminology).

Based on answers to "What is the difference between odexed and deodexed roms?":

A "deodexed" ROM is one where the .odex files have been more or less merged back into the .apk

This one seems to imply that "deodexed" ROM is an odexed (thus precompiled/optimized) ROM where the .apk package contains the .odex stuff instead of it being in a separate file.

However, the same answer has a seemingly opposite quote:

ROMs are typically released in deodexed form because they can be themed and modified fairly easily, whereas theming/modifying an odexed ROM is basically impossible (at best things would crash like crazy). Some people also choose to release their ROMs in odexed versions for people who would prefer the performance gains.

This second quote seems to imply that the deodexed ROM does NOT have the performance gains of the odexed ROM (based on the last sentence) - I am guessing because it completely removes the .odex info for the sake of portability/theming; whereas the first quote seems to say that deodexed ROM is just as optimized as odexed, but differently packaged.

Which one of these meanings is correct? What am I missing?


  • Fission Vanilla: "ROM has root and has been deodexed, and zip alligned"

Deodexed ROMs do not have the .odex files integrated into the .apk's, they are removed. What eldareathis meant in his answer to the other question is that the reliance of the .apk's on the .odex files is removed; some information is integrated back into the .apk, but not the actual .odex file itself. The Deodexing section of this page has technical details: http://code.google.com/p/smali/wiki/DeodexInstructions

Deodexed ROMs may be slightly slower because of this; however I believe that as the Dalvik cache is built up from using the ROM, the performance gap is minimized.

  • thanks! Would you be able to elaborate on the "performance gap is minimized" piece? Does that mean that the gap is eliminated completely for any .apk after the first use (and mimized applies to "not every .apk has a cache built at once), or does it mean that for a given .apk, odexed version would still be faster than the deodexed even after the cacge is built? – DVK Apr 13 '11 at 1:33
  • @DVK In general I think the .odex would still be faster, but having cached .dex files eliminates the need to translate all of the .apk at each startup. I think that overhead is probably much more significant than the optimizations, in most cases. – Matthew Read Apr 13 '11 at 1:46
  • 2
    @DVK: I see how that was unclear in my previous answer, so I went back and tried to clarify a bit. Thanks for pointing that out. Regarding this question, everything Matthew has said in his answer is absolutely correct. – eldarerathis Apr 13 '11 at 2:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.