gpt4 book ai didi

java - Gradle 和 Android Studio 从同一个 jar 复制的重复文件

转载 作者:行者123 更新时间:2023-11-29 08:54:46 24 4
gpt4 key购买 nike

当尝试在我的 Android 项目中包含 EasyMock 时,我在运行测试时收到以下错误。它试图将同一个 jar 打包两次。

Execution failed for task ':Example:packageDebugTest'.
> Duplicate files copied in APK META-INF/INDEX.LIST
File 1: /home/me/.gradle/caches/modules-2/files-2.1/org.easymock/easymock/3.2/c82f7fa3ef377d8954b1db25123944b5af2ba4/easymock-3.2.jar
File 2: /home/me/.gradle/caches/modules-2/files-2.1/org.easymock/easymock/3.2/c82f7fa3ef377d8954b1db25123944b5af2ba4/easymock-3.2.jar

我的 build.gradle 看起来像:

android {
...
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'META-INF/license.txt'
}
...
}

dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
instrumentTestCompile 'junit:junit:3.8.2+'
instrumentTestCompile('org.easymock:easymock:3.2'){
exclude group: 'junit', module: 'junit'
}
}

而且我认为排除 INDEX.LIST 不是一个好主意,我想即使我这样做了,我也会为 jar 中的每个文件获取副本。

为什么要尝试添加 EasyMock 两次?我怎样才能阻止它这样做?

注意 - Android 环境:

  • Android-Studio 版本 0.4.0

  • Android Gradle 插件 版本 0.7.1

  • Gradle 版本 1.9

最佳答案

作为解决方法,我执行了以下操作,以构建我的测试

手动添加:

  • cglib-nodeps-2.2.2.jar
  • dexmaker-1.0.jar
  • dexmaker-dx-1.0.jar
  • easymock-3.2.jar
  • junit-3.8.2.jar

test_libs 目录,

并将以下内容添加到 build.gradle 中:

dependencies {
...
instrumentTestCompile fileTree(dir: 'test_libs', include: '*.jar')
...
}

一切编译正常,测试运行:

我还必须执行以下操作:dexmaker-issue2修复无 dex 缓存问题。

关于java - Gradle 和 Android Studio 从同一个 jar 复制的重复文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20853094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com