[Wildfire Android Development] Bi0haZarD:
Dear All,

I created this thread in Wildfire Android Development for new Wildfire Owners that are new to Android OS, from my personal experience i noticed that at least 99.9% (this is not really calculated!) of the people that google anything relevant with the word Wildfire (i.e root,dalvik cache,deodexed,custom rom,rom,etc.) will not bother to go through XDA topics/threads outside the Wildfire Android Development to research and usually make unnecessary posts all over the topics in all different threads thus creating a chaos!

People new to Android OS want a cooked rom served in their plate while still hot and will complain a lot if something is not working as it should... sometimes they shout and even DEMAND from a sleepless chef all sorts of things that comes to their head.

PEOPLE WAKE UP! - This is THE place that development is being made, this is where willing beta testers test unfinished roms (these are called nightlies) until they become stable enough to be released to the public first as an RC (Release Candidate) and then when it reaches Final Stage (again after many nightlies) only then they will be released as a Stable Release.

Now people, read on...

What Is Odex And Deodex In Android

As any new Android user, what will bother you mostly is going across terminology beyond your comprehension. Not coming from a Linux background it will be hard to keep up with the oh-so-commonly-used words spread all across the development community. Since most of you probably don't understand the terms, consequently you will be unable to determine if something was of any use to you or not. From what I have seen, this problem extends to many novice and even average users.(But there will always be exceptions)

One commonly occurring word when playing with custom ROMs and firmware, and even themes is deodexed and odexed. Most users fail to understand what these terms actually imply, and while developers would boast again and again about their themes and ROMs being deodexed, the average user is left clueless as to what is going on.

In this article, we’ll try to explain what odexed and deodexed means, and what implications does it bring to a casual user.

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.

:D HAPPY FLASHING! :D