Dynami c Функция с appbundle и PROGUARD не работает - PullRequest
3 голосов
/ 13 февраля 2020

ОБЗОР:
Я сталкиваюсь с проблемой при доступе к активности динамического c функционального модуля по требованию из базового модуля из-за proguard. (Скорее всего, я думаю)

ОПИСАНИЕ:
Я реализовал ON-DEMAND dynamici c функциональный модуль с комплектом приложений и загружен в игровой магазин .
Реализован proguard с пользовательскими правилами.
После загрузки приложения из магазина воспроизведения и доступа к этому модулю во время выполнения, модуль загружается. Сразу после загрузки я получил вызов для доступа к активности из моего базового модуля в этот динамический c модуль.
Я получаю сообщение об ошибке, как показано ниже

...
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{xxx.yyyyyy.zzzzzz.stage/xxx.yyyyyy.zzzzzz.apphub.appview.view.AppHubActivity}:
java.lang.ClassNotFoundException: Didn't find class "xxx.yyyyyy.zzzzzz.apphub.appview.view.AppHubActivity"
on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file 
...
...

FYI:
xxx.yyyyyy.zzzzzz - это мое измененное имя пакета для конфиденциальности.

IRONY:
Весь этот код отлично работает при отладке при доступе к нему из пакет приложений локально без proguard .

Я пробовал все ссылки ниже, чтобы преодолеть это, но не смог.
1) https://issuetracker.google.com/issues/120517460
2) https://github.com/android/plaid/issues/764
3) java .lang.NoClassDefFoundError: сбой разрешения: Lorg / apache / http / ProtocolVersion
4) https://issuetracker.google.com/issues/79478779
5) https://github.com/android/app-bundle-samples/issues/17

Я также пробовал все типы файлов proguard, которые мы можем использовать, но все еще беспомощные.
Также сохранил, что оба класса в proguard: базовый и динамический c класс активности модуля, но безуспешно.
Надеемся найти решение здесь.

* 105 5 * ОБНОВЛЕНИЕ:
не работает в android ОС 8,9, но рабочий файл в android 10.

1 Ответ

0 голосов
/ 14 февраля 2020

Убедитесь, что вы используете SplitCompat в действиях вашего модуля по требованию И в своем приложении.

См. https://developer.android.com/guide/playcore#access_downloaded_modules, в котором более подробно объясняется, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...