动态特征:访问可从动态特征模块中提取的库



我正试图从我的:wrapped模块(也是一个常规的安卓库模块(访问:library模块(一个常规安卓库模型(中的资源。

复杂的因素是,我创建了一个:dynamicFeatureWrapper模块,它导入了plugin id: 'com.android.dynamic-feature',因此用作动态特征模块,但实际上,我的动态特征的实际内容在:wrapped

:dynamicFeatureWrapper (imports the plugin id: 'com.android.dynamic-feature')
|            |
| api        |impl
v            v
:wrapped        :baseApp 
|
|api
v
:library 

我首先像安装任何动态功能模块一样安装:dynamicFeatureWrapper,然后从我的:wrapped模块中,我尝试访问:library中的可提取资源。然而,当我尝试这样访问它时,我会得到ResourceNotFound:

// in :wrapped module
LocalContext.current.applicationContext.resources.getIdentifier(
"my_icon",
"drawable",
"com.example.myapp.library"

这导致以下崩溃:

2022-04-07 14:13:41.516 2114-2114/com.example.myapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myapp, PID: 2114
java.lang.NoSuchFieldError: No static field my_icon of type I in class 
Lcom/example/myapp/library/R$drawable; or its superclasses (declaration of 
'com.example.myapp.library.R$drawable' appears in /data/user/0/com.example.myapp/files/splitcompat/6057000/verified-splits/dynamicFeatureWrapper.apk!classes4.dex)

从位于:wrapped:中的Compose代码中了解了如何访问位于:library中的资源

val context = LocalContext.current
val resources = context.resources
val packageName = context.packageName
val drawableId = resources.getIdentifier("ic_my_icon", "drawable", packageName)

最新更新