web-dev-qa-db-fra.com

Comment utiliser aapt2, où est la documentation?

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.

16
chenie

Il existe de grandes différences entre le fonctionnement d'AAPT et d'AAPT2.

Compiler et lier

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

Plus restrictif

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

Usage

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

Drapeaux

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
24
Izabela Orlowska

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 .

8
scorpiodawg

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.

2
Shrijana Ghimire