我正在尝试Android App Bundle和动态功能模块。动态模块将构建到基本模块的单独APK中。
我想知道如何使用基本模块中动态模块的源代码和类?从Play商店下载其他APK后,play.core库会自动加载这些类吗?我是否需要自己处理类加载?
你可以看看dynamic features sample on GitHub。
该示例使用BaseSplitActivity
覆盖onAttachBaseContext
,如下所示:
override fun attachBaseContext(newBase: Context?) {
super.attachBaseContext(newBase)
SplitCompat.install(this)
}
这可确保在活动启动时正确安装新下载的拆分。
如果是资产,您将不得不创建一个新的包上下文like 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")
// ...
}