Как создать полный файл APK, включая динамический модуль

В моем проекте есть модуль динамических функций, и я хотел бы создать APK для отладки или выпуска, включая динамическую функцию. В настоящее время я могу получить только базовый APK-файл.

По сути, я бы сгенерировал файл APK как обычное приложение. Но я не мог сделать с динамической функцией. Да, я знаю, что динамическая функция будет работать на основе AAB.

Есть ли способы сделать нормальный (базовый + все модули) APK файл?. Пожалуйста, помогите в этом.

Спасибо

1 ответ

Решение

Вы можете указать, должен ли ваш модуль по требованию быть включен в универсальный APK, который обычно генерируется для более старых устройств, а затем вы можете использовать bundletool для генерации Universal APK из комплекта приложений:.

В этом конкретном случае вы можете использовать что-то вроде:

bundletool build-apks --bundle <bundle_file> --output <APKS file> --ks <key_store> --key-pass <jks password> --ks-key-alias <key_alias> --ks-pass <key password> --overwrite --mode=universal

Ключевым моментом является включение --mode=universal это инструктирует bundletool для создания Universal APK, который будет включать все модули, которые имеют <dist:fusing dist:include="true"/> в манифесте.

Аналогичным образом, когда вы запускаете проект из Android Studio на устройстве, используя конфигурацию по умолчанию для Run (Deploy = Default APK), он включает все ваши модули по требованию.
Вместо этого, когда вы запускаете приложение из Studio, используя конфигурацию Run (Deploy = APK from AppBundle), вы можете выбрать, какие модули установлены.

Однако в обоих случаях вы не можете проверить загрузку модулей по требованию, если не заходите в магазин Play.

Я не вижу, чтобы это было задокументировано, но инструменты сборки Android Gradle включают в себя задачи по извлечению универсального APK для вас. Вы можете использовать что-то подобное:

./gradlew :yourmodule:packageDebugUniversalApk

Под капотом он использует bundletool и делает по сути то же самое, что и другой ответ, но приятно иметь возможность делать это из Gradle.

Загрузите jar-файл bundletool с Github (Последний выпуск> Активы> файл bundletool-all-version.jar). Переименуйте этот файл в bundletool.jar

  1. Создайте файл aab из Android Studio, например: myapp-release.aab
  2. Выполните следующую команду:

java -jar "путь / к /bundletool.jar" build-apks --bundle=myapp-release.aab --output=myapp.apks --ks="/ путь / к /myapp-release.keystore" --ks-pass= пройти:myapp-keystore-pass --ks-key-alias=myapp-alias --key-pass=pass:myapp-alias-pass

  1. файл myapp.apks будет создан
  2. Ниже приведена команда для создания универсального apk

java -jar bundletool.jar build-apks --bundle = nhl.aab --output = nhl.apks --mode = универсальный

`

Другие вопросы по тегам