// ¿cuál es la diferencia entre ODEX y DEODEX en Android?

Si ha ingresado al mundo de los ROMs modificados de Android quizás a escuchado estos dos términos: “odex”y “deodex”. Aunque pareciera nombres de dos enfermedades virales, en realidad son términos que se utilizan para identificar como una aplicación en Android trabaja. Les explicaremos con más detalle a continuación.

image¿Qué es un archivo “ODEX”?

Primero expliquemos como muchas de las aplicaciones en Android están empaquetadas. Hay dos tipos de aplicaciones en Android, unos que están en la partición del sistema operativo (/system) y los cuales no pueden ser modificados por el usuarios si no tiene privilegios de “root”. Luego están las aplicaciones regulares (juegos, widgets, etc.) ubicados en la partición de /data y los cuales el usuario puede modificar a su gusto.

Ahora bien, cada aplicación esta empaquetada en un archivo llamado APK. En adición el sistema operativo le reserva un espacio en cache en otro directorio el cual le indica al Android Dalvik Virtual Machine (VM) con que componentes viene la aplicación.

¿Vamos bien? Perfecto, ahora es que explicamos que es el archivo ODEX.

Toda aplicación en su Android esta comprimida en un archivo APK (en ocasiones también en archivos JAR) para ocupar el menor espacio posible. Cuando usted inicia una aplicación, toda esta data tiene que ser descomprimida por el sistema operativo. Esto puede demorar el proceso de inicio de una aplicación. Es aquí donde el ODEX entra en acción. ¿Se acuerdan del cache? En el cache de cada aplicación (APK) hay un archivo con la extensión .odex. Este archivo descomprimido incluye información necesaria para iniciar la aplicación, de tal forma que no fuerza al sistema operativo en tener que descomprimir los archivos necesarios para levantar (boot) el APK.

En resumen, el archivo ODEX ayuda a iniciar más rápido las aplicaciones en su Android. Solo una desventaja, esta metodología hace que la modificación de las aplicaciones en Android sea más difícil ya que el archivo ODEX (ubicado en otro directorio, el cache) ha extraído parte de su código antes de que el APK sea ejecutado. Si usted modifica el APK pero deja el ODEX igual, esto puede traernos conflictos de código y una avalancha de errores.

Entonces, ¿qué es “Deodex”?

La actividad de “Deodexing” es como se le conoce cuando re-empaquetamos la aplicación APK de tal forma que todo su contenido este ubicado en un solo directorio. El cache del APK termina residiendo DENTRO del mismo archivo APK. De esta forma se evita cualquier tipo de conflictos de dos códigos separados de una misma aplicación (uno donde está el APK y otro donde está el cache) trabajando de formas diferentes. Usted acaba de independizar la aplicación de cualquier otro directorio.

Esto ayuda grandemente al proceso de modificaciones de aplicaciones y ROMs ya que toda aplicación trabaja independiente sin la probabilidad de romper dependencias en otros directorios. Sin embargo tiene una gran limitación, hace que el proceso de inicio de las aplicaciones sea más lenta ya que el sistema operativo tiene que descomprimir TODOS los componentes al iniciar el APK. Ahora bien, esta lentitud solo sucede cuando usted inicia el sistema operativo con todo el cache limpio (por ejemplo cuando inicia por primera vez o cuando usted hace un “Wipe Cache”). Luego de que la data ya está en el Dalvik Virtual Machine (VM), el desempeño es el mismo que si estuviéramos usando el método de ODEX.

¿Porque entonces usamos ODEX?

Dos razones: asegurar un buen desempeño SIEMPRE, independientemente que usted inicio con un cache limpio o no y por razones de seguridad ya que modificar archivos en ODEX es más complicado o imposible en ocasiones. El Deodex da más libertades, pero con las limitaciones que mencionamos anteriormente.

En resumen, Android como lo diseña Google, trabaja cada aplicación con los archivos ODEX. Si usted escucha sobre un ROM o aplicación modificada (“Deodex”) ya sabe que esto significa que está preparado para poder hacer modificaciones fácilmente.

¡Comparte tu opinion!