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