Я использовал 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 в своем собственном скрипте, вам нужно будет изменить способ обработки ваших ресурсов. Для команды «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
error: resource mipmap/ic_launcher (aka packageNamet:mipmap/ic_launcher) not found
. и т. д. Даже если эти файлы присутствуют в скомпилированной папке res.
- person jgm; 30.11.2017
aapt2 link --manifest /home/test/src/main/AndroidManifest.xml -I /home/Android/Sdk/platforms/android-27/android.jar -R /home/test/build/intermediates/res/merged/debug/* -o file.zip
Это команда, которую я использую. Папка res/merged/debug уже содержит все плоские файлы, созданные в процессе сборки Android Studio. Я просто пытаюсь упаковать в виде zip-файла. Я делаю что-то неправильно ? @izabela-orlowska
- person jgm; 01.12.2017
Примечание: рассматривайте это как дополнение к ответу Изабелы.
Авторы службы Overlay Manager в Android O представили свою работу и рассказали об AAPT2 на своих слайдах (контекст см. на слайдах 12–14). Официальная документация для этого инструмента теперь находится здесь (любезно предоставлено ответ)
Кроме того, если вы сомневаетесь, посмотрите исходный код: https://android.googlesource.com/platform/frameworks/base/+/android-7.0.0_r7/tools/aapt2.
В дополнение к приведенным выше ответам наконец-то вышла документация для AAPT2. Документацию можно найти здесь. Если вы обнаружите какие-либо ошибки, сообщите об ошибке относительно этих ошибок.
android.enableAapt2=true
Источник - person afathman   schedule 18.05.2017android.enableAapt2
устарела и больше не должна использоваться. Используйтеandroid.enableAapt2=true
, чтобы удалить это предупреждение. Он будет удален в конце 2018 года. - person Non Sensei   schedule 20.04.2018