{{tag>Xenial Android}}
----
====== Apktool ======
Il s'agit d'un outil en ligne de commandes de réingénierie d'applications Android binaires, tierces et fermées sous licence [[https://github.com/iBotPeaches/Apktool/blob/master/LICENSE|Apache 2.0]]. Il peut décoder des ressources à la forme presque originale et les reconstruire après avoir fait quelques modifications; Il permet de déboguer le code smali étape par étape. De plus, il facilite le travail avec l'application grâce à la structure de fichiers et à l'automatisation de certaines tâches répétitives comme la construction d'apk, etc.
apktool
==== Décodage ====
L'option de décodage peut être appelée par les arguments ''d'' ou ''decode'' comme montré ci-dessous
apktool d foo.jar
// décode foo.jar dans le répertoire foo.jar.out
apktool decode foo.jar
// décode foo.jar dans le répertoire foo.jar.out
apktool d bar.apk
// décode bar.apk dans le répertoire bar
apktool decode bar.apk
// décode bar.apk dans le répertoire bar
apktool d bar.apk -o baz
// décode bar.apk dans le répertoire baz
==== Construction ====
L'option de re/construction peut être appelée par les argument ''b'' ou ''build'' comme montré ci-dessous
apktool b foo.jar.out
// builds foo.jar.out folder into foo.jar.out/dist/foo.jar file
apktool build foo.jar.out
// builds foo.jar.out folder into foo.jar.out/dist/foo.jar file
apktool b bar
// builds bar folder into bar/dist/bar.apk file
apktool b .
// builds current directory into ./dist
apktool b bar -o new_bar.apk
// builds bar folder into new_bar.apk
==== Frameworks ====
Comme vous le savez probablement, les applications Android utilisent du code et des ressources qui se trouvent sur le système d'exploitation Android lui-même. Ceux-ci sont connus comme des Framework et Apktool s'appuie sur ceux-ci pour correctement décoder et construire des apks.
Les Frameworks peuvent êtres installés avec ''if'' ou ''install-framework'', de plus deux paramètres autorisent un contrôle plus précis sur la manière dont les fichiers sont nommés et stockés.
* ''-p, --frame-path
apktool if framework-res.apk
I: Framework installé dans: 1.apk
// pkgId du framework-res.apk déterminent le numéro (lequel est 0x01)
apktool if com.htc.resources.apk
I: Framework installé dans: 2.apk
// pkgId de com.htc.resources est 0x02
apktool if com.htc.resources.apk -t htc
I: Framework installé dans: 2-htc.apk
// pkgId-tag.apk
apktool if framework-res.apk -p foo/bar
I: Framework installé dans: foo/bar/1.apk
apktool if framework-res.apk -t baz -p foo/bar
I: Framework installé dans: foo/bar/1-baz.apk
Les différents Framework sont stockés dans ''$HOME/.local/share/apktool''
Pour la plupart des apk dans ''/system/framework'' sur un appareil sera un fichier framework. Sur certains appareils, ils peuvent être situés dans ''/data/system-framework'' et même habilement cachés dans ''/system/app'' ou ''/system/priv-app''. Ils sont habituellement désignés sous les noms "resources", "res" or "framework".