我试图将新的Android动态交付功能添加到我的应用程序中,但我访问动态功能模块资源的尝试一直失败。
基本思想是加载一个没有代码的模块,而是加载一堆矢量文件作为可绘制资源。
我能够加载模块,甚至访问给定模块的资产,但我不知道如何访问资源。
val res = context.createPackageContext(context.packageName, 0).also {
SplitCompat.install(it)
}.resources
val assetsStream = res.assets.open("test.txt")
val assetContent = assetsStream.bufferedReader()
.use {
it.readText()
}
var iconResourceId = res.getIdentifier(stringIdentifier, IDENTIFIER_DRAWABLE, context.packageName)
正如我所说的,我能够阅读assets txt文件中的文本,但我似乎没有在资源中找到任何drawables。
当我试图获取我知道在动态模块的resources文件夹中的drawables时,我得到了一个ResourcesNotFoundException
。
我已经通读了谷歌提供的Android文档,但我无法找到有关如何访问下载的模块资源的详细信息
https://developer.android.com/guide/app-bundle/playcore#access_installed_modules
1条答案
按热度按时间zpqajqem1#
我能够通过在
res.getIdentifier(..., packageName)
方法上替换特性模块包名称的packageName
来解决这个问题应用程序套件名称:
com.example.my_app_package
功能的资源包名称:
com.example.my_app_package.my_dynamic_feature
我不确定值
my_dynamic_feature
的确切来源,但完整的软件包不会是您在模块的build.gradleapplicationId
或AndroidManifestpackage
属性上定义的软件包。