Динамический c Функциональный модуль не устанавливается - PullRequest
2 голосов
/ 20 января 2020

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

При установке этого функционального модуля

val request = SplitInstallRequest.newBuilder()
    .addModule("ondemandfeature")
    .build()
splitInstallManager.startInstall(request)

Следующий журнал печатается

12:54:42.301/? I/PlayCore: UID: [11113]  PID: [30056] SplitInstallService : startInstall([ondemandfeature],[])
12:54:42.807/? I/Finsky: [2] mvr.a(112): Installer: Request install. package=com.package.my, version=16081, mods=[ondemandfeature], priority=2, reason=SplitInstallService
12:54:43.239/? I/Finsky: [2] myc.a(325): IT: Required downloads: [..split.ondemandfeature.config.xxhdpi, ..split.ondemandfeature, ..split.ondemandfeature.config.pt]
12:54:43.263/? I/Finsky: [2] mpw.a(3): Downloading full file for com.package.my (..split.ondemandfeature.config.xxhdpi)
12:54:43.282/? I/Finsky: [2] mxo.a(2): IT: Send Resource Request for com.package.my downloadid: ..split.ondemandfeature.config.xxhdpi).
12:54:43.287/? I/Finsky: [2] mxc.a(8): IT: Sent download request for com.package.my, adid: ..split.ondemandfeature.config.xxhdpi, isid: 21FGah5gQD6I6P4uDfGY32
12:54:43.379/? D/DownloadManager: [6235] Starting {ondemandfeature feature for MyAppName} by {10058:com.android.vending}
12:54:44.296/? I/Finsky: [2] myc.a(174): IT: Prepare to copy com.package.my (adid: ..split.ondemandfeature.config.xxhdpi , isid: 21FGah5gQD6I6P4uDfGY32) from content://downloads/my_downloads/6235 (expect 17096 bytes, isCompressed: false)
12:54:44.322/? I/Finsky: [87461] dxz.doInBackground(18): com.package.my (..split.ondemandfeature.config.xxhdpi) (17096 bytes) copied successfully in 0 ms
12:54:44.329/? I/Finsky: [2] mxh.a(5): IT: Successfully copied APK to update com.package.my (adid: ..split.ondemandfeature.config.xxhdpi , isid: 21FGah5gQD6I6P4uDfGY32)
12:54:44.342/? I/Finsky: [2] mpw.a(3): Downloading full file for com.package.my (..split.ondemandfeature)
12:54:44.346/? I/Finsky: [2] mxo.a(2): IT: Send Resource Request for com.package.my downloadid: ..split.ondemandfeature).
12:54:44.350/? I/Finsky: [2] mxc.a(8): IT: Sent download request for com.package.my, adid: ..split.ondemandfeature, isid: 21FGah5gQD6I6P4uDfGY32
12:54:44.382/? D/DownloadManager: [6236] Starting {ondemandfeature feature for MyAppName} by {10058:com.android.vending}
12:54:44.920/? I/Finsky: [2] myc.a(174): IT: Prepare to copy com.package.my (adid: ..split.ondemandfeature , isid: 21FGah5gQD6I6P4uDfGY32) from content://downloads/my_downloads/6236 (expect 168472 bytes, isCompressed: false)
12:54:44.934/? I/Finsky: [87462] dxz.doInBackground(18): com.package.my (..split.ondemandfeature) (168472 bytes) copied successfully in 2 ms
12:54:44.938/? I/Finsky: [2] mxh.a(5): IT: Successfully copied APK to update com.package.my (adid: ..split.ondemandfeature , isid: 21FGah5gQD6I6P4uDfGY32)
12:54:44.949/? I/Finsky: [2] mpw.a(3): Downloading full file for com.package.my (..split.ondemandfeature.config.pt)
12:54:44.953/? I/Finsky: [2] mxo.a(2): IT: Send Resource Request for com.package.my downloadid: ..split.ondemandfeature.config.pt).
12:54:44.957/? I/Finsky: [2] mxc.a(8): IT: Sent download request for com.package.my, adid: ..split.ondemandfeature.config.pt, isid: 21FGah5gQD6I6P4uDfGY32
12:54:44.996/? D/DownloadManager: [6237] Starting {ondemandfeature feature for MyAppName} by {10058:com.android.vending}
12:54:45.425/? I/Finsky: [2] myc.a(174): IT: Prepare to copy com.package.my (adid: ..split.ondemandfeature.config.pt , isid: 21FGah5gQD6I6P4uDfGY32) from content://downloads/my_downloads/6237 (expect 12626 bytes, isCompressed: false)
12:54:45.439/? I/Finsky: [87461] dxz.doInBackground(18): com.package.my (..split.ondemandfeature.config.pt) (12626 bytes) copied successfully in 3 ms
12:54:45.450/? I/Finsky: [2] mxh.a(5): IT: Successfully copied APK to update com.package.my (adid: ..split.ondemandfeature.config.pt , isid: 21FGah5gQD6I6P4uDfGY32)

Что заставляет меня поверить, что функциональный модуль Dynami c успешно установлен. Но когда я пытаюсь проверить установленные модули:

splitInstallManager.installedModules

Возвращает пустой список.

Что-то мне не хватает?


Дополнительная информация:

Вот журнал SplitInstallStateUpdatedListener:

// begin
PENDING (printed 4x)
DOWNLOADING (printed 14x)
INSTALLING (printed 1x)
DOWNLOADED (printed 1x)
// end

Я также понял, что сразу после журнала INSTALLING печатается следующий файл:

I/Finsky: [2] dyv.<init>(17): com.package.my is installed but certificate mismatch

Что это значит?


Дополнительная информация 2:

На устройстве Pixel 3XL (Android 10) успешно загружен функциональный модуль динамического c по требованию и установлен.

Но на устройстве Motorola G5 (Android 8.1) специальный динамический модуль c по требованию загружается, но не устанавливается.


Дополнительно info 3:

По какой-то причине загрузка и установка работают только на Android 10 устройствах, но я не знаю почему.


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

1 Ответ

2 голосов
/ 27 января 2020

Я обнаружил, что проходил через эти проблемы из-за неправильной конфигурации в моем проекте.

Пожалуйста, убедитесь, что в вашем проекте правильно настроены следующие компоненты:

  • используйте SplitCompatApplication как класс Application;
  • вызов SplitCompat.installActivity(this) на Activities, использующий функцию Dynami c;
override fun attachBaseContext(newBase: Context?) {
    super.attachBaseContext(newBase)

    SplitCompat.installActivity(this)
}

Для получения дополнительной информации, пожалуйста, внимательно прочитайте следующую кодовую метку: https://codelabs.developers.google.com/codelabs/on-demand-dynamic-delivery/

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