Android App Bundle автоматически загружает классы из загруженных APK-файлов?

Я пробую Android App Bundle и модуль динамических функций. Динамический модуль будет встроен в отдельный APK от базового модуля.

Интересно, как мне использовать исходный код и классы из динамического модуля в базовом модуле? Будут ли классы автоматически загружаться библиотекой play.core после загрузки дополнительных APK из магазина воспроизведения? Нужно ли мне самому обрабатывать загрузку класса?

2
0
267
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете взглянуть на пример динамических функций на GitHub.

В примере используется BaseSplitActivity, который заменяет onAttachBaseContext следующим образом:

override fun attachBaseContext(newBase: Context?) {
    super.attachBaseContext(newBase)
    SplitCompat.install(this)
}

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

В случае с активами вам нужно будет создать новый контекст пакета нравится

private fun displayAssets() {
    // Get the asset manager with a refreshed context, to access content of newly installed apk.
    val assetManager = createPackageContext(packageName, 0).assets
    // Now treat it like any other asset file.
    val assets = assetManager.open("assets.txt")
    // ...
}

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

littledog 07.09.2018 12:39

Вам нужно будет использовать отражение для доступа к представлениям. PlayCore считает себя обслуживающим / удаляющим модули, а не доступом к коду в модулях.

keyboardsurfer 07.09.2018 13:19

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