首页 > 解决方案 > 动态特征。错误:处理清单失败

问题描述

我有一个基本模块,我想创建一个包含一些库的功能。其中一个库位于基本模块中,当我将其移至功能并从基本模块中删除时,出现错误:

APT:错误:找不到资源样式/SDKTheme.Translucent(又名 io.app.dev.debug:style/SDKTheme.Translucent)。

如果基本模块和功能模块具有这种依赖关系,它就可以工作,但在这种情况下,我失去了分离的好处。

我发现了一个已知问题:

在动态功能模块的清单中,您不应引用基本模块中不存在的资源。这是因为,当 Google Play 生成您应用的基础 APK 时,它会将所有模块的清单合并到基础 APK 的清单中。因此,如果基础 APK 的清单引用基础 APK 中不存在的资源,资源链接就会中断。

这是我的问题吗?

标签: androidmodulekotlin

解决方案


是的,这正是你的问题。

解决方案是:

  1. 在功能模块中实际实现您的样式,但在基本模块中创建一个空的样式声明。空声明的外观示例如下:

<style name="SDKTheme.Translucent" />

发生的情况是清单合并在合并期间采用了这种样式,即使样式的实际实现是通过特性模块的样式引入的。

  1. 将样式声明保留在基本模块中。虽然,这仅在引用的所有资源都在基本模块中时才有效。

有关更多信息,请阅读 Ben Weiss 的这篇博文 - https://medium.com/androiddevelopers/a-patchwork-plaid-monolith-to-modularized-app-60235d9f212e


推荐阅读