Я использовал aapt p
для упаковки ресурсов и создания R.java
.
Но когда я перешел на Android 24, я нашел aapt2.exe
.
Должен ли я использовать aapt2.exe
? Как его использовать? Я не мог найти документацию об этом.
Я использовал aapt p
для упаковки ресурсов и создания R.java
.
Но когда я перешел на Android 24, я нашел aapt2.exe
.
Должен ли я использовать aapt2.exe
? Как его использовать? Я не мог найти документацию об этом.
Существуют некоторые большие различия между тем, как работают AAPT и AAPT2.
Основная идея AAPT2, помимо новых функций, заключается в том, что она делит шаг "пакет" на два: "компилировать" и "ссылку". Это улучшает производительность, поскольку, если изменяется только один файл, вам нужно только перекомпилировать этот файл и связать все промежуточные файлы с командой "link".
AAPT2 пытается поймать большинство ошибок как можно раньше. Поэтому при переключении с AAPT на AAPT2 вы можете столкнуться с множеством ошибок, заявляя, что некоторые элементы вложены неправильно или что некоторые ссылки неверны. Для получения дополнительной информации о новом ограничении смотрите Документация по Android Studio 3.0.
Android Studio 3.0 поставляется с включенным AAPT2 (с Android Gradle Plugin 3.0.0). Но если вы хотите использовать AAPT2 в своем собственном script, вам нужно будет изменить способ обработки ваших ресурсов.
Для команды "package" с AAPT вы должны передать каталог ресурсов с -S. С AAPT2 вам необходимо скомпилировать каждый ресурс сначала с помощью команды компиляции и только затем передать все скомпилированные файлы с флагом -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
Примечание: рассматривайте это как дополнение к ответу Изабелы
Авторы сервиса Overlay Manager в Android O представили свои работы и рассказали об AAPT2 на своих слайдах (см. слайды 12-14 для контекста). Официальная документация по этому инструменту теперь здесь (любезно предоставлено @Shrijana ответ)
Также, если есть сомнения, посмотрите на исходный код: https://android.googlesource.com/platform/frameworks/base/+/android-7.0.0_r7/tools/aapt2.
В дополнение к приведенным выше ответам, документация для AAPT2 наконец-то вышла. Вы можете найти документацию здесь. Если вы обнаружите какие-либо ошибки, сообщите об ошибке в отношении этих ошибок.
В файле gradle.properties добавляется следующая строка:
android.enableAapt2=true