Shadow icon indicating copy to clipboard operation
Shadow copied to clipboard

插件应用使用 theme 时报错

Open Heart-Beats opened this issue 3 years ago • 3 comments

大佬,我这边的插件项目结构如下: image

我在 nygl 插件的中使用了一个主题,声明如下: image

nygl 的 build.gradle 中依赖如下: image

当使用 normal 变体时运行没有任何问题,切换为 plugin 时即找不到相关的主题了,该主题我看实际位置是在 appcompat 库下, 它是以 api 的方式被我依赖在 base-lib 中,

请问我该如何解决此问题?目前只想到在各个插件中单独依赖该库,但害怕会出其他问题。

Heart-Beats avatar Dec 09 '22 09:12 Heart-Beats

同时依赖的相关资源文件都无法找到,我在 gradle.properties 中声明 android.nonTransitiveRClass=false 没有效果

Heart-Beats avatar Dec 09 '22 10:12 Heart-Beats

文不对题吧?你很清楚你在跨插件依赖资源了。现有代码不支持这种场景。

每个插件的Resources都只包含自身的apk。实际上也包含宿主的apk,但不是为了让插件使用宿主资源,是应对系统查找宿主资源的。

跨apk复用资源,在android的设计中是可行的。

shifujun avatar Dec 09 '22 13:12 shifujun

文不对题吧?你很清楚你在跨插件依赖资源了。现有代码不支持这种场景。

每个插件的Resources都只包含自身的apk。实际上也包含宿主的apk,但不是为了让插件使用宿主资源,是应对系统查找宿主资源的。

跨apk复用资源,在android的设计中是可行的。

所以即便编译通过实际运行时也还是有问题的对吧? 我看相关的资源文件找不到是因为 compileOnly 这种依赖方式无法传递 base-lib 中的资源从而导致报错。

因此假使现在有此种场景:A 为公共资源库, B 和 C 分别都为两个插件,但是需要使用到公共资源库中的文件,即使再有个基础
插件 D 依赖了 A, B 和 C 都声明 dependsOn = ['D'],但实际运行时 B 和 C 还是无法找到相关资源对吧?对于这种情况只能各个插件单独依赖公共资源库了吧。大佬,我这样理解是对的吗?

Heart-Beats avatar Dec 10 '22 10:12 Heart-Beats