Есть ли способ сгенерировать файл apk из пакета приложений Android через терминал или с помощью студии Android?
@CaptainForge, мой ответ делает именно это! stackoverflow.com/a/57149405/5284155
By default, the IDE does not use app bundles to deploy your app to a local device for testing
Обратитесь к команде набор инструментов
Для команды Debug apk,
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Для команды Release apk:
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=/MyApp/keystore.jks
--ks-pass=file:/MyApp/keystore.pwd
--ks-key-alias=MyKeyAlias
--key-pass=file:/MyApp/key.pwd
Редактировать:
При тестировании своей сборки релиза для aab я использовал следующие команды (надеюсь, это поможет и другим):
Загрузите файл jar bundletool из Репозиторий Github (Последний выпуск> Ресурсы> файл bundletool-all-version.jar). Переименуйте этот файл в bundletool.jar
Создайте свой файл aab из Android Studio, например: myapp-release.aab
Выполните следующую команду:
java -jar "path/to/bundletool.jar" build-apks --bundle=myapp-release.aab --output=myapp.apks --ks = "/path/to/myapp-release.keystore" --ks-pass=pass:myapp-keystore-pass --ks-key-alias=myapp-alias --key-pass=pass:myapp-alias-pass
myapp.apks файл будет сгенерирован
Убедитесь, что ваше устройство подключено к вашей машине
Теперь выполните следующую команду, чтобы установить его на свое устройство:
java -jar "path/to/bundletool.jar" install-apks --apks=myapp.apks
Изменить 2:
Если вам нужно извлечь один файл .apk из файла .aab, вы можете добавить дополнительный параметр --mode=universal в команду bundletool:
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks \
--mode=universal \
--ks=/MyApp/keystore.jks \
--ks-pass=file:/MyApp/keystore.pwd \
--ks-key-alias=MyKeyAlias \
--key-pass=file:/MyApp/key.pwd
и выполнить
unzip -p /MyApp/my_app.apks universal.apk > /MyApp/my_app.apk
это сгенерирует один файл /MyApp/my_app.apk, который может быть установлен любым установщиком приложений устройства.
«По умолчанию» в Studio нет, но это легко сделать. Смотрите мой ответ ниже.
В общем, это на самом деле не отвечает на вопрос. Это создает файл APKS, а не файл APK. Файл APKS не может быть так легко установлен на устройство и требует, чтобы получатель APK использовал bundletool для его установки, или прошел через AS, или что-то еще, что, вероятно, знал бы только разработчик.
@CaptainForge вы нашли какое-нибудь решение?
Эта команда просто сгенерирует файл архива APK (.apks), и нам нужно преобразовать его в формат .zip и извлечь его только для того, чтобы найти множество файлов APK. Правильный способ - использовать флаг --mode: universal. Я отправлял правку пару раз, но, к сожалению, они были отклонены по странной причине - «редактирование отклоняется от первоначального замысла сообщения». Обычные рецензенты, я пытаюсь заполнить неполный принятый ответ.
Можете ли вы также добавить к своему ответу возможность сделать это в Android Studio одним щелчком мыши? Это намного проще, чем запускать эти команды.
получение SEVERE: ошибка ввода будущего с ошибкой java.lang.OutOfMemoryError: пространство кучи Java пожалуйста помоги
Можно ли использовать этот инструмент в приложении для Android? Можно ли с его помощью просто установить файл aab напрямую, без предварительного извлечения в несколько файлов apk?
Есть инструмент под названием bundletool, который может создавать APK из вашего файла AAB:
Подробную информацию об этом инструменте можно найти здесь: https://developer.android.com/studio/command-line/bundletool
Но вот некоторые основные моменты, взятые с этого сайта:
Сборка APK-файлов
Когда bundletool генерирует APK из вашего набора приложений, он включает их в контейнер, называемый архивом набора APK, который использует расширение файла .apks. Чтобы сгенерировать набор APK для всех конфигураций устройств, поддерживаемых вашим приложением, из пакета приложений, используйте команду bundletool build-apks, как показано ниже:
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Обратите внимание, что приведенная выше команда создает набор APK из неподписанных APK. Если вы хотите развернуть APK-файлы на устройстве, вам также необходимо указать информацию для подписи вашего приложения, как показано в приведенной ниже команде.
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=/MyApp/keystore.jks
--ks-pass=file:/MyApp/keystore.pwd
--ks-key-alias=MyKeyAlias
--key-pass=file:/MyApp/key.pwd
Установка APK
bundletool install-apks --apks=/MyApp/my_app.apks
Создание набора APK-файлов для конкретного устройства
bundletool build-apks --connected-device --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Хорошо, вот полный способ, который я должен был сделать:
Загрузите bundletool-all-0.10.3.jar с этого ссылка, загрузите последнюю доступную версию
Создайте пакет приложений с помощью студии Android и найдите его путь:
В моем случае это E:\Projects\Android\Temp\app\build\outputs\bundle\debug\app.aab
Скопируйте банку bundletools в какое-нибудь место и получите путь к ней
В моем случае это E:\Temp\bundletool-all-0.6.0.jar
Используйте эту команду:
java -jar "BUNDLE_TOOL_JAR_PATH" build-apks --bundle = "BUNDLE_PATH" --output=YOUR_OUTPUT_NAME.apks
В моем случае это будет
java -jar "E:\Temp\bundletool-all-0.6.0.jar" build-apks \
--bundle = "E:\Projects\Android\Temp\app\build\outputs\bundle\debug\app.aab" \
--output=out_bundle_archive_set.apks
out_bundle_archive_set.apks, переименует его в .zip out_bundle_archive_set.zip, извлечет этот файл и готово. У вас будет несколько файлов apk.Для установки непосредственно на внешнее устройство используйте:
java -jar "E:\Temp\bundletool-all-0.6.0.jar" install-apks --apks=out_bundle_archive_set.apks
Проверьте этот Сообщение блога для получения дополнительной информации. также проверьте официальный сайт
Переименование .apks в .zip и разархивирование - вот те части, которые я искал. Спасибо!
СЕРЬЕЗНО: входное будущее не удалось с ошибкой java.lang.OutOfMemoryError: пространство кучи Java
Спасибо за решение. Однако потребуется еще несколько флагов. --ks и --ks-key-alias со значениями --ks = "path_to_your_keystore" и --ks-key-alias = "key_alias_from_android_studio"
Люди уже объяснили, как это сделать с помощью командной строки. Для завершения, я подумал, что я также покажу, как это сделать через пользовательский интерфейс в Android Studio.
Когда вы открываете «Конфигурации запуска / отладки», вы можете выбрать "APK из набора приложений" (вместо «APK по умолчанию»).
Смотрите скриншот:
Не удалось создать APK-файл в формате aab, появляется следующая ошибка: «Не удалось установить. Не удалось выполнить установку, <a href='rerun'> Повторить </a>»
После Shift + F10 он установит приложение на устройство, а не сгенерирует apk.
Как установить расположение ааба?
Пока что никто не предоставил решения для получения APK из AAB.
Это решение сгенерирует универсальный двоичный файл в виде apk.
Добавьте --mode=universal в свою команду bundletool (если вам нужно подписанное приложение, при необходимости используйте параметры --ks).
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--mode=universal
ГЛАВНЫЙ ШАГ: Измените имя выходного файла с .apks на .zip
Разархивируйте и исследуйте
Файл universal.apk - ваше приложение
Этот универсальный двоичный файл, вероятно, будет довольно большим, но он является отличным решением для отправки в отдел контроля качества или распространения приложения в любом месте, кроме магазина Google Play.
Что, если я хочу создать файл APK в самом Android? Является ли это возможным?
Можно ли использовать .apk для редактирования приложения (или хотя бы для просмотра кода), а затем повторно загрузить его в Google Play?
Вы также можете напрямую собрать APK, соответствующий вашему подключенному устройству, используя build-apks с --connected-device, а затем bundletool install-apks.
Тем, кто хочет создать единый универсальный файл APK из пакета Android App Bundle, необходимо использовать флаг --universal при запуске команды build-apks.
java -jar bundletool.jar build-apks --bundle=your_app.aab --output=your_app.apks --mode=universal
Где bundletool.jar - это jar-файл bundletool, который вы скачали здесь
your_app.aab - это Android App Bundle вашего приложения.
your_app.apks - это выходной файл архива APK, который будет создан после запуска команды.
При выполнении указанной выше команды убедитесь, что вы поместили bundletool.jar и ваш файл AAB в одну и ту же папку.
Теперь вам нужно изменить формат файла your_app.apks на your_app.застегивать и извлечь его, чтобы найти файл universal.apk.
Примечание: используйте флаг –overwrite для перезаписи файла APK, если он уже существует с таким же именем. В противном случае команда bundletool выдаст вам фатальную ошибку.
получение SEVERE: ошибка ввода будущего с ошибкой java.lang.OutOfMemoryError: пространство кучи Java, пожалуйста, помогите
на Mac это легко сделать с помощью homebrew
brew install bundletool
вы можете использовать команду ниже для создания apks
bundletool build-apks --bundle=aab_path.aab --output=release.apks
Вышеупомянутая команда генерирует файл apks, который позже может быть извлечен для получения различных файлов apk. Чтобы увидеть все сгенерированные файлы, измените расширение с .apks на .zip и просто извлеките файлы.
затем вы можете установить apk с помощью этой команды на подключенном устройстве
bundletool install-apks --apks=release.apks
Вот что я сделал. Во-первых, я на Mac. Итак, в этом официальном руководстве https://reactnative.dev/docs/signed-apk-android выполните следующие шаги.
sudo keytool -genkey -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
вы можете изменить имя my-upload-key по своему усмотрению4.1 Я открываю тот же проект (папку android) в Android Studio
4.2 С Menu Options > Build > Clean Project
4.3 Нажмите кнопку «Сделать проект» и дайте ему завершить (если вы можете запустить с помощью npm run android, то это должно закончиться без каких-либо проблем)
Сделать проект
4.4 После этого нажмите Menu options > Build > Generate Signed Bundle/APK....
Создать подписанный пакет / APK ...
4.5 На следующем экране выберите переключатель APK и нажмите Далее. Выберите вариант APK
4.6 На следующем экране перейдите к файлу хранилища ключей, который вы создали на первом шаге, его паролю, псевдониму и паролю, нажмите «Далее». Заключительный этап
Подождите, пока он завершится. Вы можете увидеть некоторые ошибки, но, что более важно, в правом нижнем углу вы увидите всплывающее окно с надписью «Найдите». Щелкните по нему, и вы найдете свой app-release.apk.
Удачи
Приведенные ниже ответы говорят только о том, как создать файл APKS, который прямо из документации bundletool. Кто-нибудь нашел способ получить из пакета настоящий APK (не APKS) файл?