Как использовать aapt2, где находится документация?

я использовал aapt p для упаковки ресурсов и генерации R.java.

но когда я обновился до Android 24, я нашел aapt2.exe.

должен ли я использовать aapt2.exe? Как его использовать? Я не смог найти никаких документов об этом.

3 ответов


есть некоторые большие различия между тем, как AAPT и AAPT2 работы.

компиляция и ссылка

основная идея AAPT2, помимо новых функций, заключается в том, что он делит шаг "пакет" на два: "компиляция" и "ссылка". Это повышает производительность, так как если изменяется только один файл, вам нужно только перекомпилировать этот файл и связать все промежуточные файлы с командой "link".

более строгим

AAPT2 пытается поймать большинство ошибок как можно раньше. Вот почему при переключении с AAPT на AAPT2 может возникнуть много ошибок, указывающих, что некоторые элементы вложены неправильно или что некоторые ссылки неверны. Для получения дополнительной информации о новой ограниченности посмотрите на документация для Android Studio 3.0.

использование

Android Studio 3.0 поставляется с aapt2 включен по умолчанию (с Android Gradle плагин 3.0.0). Но если вы хотите использовать AAPT2 в своем собственном скрипте, вы нужно изменить способ обработки ваших ресурсов. Для команды "package"с AAPT вы передадите каталог ресурсов с-S. С AAPT2 вам нужно сначала скомпилировать каждый ресурс с помощью команды "compile" и только затем передать все скомпилированные файлы с флагом-R.
например:

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

вместо этого использовать:

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

флаги

есть больше различий в использовании флага, например, как "-- pseudo-localize " и "--no-crunch" флаги используются для каждого файла на этапе компиляции. Для получения полной информации о флагах aapt2 введите:

aapt2 compile -h
aapt2 link -h

Примечание: рассматривайте это как дополнение к ответу Изабелы

Это (по состоянию на февраль 2018 года) довольно плохо документировано. Недавно авторы сервиса Overlay Manager В Android O представили свою работу и рассказали об AAPT2 в своих слайдах (см. слайды 12-14 для контекста).

кроме того, когда вы сомневаетесь, посмотрите на исходный код: https://android.googlesource.com/platform/frameworks/base/+/android-7.0.0_r7/tools/aapt2.


в дополнение к приведенным выше ответам, документация для AAPT2, наконец, вышла. Вы можете найти документацию здесь. Если вы обнаружите какие-либо ошибки, пожалуйста сообщить об ошибке против этих ошибок.