Я пробую Android App Bundle и модуль динамических функций. Динамический модуль будет встроен в отдельный APK от базового модуля.
Интересно, как мне использовать исходный код и классы из динамического модуля в базовом модуле? Будут ли классы автоматически загружаться библиотекой play.core после загрузки дополнительных APK из магазина воспроизведения? Нужно ли мне самому обрабатывать загрузку класса?
Вы можете взглянуть на пример динамических функций на 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")
// ...
}
Вам нужно будет использовать отражение для доступа к представлениям. PlayCore считает себя обслуживающим / удаляющим модули, а не доступом к коду в модулях.
Например, у меня есть несколько представлений в динамическом модуле. Можно ли использовать эти представления в базовом модуле? Я думаю, что могу использовать загрузчик классов для загрузки этих представлений из загруженных файлов apks, но помогает ли мне основная библиотека воспроизведения справляться с такими вещами?