2

我正在尝试 Android App Bundle 和动态功能模块。动态模块将内置在与基本模块不同的 APK 中。

我想知道如何在基础模块中使用动态模块中的源代码和类?从 Play 商店下载额外的 APK 后,play.core 库会自动加载这些类吗?我需要自己处理类加载吗?

4

1 回答 1

2

您可以查看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")
    // ...
}
于 2018-09-07T10:14:17.523 回答