Odex & Deodex - En Android, todas las aplicaciones vienen empaquetadas en archivos con extensi?n APK. Junto con las aplicaciones de sistema o que vienen "de serie" en el firmware del fabricante (system/app/), se puede encontrar un archivo de extensi?n ODEX con el mismo nombre que el APK cuya funci?n es la de ahorrar espacio. Estos archivos .odex son colecciones de partes de la aplicaci?n correspondiente, que estan optimizadas ANTES de arrancar. Lo que se consigue con esto es que arranque el sistema m?s r?pido ya que con este sistema se hace una precarga de parte del c?digo de aplicaci?n.
Es por esto que las aplicaciones de sistema o preinstaladas sean dificiles de modificar, ya que parte del c?digo de la aplicaci?n ya est? escrito en dicho archivo .odex. Llamo modificaci?n a editar c?digo para a?adir o quitar funcionalidades a la aplicaci?n o, simplemente, cambiar el aspecto de las aplicaciones editando la parte visual( Frameworks y dem?s...iconos, logos, fondos etc...)
Ahora que hemos explicado qu? es un archivo .odex y para que sirve, esto ya empieza a ser m?s f?cil de entender... El proceso de deodexizado consiste, simplemente en reempaquetar todos os contenidos y componentes de la aplicaci?n en el APK correspondiente mediante el recopilado de classes.dex, que es el fichero conenido en el APK que contiene las clases de Java que se han usado en el c?digo de la aplicaci?n. Hecho esto, lo que se consigue es tener todo en el mismo sitio y permite que se ejecute toda la aplicaci?n desde el paquete APK, por as? decirlo, sin que haya interacciones desde fuentes externas como son los archivos .odex
Partimos de la base de que Android utiliza para ejecutar todo, una m?quina virtual basada en Java que se llama Dalvik Virtual Machine. Bien, en el caso de las aplicaciones deodexizadas, el fichero . dex que hay dentro del APK, es el que contiene la cach?(c?digo base) de la aplicaci?n y que es utilizado por la Dalvik. En el caso de las aplicaciones ODEXIZADAS, la Dalvik utiliza el archivo .odex, que es la versi?n mejorada y optimizada del archivo .dex. Requisito de este m?todo es que el archivo .odexdebe de estar en el mismo directorio que el APK y llamarse igual. ?ste ?ltimo, es el m?todo usado por Android por defecto.
Cuando Android arranca, la cach? de la maquina virtual DALVIK se llena con los archivos .odex, lo que permite a Android saber con antelaci?n qu? aplicaciones se cargara y, como ya hemos comentado que el .odex es parte del c?digo de la aplicaci?n optimizado, se cargar? todo m?s r?pidamente. DEDEXIZANDO los APK, como ya hemos comentado antes, permite tener TODO el codigo de la aplicaci?n en un mismo sitio, sin entrar en el conflicto con el entorno de ejecuci?n de Android.
Llegados a este punto, las ventajas o desventajas estan mas bien claras...Como ventajas tenemos las de poder personalizar/modificar las aplicaciones de sistema. Esto para los desarrolladores es vita y bastante importante...sobre todo para los que se dedican a tematizar firmwares y aplicaciones de sistema.
Como desventaja, evidentemente tenemos que el sistema tardar?a m?s en arrancar. Pero hay un PERO en esto, y es que esta demora en la carga del sistema solo ser?a la primera vez se enciende el m?vil. Se sbreentiende, que la primera vez es cuando lo compras o cuando Flasheas un firmware y enciendes el m?vil. ?por qu? solo la priemra vez? pues resulta que la cache de Dalvik, se queda escrita desde la primera vez que arrancamos Android, por lo que este priceso solo se realiza una vez...Ahora ya no parece tanta desventaja verdad?