【问题标题】:Getting this error "Modules 'base' and 'moduleA' contain entry 'res/drawable/xyz.xml' with different content."收到此错误“模块'base'和'moduleA'包含具有不同内容的条目'res/drawable/xyz.xml'。”
【发布时间】:2020-08-25 09:43:01
【问题描述】:

moduleA 是一个具有依赖关系的动态功能模块,它是一个 aar 库。

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation project(':app')
    implementation(name:'lib', ext:'aar')
}

它构建成功并安装在模拟器上,但是每当我想创建一个应用程序包时,我都会收到以下错误:

Modules 'base' and 'moduleA' contain entry 'res/drawable/xyz.xml' with different content.

如果我应该在 app 模块中重命名 xyz.xml,我会得到错误:

../moduleA/build/intermediates/metadata_feature_manifest/fullDebug/processFullDebugManifest/metadata-feature/AndroidManifest.xml:61:13-63:50: AAPT: error: resource drawable/xyz (aka my.app.main.drawable/xyz) not found.

这是Plaid's modularization article 中强调的问题之一。

为了解决这个问题,我不得不在 app 模块中创建一个空的 xyz.xml,但是在创建 app-bundle 时,我得到了错误:

Modules 'base' and 'moduleA' contain entry 'res/drawable/xyz.xml' with different content.

问题是什么,如何解决?

【问题讨论】:

  • 你能解决这个问题吗?我有一个确切的问题。我想将 AAR 作为模块中的依赖项,但遇到了这个问题。

标签: android android-app-bundle dynamic-feature-module dynamic-delivery


【解决方案1】:

basemoduleA 两个模块似乎都依赖于同一个 AAR。

相反,仅将 AAR 作为模块 base 的依赖项。 moduleA 应该能够通过模块base 的传递依赖找到资源。

【讨论】:

  • 感谢您的建议,但如果我只将它包含在基础中,它不会成为基础 apk 的一部分吗?目标是仅在 moduleA 中使用 aar 库。从而减少初始apk文件大小。
  • 我明白了。你能找出 res/drawable/xyz.xml 在你的基本模块中来自什么依赖吗?似乎直接或间接地,您要么依赖于相同的 AAR,要么依赖于提取同名资源的库。
【解决方案2】:

当您删除 base/.../xyz.xml 后,您将无法从您的基本模块(应用程序)访问它。
如果您将 base/.../xyz.xml 重命名为 base/.../zzz.xml,您还必须更改对它的引用。

如果您在基本模块中不访问 base/.../xyz.xml,您可以删除该文件。然后你必须确保你所有的导入不是指向base.R.drawable.xyz,而是指向feature.R.drawable.xyz

如果两个文件实际上可能相同,请删除 feature/.../xyz.xml 并确保仅导入 base.R.drawable.xyz

如果两个文件必须不同,请重命名其中一个并确保导入正确。

【讨论】:

  • 如果两个第三方库使用相同的资源名称会怎样?在我的例子中,基础模块中的库 A(基础模块引用和需要)和动态功能模块中的 AAR 库具有同名的资源。显然,重命名不是一种选择,因为它们是库。将 AAR 移动到基本模块也是不可能的,因为它的大小是我们将它放在单独的按需模块中的主要原因。有问题的资源是一些动画:Modules 'base' and 'dynamicfeature' contain entry 'res/anim/shake.xml' with different content.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 2019-08-20
  • 1970-01-01
相关资源
最近更新 更多