Comment utiliser aapt2, où est la documentation?

j'ai utilisé aapt p package de ressources et de générer R.java.

mais quand je suis passé à Android 24, j'ai trouvé aapt2.exe.

devrais-je utiliser aapt2.exe? Comment puis-je l'utiliser? Je n'ai pas pu trouver de documentation à ce sujet.

14
demandé sur Generic Bot 2017-02-07 08:25:43

3 réponses

il y a de grandes différences entre le fonctionnement de L'AAPT et de L'AAPT2.

Compiler et lier

l'idée principale derrière AAPT2, en dehors des nouvelles fonctionnalités, est qu'il divise l'étape "paquet" en deux: "compilation" et "lien". Il améliore les performances, car si un seul fichier change, vous n'avez qu'à recompiler ce fichier et lier tous les fichiers intermédiaires avec la commande 'link'.

plus restrictif

AAPT2 essaie d'attraper la plupart des bogues le plus tôt possible. C'est pourquoi en passant d'AAPT à AAPT2, vous pourriez rencontrer de nombreuses erreurs indiquant que certains éléments sont mal imbriqués ou que certaines références sont incorrectes. Pour en savoir plus sur la nouvelle restriction, voir Android Studio 3.0 documentation.

Utilisation

Android Studio 3.0 est livré avec AAPT2 activé par défaut (avec Android Gradle Plugin 3.0.0). Mais si vous voulez utiliser AAPT2 dans votre propre script, vous aurez besoin de changer la façon dont vous traitez vos ressources. Pour la commande' package 'avec AAPT, vous passerez le répertoire des ressources avec l'option-S. Avec AAPT2, vous devez compiler chaque ressource d'abord avec la commande' compiler et passer ensuite tous les fichiers compilés avec l'option-R.

Par exemple:

aapt package -S app/src/main/res/ ...

au Lieu d'utiliser:

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 ...

Drapeaux

il y a plus de différences dans l'utilisation des drapeaux, par exemple les deux les options' --pseudo-localize 'et' -- no-crunch 'sont utilisées par fichier pendant l'étape de compilation. Pour plus d'informations sur les drapeaux AAPT2, tapez:

aapt2 compile -h
aapt2 link -h
19
répondu Izabela Orlowska 2017-10-30 14:16:38

Note: traitez ceci comme un ajout à la réponse D'Izabela

Ceci est (en date de Fév 2018) assez mal documenté. Les auteurs du service Overlay Manager dans Android O ont présenté leur travail récemment et parler de 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.

8
répondu scorpiodawg 2018-02-15 23:16:26

en plus des réponses données ci-dessus, la documentation pour L'AAPT2 est finalement sortie. Vous pouvez trouver de la documentation ici. Si vous trouvez des erreurs, veuillez signaler un bug contre ces erreurs.

2
répondu Shrijana Ghimire 2018-08-14 20:51:22