【问题标题】:Dynamic feature. Error: failed processing manifest动态特征。错误:处理清单失败
【发布时间】:2019-11-26 17:15:33
【问题描述】:

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

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

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

我发现了一个已知问题:

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

这是我的问题吗?

【问题讨论】:

  • 您使用的是产品风格还是不同的构建类型?
  • 两者,我认为应该不会影响它
  • 您能否指出上述已知问题的根源?
  • @SvenJacobs developer.android.com/guide/app-bundle 页面底部

标签: android module kotlin


【解决方案1】:

是的,这正是你的问题。

解决方案是:

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

<style name="SDKTheme.Translucent" />

发生的情况是清单合并在合并过程中采用了这种样式,即使样式的实际实现是通过功能模块的样式引入的。

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

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

【讨论】:

  • 我可以确认这项工作有效。很奇怪,但有效。
猜你喜欢
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 2019-12-24
  • 2015-03-21
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多