尝试在我的Android项目中包含EasyMock时,运行测试时出现以下错误。这是两次试图打包同一个罐子。
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
?我怎么能阻止它这样做?
NB - Android环境:
Android-Studio
版本0.4.0
Android Gradle Plugin
版本0.7.1
Gradle
版本1.9
答案 0 :(得分:0)
作为一种解决方法,我做了以下操作,这使我的测试构建
手动添加:
到test_libs
dir,
并将以下内容添加到build.gradle:
dependencies {
...
instrumentTestCompile fileTree(dir: 'test_libs', include: '*.jar')
...
}
一切都很好,测试运行:
我还必须执行以下操作:dexmaker-issue2来修复no dex缓存问题。