J'ai utilisé aapt p
pour empaqueter les ressources et générer R.Java
.
Mais lorsque je suis passé à Android 24, j'ai trouvé aapt2.exe
.
Dois-je utiliser aapt2.exe
? Comment est-ce que je l'utilise? Je n'ai pu trouver aucune documentation à ce sujet.
Il existe de grandes différences entre le fonctionnement d'AAPT et d'AAPT2.
L'idée principale derrière AAPT2, en dehors des nouvelles fonctionnalités, est de diviser l'étape du "package" en deux: "compiler" et "lier". Il améliore les performances, car si un seul fichier change, il vous suffit de recompiler ce fichier et de lier tous les fichiers intermédiaires avec la commande 'link'.
AAPT2 essaie d'attraper la plupart des bogues le plus tôt possible. C'est pourquoi lors du passage d'AAPT à AAPT2, vous pouvez rencontrer de nombreuses erreurs indiquant que certains éléments sont imbriqués incorrectement ou que certaines références sont incorrectes. Pour plus d'informations sur la nouvelle restriction, consultez documentation Android Studio 3. .
Android Studio 3.0 est livré avec AAPT2 activé par défaut (avec Android Gradle Plugin 3.0.0). Mais si vous souhaitez utiliser AAPT2 dans votre propre script, vous devrez changer la façon dont vous traitez votre Pour la commande 'package' avec AAPT, vous passeriez le répertoire des ressources avec -S. Avec AAPT2, vous devez d'abord compiler chaque ressource avec la commande 'compile et ensuite passer tous les fichiers compilés avec l'indicateur -R.
Par exemple:
aapt package -S app/src/main/res/ ...
Utilisez plutôt:
aapt2 compile -o compiled/res/ app/src/main/res/values/values.xml
aapt2 compile -o compiled/res/ app/src/main/res/drawable/myImage.png --no-crunch
...
aapt2 link -R compiled/res/values_values.arsc.flat -R compiled/res/drawable_myImage.flat ...
Il y a plus de différences dans l'utilisation des indicateurs, par exemple, les indicateurs "--pseudo-localize" et "--no-crunch" sont utilisés par fichier pendant l'étape "compiler". Pour plus d'informations sur le type d'indicateurs AAPT2:
aapt2 compile -h
aapt2 link -h
Remarque: traitez cela comme un ajout à la réponse d'Izabela
C'est (en février 2018) assez mal documenté. Les auteurs du service Overlay Manager dans Android O ont présenté leur travail récemment et parlent d'AAPT2 dans leurs diapositives (voir les diapositives 12-14 pour le contexte).
Aussi, en cas de doute, regardez le code source: https://Android.googlesource.com/platform/frameworks/base/+/Android-7.0.0_r7/tools/aapt2 .
En plus des réponses données ci-dessus, la documentation pour AAPT2 est enfin disponible. Vous pouvez trouver la documentation ici . Si vous trouvez des erreurs, veuillez signaler un bug contre ces erreurs.