Lors de l'ouverture du fichier apk avec winrar (s/w pour ouvrir les fichiers compressés). J'ai un tas de fichiers emballés dans l'apk. Parmi eux, classes.dex en est un. Ma question est quel est le rôle de ce fichier et si nous modifions/supprimons le même fichier cela affectera-t-il l'apk?
Pour créer un fichier APK, un programme pour Android est d'abord compilé, puis toutes ses parties sont regroupées dans un seul fichier. Il contient tout le code de ce programme (Ce sont les .dex files
), les ressources, les actifs, les certificats et le fichier manifeste.
Les programmes sont généralement écrits en Java
et compilés en bytecode
. Ils sont ensuite convertis de Java Virtual Machine-compatible .class files
à Dalvik-compatible .dex
(Dalvik Executable) avant l'installation sur un périphérique. Le format Dalvik Executable compact est conçu pour convenir aux systèmes qui sont limités en termes de mémoire et de vitesse de processeur.
Comme les fichiers .dex contiennent les ressources APK, toute modification sur ces fichiers affectera directement l'APK.
.fichier dex Compilé Android.
Les programmes Android sont compilés dans des fichiers .dex (Dalvik Executable)
, qui sont à leur tour compressés en un seul fichier . Apk sur l'appareil. Les fichiers .dex peuvent être créés en traduisant automatiquement les applications compilées écrites dans le langage de programmation Java.
Et oui, si vous supprimez ces fichiers, cela affectera l'APK.
classes.dex est essentiellement toute la logique d'application. Le code de l'application donnée est écrit au format Java puis compilé en fichiers de classe, puis ces fichiers de classe sont compilés de manière croisée (avec de nombreuses optimisations) au format dalvik VM . Notez qu'il peut également y avoir des fichiers .so qui sont également du code d'application, mais ils sont générés lorsque NDK est utilisé. Vous ne pouvez pas supprimer ce fichier. Vous pouvez cependant le modifier en exécutant d'abord cet utilitaire https: // github.com/JesusFreke/smali qui générera du code smali à partir de ce dex compilé qui est quelque peu similaire à Java et pourrait être compris. Vous pouvez également utiliser les outils ApkOneClick ou ApkMultiTool pour obtenir = Java source à partir des fichiers smali mais ceux-ci ne seraient probablement pas parfaits et nécessiteront une correction supplémentaire. Lorsque vous changez le code que vous voulez, vous devez à nouveau construire le classes.dex et les mettre dans Zip/apk existant Notez que les fichiers de certificat existants (META-INF) ne seront plus valides et vous devrez supprimer ce dossier et démissionner de l'apk pa ckage afin de l'installer sur le téléphone ou l'émulateur.
Pour plus d'informations, vous pouvez également vérifier cette question Que sont les fichiers .dex dans Android?
C'est aussi un excellent tutoriel sur le démontage des fichiers dex à l'aide des outils existants http://blog.vogella.com/2011/02/14/disassemble-Android-dex
Quel est le rôle de ce fichier?
Le rôle de classes.dex
in Android est similaire à celui des fichiers JAR en Java simple. C'est un fichier contenant des bytecodes. Dans Android cas, le bytecode est Dalvik bytecode, qui est différent de Java bytecode.
Si nous modifions/supprimons le même fichier, cela affectera-t-il l'apk?
Si vous modifiez classes.dex
, vous modifiez le comportement des programmes, qui peut ou non fonctionner après un reconditionnement. Si vous supprimez classes.dex
, alors votre application n'a pas de code et vous ne devriez pas vous attendre à ce qu'il fonctionne.
Le fichier .dex dans l'apk est le fichier compressé qui est composé de toutes les classes Java dans le code d'application. Il est différent du fichier jar. Un fichier jar est une collection de fichiers .class qui sont isolés. Si nous décompressons .jar, nous obtenons toutes les classes séparément. De l'autre côté, le fichier .dex est un fichier unique composé de tous les fichiers .class du code d'application.
Flux de compilation du code: plusieurs fichiers .Java -> plusieurs fichiers .classes -> un seul fichier .dex
Les fichiers .dex sont les exécutables exécutés par la machine virtuelle DVM ... Dalvik, qui est un runtime pour Android.
.dex n'inclura jamais de ressources. Les ressources sont gérées séparément dans le dossier/res dans .apk