What is Odex & Deodex Explained in English | FREE UP YOUR INTERNAL STORAGE AND SPEED UP YOUR ANDROID
In this article, we’ll try to explain what odexed
and deodexed means, and what implications does
it bring to a casual user.
So let's start
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.
HOW THIS WORKS
For the more geeky amongst us, Android OS uses a
Java-based virtual machine for running
applications, called the Dalvik Virtual Machine. A
deodexed, or .dex file contains the cache used by
this virtual machine (referred to as Dalvik-cache)
for a program, and it is stored inside the APK. An
.odex file, on the other hand, is an optimized
version of this same .dex file that is stored next to
the APK as opposed to inside it. Android applies
this technique by default to all the system
applications.
Now, when an Android-based system is booting, the
davlik cache for the Davlik VM is built using these
.odex files, allowing the OS to learn in advance
what applications will be loaded, and thus speeds
up the booting process.
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.
ADVANTAGES & DISADVANTAGES
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, since that would not only allow him
to modify various APKs, but also leave room for
post-install theming.
On the other hand, since the .odex files 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.
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.
Was this article helpful? If you are confused with
some other terms and want us to help explain them,
please let us know in the comments.
Comments
Post a Comment