Невозможно собрать комплект приложений для Android с помощью bundletool из командной строки - PullRequest
3 голосов
/ 02 мая 2019

Я пытаюсь собрать android app bundle из командной строки, используя bundletool, следуя инструкции, описанной в https://developer.android.com/studio/build/building-cmdline#bundletool-build

Простой андроид-проект, созданный в основном из Android Studio, используется для изучения того, какой из нихуспешно скомпилирован на Android Studio.

Шаг скомпилированных ресурсов в порядке, но он не выполнен на этапе соединения с aapt2.Протестировано с aapt2-3.4.0-5326820-windows

Команда :

set ANDROID_TOOL=%ANDROID_SDK%/platforms/android-26/android.jar
%AAPT2% link --proto-format -o output.apk -I %ANDROID_TOOL% --manifest %CURRENT_DIR%/app/src/main/AndroidManifest.xml -R @compiled_resources.txt --auto-add-overlay -v

compiled_resources.txt содержит список скомпилированных ресурсов .flat, которые я обработал ранее.

Ошибка :

error: resource style/Theme.AppCompat.Light.DarkActionBar (aka com.example.doandominh.simpleaab:style/Theme.AppCompat.Light.DarkActionBar) not found.
I:\RnD\AAB\SimpleAAB\\app\src\main\res\values\styles.xml:6: error: style attribute 'attr/colorPrimary (aka com.example.doandominh.simpleaab:attr/colorPrimary)' not found.
I:\RnD\AAB\SimpleAAB\\app\src\main\res\values\styles.xml:7: error: style attribute 'attr/colorPrimaryDark (aka com.example.doandominh.simpleaab:attr/colorPrimaryDark)' not found.
I:\RnD\AAB\SimpleAAB\\app\src\main\res\values\styles.xml:8: error: style attribute 'attr/colorAccent (aka com.example.doandominh.simpleaab:attr/colorAccent)' not found.
error: failed linking references.

Я думал, что это зависит от чего-то вроде 'com.android.support:appcompat-v7:26.1.0', но я не знаю, какдобавьте их в параметры ссылки aapt2.

Кто-нибудь сталкивался с этой проблемой раньше?Любой комментарий высоко ценится.

1 Ответ

1 голос
/ 02 мая 2019

tldr: вам также нужно скомпилировать ресурсы AppCompat, так как вы создаете все это вручную, и передавать их для связи так же, как вы делаете это с локальными ресурсами (порядок имеет значение для сохранения правильных оверлеев / переопределений).

Способ, которым Android Gradle Plugin обрабатывает ресурсы на уровне приложения:

  • объединить все ресурсы (локальное приложение, локальные библиотеки, удаленные библиотеки, дополнительные наборы источников ресурсов и т. Д.)
  • скомпилировать все, используя 'aapt2 compile' (с или без сжатия PNG)
  • связать все в APK
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...