【问题标题】:Exclude duplicate entry on two aar Android排除两个 aar Android 上的重复条目
【发布时间】:2016-12-01 03:50:22
【问题描述】:

我在我的 Android 项目中使用了 2 个第三方 aar 依赖项,并且

他们都使用同一个编码库,名为org.spongycastle.util

但是这里的问题是当我编译它时它在 Gradle 上显示一个错误

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException:java.util.zip.ZipException: duplicate entry: org/spongycastle/util/encoders/Base64.class

我试图通过

从 Gradle 上的 aar 中排除一个依赖项
compile(name: 'libraryname', ext: 'aar') {
    exclude group: 'org.spongycastle.util'
}

但没有解决问题的运气:(

任何帮助都可以排除或忽略一个依赖项

【问题讨论】:

  • 嗨,你最终解决了这个问题吗?我遇到了同样的错误。
  • 嗨,伙计,我通过更改 SpongyCastle 的类名解决了这个问题,因为我无法在 aar 上设置为 exclude org.spongycastle。这是不推荐的方式,但它有效。
  • 很酷,但是您能解释一下更改类名的确切含义吗?我的意思是,我的项目中只有两个 aar,并且都在引擎盖下有 Spongycastle 罐子并在内部使用它们,我不需要明确使用 Spongycastle 中的任何东西。
  • 对于我的情况,我克隆了aar的源代码并更改了类名,再次构建发布aar。

标签: android gradle gradlew


【解决方案1】:

看起来 jar 文件 org.spongycastle.util 本身包含重复条目。我在 xmlbean jar 文件中看到了同样的问题。然而,Android 不喜欢重复的条目。解决此问题的一种方法是下载该特定 jar 文件并删除其中一个重复条目并将修改后的 jar 添加到您的 libs 文件夹中。此外,您需要将其从与之关联的适当编译依赖项中排除。您需要进行测试以确保删除其中一个重复项不会破坏任何内容。如果两个重复类的内容是等价的,那么删除其中一个重复类不会有任何后果。

【讨论】:

    猜你喜欢
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 2021-01-22
    相关资源
    最近更新 更多