动态功能。错误:处理清单失败

Gor*_*ets 6 android module kotlin

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

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

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

我发现了一个已知问题:

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

这是我的问题吗?

小智 4

是的,这正是你的问题。

\n\n

解决方案是:

\n\n
    \n
  1. 在功能模块中实际实现样式,但在基本模块中创建样式的空声明。空声明的示例如下:
  2. \n
\n\n

<style name="SDKTheme.Translucent" />

\n\n

发生的情况是,清单合并在合并期间选择了这种样式,即使该样式的实际实现是通过功能模块\xe2\x80\x99s 样式引入的。

\n\n
    \n
  1. 将样式声明保留在基本模块中。不过,只有当引用的所有资源也都在基本模块中时,这才有效。
  2. \n
\n\n

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

\n