47 votos

¿Cuál es la diferencia entre las ROMs odexed y deodexed?

¿Cuál es la diferencia entre las ROMs odexed y deodexed ROMs? ¿Cuál es la ROM estándar (stock) que usan los dispositivos de fábrica?

42voto

David Negron Puntos 971

Un archivo .dex es básicamente una versión de bytecode compilado de una aplicación que ha sido construida para la máquina virtual Dalvik en la que se ejecutan las aplicaciones de Android. Creo que es un acrónimo para Ejecutable Dalvik, pero no estoy seguro de si lo estoy recordando correctamente.

Un archivo .odex es un archivo .dex optimizado (de ahí la 'o'), lo que significa que ha sido precompilado para una plataforma específica. La ventaja de esto es que el tiempo de inicio es mucho más rápido, ya que la máquina virtual no tiene que realizar ninguna optimización al iniciar/ejecutar. Las desventajas son 1) que ocupa un poco más de espacio y 2) una aplicación odexada no se ejecutará correctamente si se coloca en otro dispositivo, y debe tener el archivo .odex asociado para ejecutarse en absoluto.

Por lo general, las ROM se publican en forma deodexada porque se pueden tematizar y modificar bastante fácilmente, mientras que tematizar/modificar una ROM odexada es básicamente imposible (como máximo, las cosas se bloquearían como locas). Algunas personas también eligen publicar sus ROM en versiones odexadas para personas que prefieren las ganancias de rendimiento.

La mayoría de las ROM de stock que he visto están odexadas, supongo que porque las compañías/fabricantes quieren el impulso de rendimiento. Tampoco tienen ningún tipo de métodos oficiales de tematización, así que probablemente no les importa si no puedes cambiar los colores de tus iconos de estado o el texto del sistema, etc. Además, tienen la ventaja de saber en qué dispositivo quieren que se ejecute su sistema, por lo que pueden precompilar fácilmente los archivos .odex, imagino. Como ventaja adicional, hace que sea difícil sacar los archivos .apk del dispositivo y compartirlos con la gente.

Edit: Dado que acabo de darme cuenta de que no fui muy explícito sobre la diferencia aquí: una ROM "odexada" es aquella en la que las aplicaciones han sido precompiladas, y por lo tanto contienen archivos .odex asociados que son externos a los archivos .apk. Una ROM "deodexada" es aquella en la que los datos que serían optimizados en los archivos .odex se han fusionado más o menos de nuevo en los archivos .apk (lo que significa que no está optimizado pero es básicamente independiente de la plataforma), por lo que los archivos .apk son autocontenidos y no hay archivos .odex. Esto usualmente se hace con una utilidad de deodexado, como smali/baksmali.

0 votos

La última edición, haciéndolo más explícito, fue muy útil. +1

10voto

Codeversed Puntos 282

Personalmente quería conocer la respuesta a esto hace un tiempo. Aquí está lo que descubrí:

Odexed y Deodexed

Se supone que una ROM está odexed para su lanzamiento, lo que proporciona una carga más suave y rápida de aplicaciones en la memoria. Cada archivo .apk tiene un archivo .odex correspondiente. Cuando la aplicación es utilizada por el sistema o el usuario, se utiliza el archivo .odex para empezar a cargar la aplicación. Una ROM que está deodexed solo tiene el archivo .apk. Cuando la aplicación es llamada a la memoria solo extrayendo los datos de su archivo .apk, esto lleva más tiempo debido a no estar optimizado para una recuperación más fácil desde el sistema.

Las preguntas comunes que me hacen con demasiada frecuencia son:

  1. ¿Por qué las ROM personalizadas son deodexed?
  2. ¿Debería usar una ROM odexed o deodexed?

Para responder a estas preguntas, todo se reduce a una palabra, la themabilidad. Si hablas con alguien que themes ROM's te dirá que es extremadamente más fácil hacer un tema a una ROM deodexed. Desde que empezamos a usar ROM's deodexed, los themers ahora pueden crear temas para aplicar a una ROM en lugar de la tediosa opción de hacer un tema a la ROM misma (lanzar una ROM personalizada para un tema). Si usas una ROM odexed y tratas de aplicar temas, no funcionará o solo tematizará algunos aspectos visuales, lo que te dará una terrible interfaz de usuario para experimentar.

Contras de Deodex

Apuesto a que ahora te estás preguntando por qué... por qué siquiera existe la opción de descargar una ROM personalizada que está odexed? La respuesta a eso es velocidad. ¿Recuerdas cómo dije que los archivos odexed están optimizados para una recuperación más fácil? Simplemente se... está optimizado (como indexar una tabla de datos) para que el sistema pueda abrir el archivo .apk más rápido.

Deodex y zipalign

Todos querían lo mejor de ambos mundos, así que rápidamente después de que la tendencia de deodexed comenzara a alcanzar su punto máximo, estos astutos desarrolladores de ROM vinieron con una solución para zipalign en el arranque. Esto optimiza cada archivo .apk en cada reinicio, lo que permite al sistema acceder a las aplicaciones de manera más eficiente y, lo más importante, más rápido. Por supuesto, la desventaja es que los tiempos de arranque son ligeramente más lentos.

Resumen

Si tienes la opción de descargar la ROM personalizada odexed o deodexed, te recomendaría ir con la ROM deodex. Nunca sabes cuándo querrás probar un tema o hacer algunas modificaciones tú mismo y es bueno tener opciones simples en lugar de flashear una ROM completamente nueva. Con dispositivos más nuevos, es posible que ni siquiera notes una diferencia al zipalign en el arranque. Si tu dispositivo es bastante lento y anticuado, entonces sugeriría que pienses un poco más en esto. Apuesto a que algunos de ustedes preferirían obtener una buena ROM mínimamente optimizada (odexed) para un mejor rendimiento y velocidad en lugar de personalizar la interfaz de usuario.

Si eres nuevo en el tema, puedes encontrar algunos términos comunes en mi escrito original aquí: http://codeversed.com/deodexed-vs-odexed-rom

De lo contrario, lo anterior te muestra todo lo que necesitas saber. Si me he olvidado de algo, por favor házmelo saber :)

2voto

Lie Ryan Puntos 15629

Un archivo .dex (ejecutable dalvik) es básicamente similar a los archivos .exe de Windows (excepto en el lenguaje de la VM Dalvik, en lugar de código compilado). Básicamente, .odex (ejecutable dalvik optimizado) y deodex (ejecutable dalvik desoptimizado) se relacionan con cómo se manejan los archivos de recursos en las aplicaciones. El .odex es un archivo .dex que ha sido optimizado por el programa dexopt: http://www.netmite.com/android/mydroid/dalvik/docs/dexopt.html

Ventaja

  • odex es más rápido
  • hace más fácil el tema

Desventaja

  • deodex es más lento en el primer arranque
  • los archivos .odex hacen que el tema sea más complicado

0 votos

"Deodex" no significa de-optimizado .dex, significa eliminar los archivos .odex (eliminar los archivos .odex, en esencia). eldarerathis tiene razón.

0 votos

¡Gracias por proporcionar la pieza crítica de información sobre que la indexación se trata de recursos! Dicho esto: la comparación del exe no es genial.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X