J'ai accidentellement effacé mon projet d'[Eclipse][1], et tout ce qui me reste est le fichier [APK][2] que j'ai transféré sur mon téléphone. Existe-t-il un moyen d'inverser le processus d'exportation d'une application vers le fichier .apk, afin que je puisse récupérer mon projet ?
[1] : http://en.wikipedia.org/wiki/Eclipse_%28software%29 [2] : http://en.wikipedia.org/wiki/APK_%28file_format%29
Il existe deux outils utiles qui génèrent du code Java (grossier mais suffisant) à partir d'un fichier APK inconnu.
Téléchargez l'outil dex2jar depuis [dex2jar][1].
Utilisez l'outil pour convertir le fichier APK en [JAR][2] :
$ d2j-dex2jar.bat demo.apk
dex2jar demo.apk -> ./demo-dex2jar.jar
Une fois le fichier JAR généré, utilisez [JD-GUI][3] pour ouvrir le fichier JAR. Vous verrez les fichiers Java.
La sortie sera similaire à :
[!JD GUI][4]][4]
[1] : https://github.com/pxb1988/dex2jar [2] : http://en.wikipedia.org/wiki/JAR_%28file_format%29 [3] : http://jd.benow.ca/ [4] : http://i.stack.imgur.com/2CaEM.jpg
Pas vraiment. Il existe un certain nombre de suites de désassembleurs/décompilateurs dex [comme smali][1], ou [dex2jar][2] qui génèrent des résultats semi-lisibles par l'homme (dans le cas de dex2jar, vous pouvez obtenir du code java en utilisant quelque chose comme [JD-GUI][3] mais le processus n'est pas parfait et il est très peu probable que vous puissiez recréer votre code source à 100%. Cependant, il peut potentiellement vous donner un point de départ pour reconstruire votre arbre des sources.
[1] : http://code.google.com/p/smali/ [2] : http://code.google.com/p/dex2jar/ [3] : http://java.decompiler.free.fr/?q=jdgui
Oui, vous pouvez récupérer votre projet. Il suffit de renommer le fichier votreprojet.apk
en votreprojet.zip
, et vous obtiendrez tous les fichiers contenus dans ce fichier ZIP. Nous changeons l'extension du fichier de .apk à .zip. De ce fichier ZIP, extrayez le fichier classes.dex
et décompilez-le de la manière suivante.
Premièrement, vous avez besoin d'un outil pour extraire toutes les classes (compilées) du DEX dans un JAR. Il en existe un appelé [dex2jar][1], qui a été créé par un étudiant chinois.
Ensuite, vous pouvez utiliser [JD-GUI][2] pour décompiler les classes dans le JAR en code source. Le code source résultant devrait être assez lisible, car dex2jar applique quelques optimisations.
[1] : http://code.google.com/p/dex2jar/downloads/list [2] : http://java.decompiler.free.fr/?q=jdgui