Pour résumer les informations pertinentes, permettez-moi de citer un extrait de la question-réponse dont eldarerathis a donné le lien ci-dessus (tous les crédits lui reviennent, car ce texte est tiré de sa réponse) :
A .dex
est essentiellement une version compilée en bytecode d'une application qui a été construite pour la VM Dalvik sur laquelle les applications Android fonctionnent. Je crois que c'est l'abréviation de Dalvik Executable, mais je ne suis pas sûr de m'en souvenir correctement.
Un site .odex
est un fichier .dex optimisé (d'où le 'o'), ce qui signifie qu'il a été précompilé pour une plateforme spécifique. L'avantage est que le démarrage est beaucoup plus rapide puisque la VM n'a pas à effectuer d'optimisation au démarrage ou au moment de l'exécution. Les inconvénients sont les suivants : 1) cela prend de l'espace supplémentaire et 2) une application odexée ne fonctionnera pas correctement si elle est placée sur un autre appareil, et elle doit avoir le fichier .odex associé pour fonctionner.
Lorsque vous installez une application, Android analysera la .apk
et configurer le cache Dalvik de l'appareil avec une version optimisée de son code, de sorte que l'application démarre et s'exécute plus rapidement (après une réinitialisation de l'appareil, elle le fait pour les applications suivantes alle et après avoir effacé le cache Dalvik, ce qui est possible à partir du menu de récupération avec la plupart des CustomROMs, même pour toutes les applications utilisateur - c'est pourquoi le premier démarrage est beaucoup plus long que les suivants).
Cependant, lorsqu'un "odex" est trouvé, il est simplement copié dans le cache Dalvik. Comme l'a souligné eldarerathis, l'option .odex
a été conçu pour un matériel spécifique (ce qui me fait penser à Assembly) - donc si ce "matériel spécifique" n'est pas celui utilisé par le dispositif actuel, vous aurez certainement des problèmes.