android - 动态特征。错误:处理清单失败
问题描述
我有一个基本模块,我想创建一个包含一些库的功能。其中一个库位于基本模块中,当我将其移至功能并从基本模块中删除时,出现错误:
APT:错误:找不到资源样式/SDKTheme.Translucent(又名 io.app.dev.debug:style/SDKTheme.Translucent)。
如果基本模块和功能模块具有这种依赖关系,它就可以工作,但在这种情况下,我失去了分离的好处。
我发现了一个已知问题:
在动态功能模块的清单中,您不应引用基本模块中不存在的资源。这是因为,当 Google Play 生成您应用的基础 APK 时,它会将所有模块的清单合并到基础 APK 的清单中。因此,如果基础 APK 的清单引用基础 APK 中不存在的资源,资源链接就会中断。
这是我的问题吗?
解决方案
是的,这正是你的问题。
解决方案是:
- 在功能模块中实际实现您的样式,但在基本模块中创建一个空的样式声明。空声明的外观示例如下:
<style name="SDKTheme.Translucent" />
发生的情况是清单合并在合并期间采用了这种样式,即使样式的实际实现是通过特性模块的样式引入的。
- 将样式声明保留在基本模块中。虽然,这仅在引用的所有资源都在基本模块中时才有效。
有关更多信息,请阅读 Ben Weiss 的这篇博文 - https://medium.com/androiddevelopers/a-patchwork-plaid-monolith-to-modularized-app-60235d9f212e