android 无法访问动态功能模块的资源

tp5buhyn  于 2022-11-20  发布在  Android
关注(0)|答案(1)|浏览(171)

我试图将新的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

zpqajqem

zpqajqem1#

我能够通过在res.getIdentifier(..., packageName)方法上替换特性模块包名称的packageName来解决这个问题
应用程序套件名称:com.example.my_app_package
功能的资源包名称:com.example.my_app_package.my_dynamic_feature
我不确定值my_dynamic_feature的确切来源,但完整的软件包不会是您在模块的build.gradle applicationId或AndroidManifest package属性上定义的软件包。

相关问题