Как отладить приложение, в котором пакеты расширения OBB были заменены на PAD (Play Asset Delivery)?

С нетерпением ждем отказа от устаревшая система пакета расширения OBB и замените ее новой блестящей Play Asset Delivery (PAD, ранее известная как Dynamic Asset Delivery), я следил за документацией. Но я не понимаю, что делать дальше. Как мне добраться до места, где я могу нажать Debug и найти готовые активы, как в старые времена, когда мой OBB ждал в телефоне в / storage / emulated / 0 / Android / obb /?

TL; DR: мой ответ приведен ниже, но мне бы очень понравилось, если бы был способ добиться быстрой отладки с помощью пакета ресурсов во время установки. Текущий рабочий процесс, описанный в моем ответе, требует 1) ожидания около 5-10 минут для сборки пакета, 2) создания блоба APKS, затем 3) его установки из разделов.

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


КАК ВСЕ НАЧИНАЛОСЬ

Моя цель: добиться такой же безупречной ситуации, как тогда, когда я нажимал кнопку «Отладка» в Android Studio, зная, что обратная сторона расширения была аккуратно установлена ​​в соответствующем каталоге, чтобы передавать изображения и звуки нашему приложению. Здесь я надеялся нажать Debug и аналогичным образом найти изображения и звуки, готовые к использованию, но вместо этого прямо дома в моем Asset Manager.

В соответствии с традициями документации Expansion Pack, в документации PAD --local-testing звучит очень легко. Но тут начались неприятности.

Поэтому я сначала установил альфа-версию v0.15 bundletool в надежде испытать быстрые итерационные циклы, которые позволили бы избежать загрузки в Play Store во время разработки. Все идет нормально! Я использовал флаг --local-testing для создания коллекции APK.

Путаница возникла, когда я подключил свое устройство и запустил команду bundletool install-apk. Bundletool мало что говорит, и у него почти не было экрана -help. Но вот эти файлы выплюнул:

ADB >> OK
Pushed "/sdcard/Android/data/com.myapp/files/local_testing/base-xxhdpi.apk"
Pushed "/sdcard/Android/data/com.myapp/files/local_testing/base-master_2.apk"
Pushed "/sdcard/Android/data/com.myapp/files/local_testing/base-de.apk"
Pushed "/sdcard/Android/data/com.myapp/files/local_testing/base-fr.apk"
Pushed "/sdcard/Android/data/com.myapp/files/local_testing/base-nb.apk"
Pushed "/sdcard/Android/data/com.myapp/files/local_testing/base-sv.apk"
Pushed "/sdcard/Android/data/com.myapp/files/local_testing/base-arm64_v8a_2.apk" 

Я подумал, что одним из них может быть название моего пакета ресурсов, my_asset_pack.apk или что-то в этом роде. Но ничего не было.

Поэтому мне было любопытно, какой из этих файлов содержит активы, которые я разбил на пакет активов, отдельно от активов моего базового приложения. Я узнал строки локализации (de, fr и т. Д.). Но как насчет моих нелокализованных медиа? (Могут ли они быть в базе - master _2.apk?)

Было ли что-то еще, что мне нужно было сделать, чтобы эти активы появились? Пока что мои готовые к установке активы, похоже, не были доступны из Asset Manager при загрузке, поэтому я, должно быть, пропустил шаг.

РЕДАКТИРОВАТЬ: обновлено, чтобы отразить изменение имени с PAD на DAD.


person John Gorenfeld    schedule 16.06.2020    source источник


Ответы (2)


Я не знаю, как это происходит в Android Studio, но в Intellij IDEA вам нужно изменить параметр развертывания с APK по умолчанию на APK из пакета приложений в окне редактирования конфигурации. После изменения этой опции я смог без проблем отлаживать свое приложение с помощью пакета приложений. введите описание изображения здесь

person Bero    schedule 21.01.2021
comment
Эквивалент в Android Studio: Выполнить- ›Изменить конфигурации-› Развернуть: (изменение на APK из пакета приложений). См. imgur.com/QePMvbl. - person Nick Fisher; 13.06.2021

Итак, общая картина такова, что наша командная строка будет выполнять ту работу, которую Play Store обычно выполняет при получении нашего пакета, перемешивая его через фабрику и публикуя в формате APK. Пакет выдает кучу разделенных .APK, которые затем, в свою очередь, используются для установки на нашем устройстве.

УСТАНОВКА СВОЕЙ DEBUG BUILD С ПОМОЩЬЮ INSTALL ASSET PACK

  1. В AS перейдите в раздел «Создать подписанный пакет» - ›Пакет приложений для Android.

  2. Создайте отладочную сборку с вашими учетными данными.

  3. С Bundletool 1.0 или выше:

bundletool build-apks --bundle=./app-debug.aab --output=./my_app.apks --ks <path to my keystore.jks> --ks-key-alias=<keystorealias> --local-testing

  1. Используйте наш BLOB-объект .apks для установки приложения:

bundletool install-apks --apks=./my_app.apks

  1. Коснитесь недавно установленного приложения

  2. Выполнить - ›Присоединить отладчик к процессу Android.

  3. Наслаждайтесь присутствием ваших активов прямо в вашем AssetManager.

Но достигли ли мы быстрых итеративных циклов? Эх, вроде того. Создание этого большого двоичного объекта на моем Dell XPS под WSL занимает около 10 минут без звука. Может быть, пора достать чековую книжку за этот 64-ядерный Ryzen Threadripper.

ОТЛАДКА СВЕЖЕЙ УСТАНОВЛЕННОЙ ОТЛАДКИ С ПОМОЩЬЮ ASSET PACK

Вот что мне подходит. Перед сборкой пакета я временно копирую все активы пакета активов из ‹/my_asset_pack_dir› в обычный каталог базовых активов, / app / src / main / assets /. Таким образом я могу убедиться, что приложение может связаться с ними через AssetManager. Затем эти временные файлы можно было игнорировать во время сборки или удалить с помощью сценария.

Таким образом можно протестировать ресурсы без 10-минутного ожидания .AAB - ›.APKS -› разделенной установки.

person John Gorenfeld    schedule 29.06.2020
comment
Не могли бы вы попробовать использовать --connected-device, чтобы увидеть, ускорит ли это процесс? Он будет построен только для конфигурации вашего подключенного устройства. Например: bundletool build-apks --connected-device --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks Вы можете указать конкретное устройство, используя --device-id=serial-id, если у вас несколько устройств. Дайте нам знать, как у вас дела! :) - person Hoi; 15.07.2020
comment
Интересно, спасибо за это! Пока что, похоже, это занимает очень много времени, но я использую подсистему Windows для Linux, поэтому, возможно, ограничения adb не позволяют bundletool идентифицировать мое устройство. Тем не менее, я попробую это сделать из командной строки Windows и посмотрю, поможет ли это. Я ценю обратную связь. - person John Gorenfeld; 16.07.2020
comment
Возможно, будет проще скопировать все активы пакета ресурсов в / app / src / debug / assets. Таким образом, вы можете оставить их там, при том понимании, что люди редко создают отладочный AAB, вместо того, чтобы делать их временными. Изменить: или вы также можете отредактировать конфигурацию сборки, чтобы создать APK из набора приложений. См. developer.android.com/studio/run/. Это означает, что вы можете просто нажать кнопку отладки в Android Studio без необходимости копировать ресурсы вообще. - person Chrispher; 25.09.2020
comment
Решение для конфигурации сборки звучит великолепно, спасибо. Избавляет меня от необходимости управлять двумя наборами файлов ресурсов и / или писать сценарии для их обработки. Изменить: хотя теперь, когда я нахожусь в 3 минутах 17 секунд, ожидая этапа с именем: app: makeApkFromBundleForDebug, я думаю, что мог бы придерживаться техники копирования ресурсов. Другая проблема, с которой я столкнулся, помимо медлительности, заключалась в том, что при извлечении APK у меня закончилось пространство кучи Java. - person John Gorenfeld; 28.09.2020