【问题标题】:Gradle and Android Studio Duplicate File Copied from same jar从同一个 jar 复制的 Gradle 和 Android Studio 重复文件
【发布时间】:2014-01-18 03:19:47
【问题描述】:

尝试在我的 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 Plugin 0.7.1版

  • Gradle 1.9 版

【问题讨论】:

标签: java android dependencies gradle android-studio


【解决方案1】:

作为一种解决方法,我做了以下工作,这让我的测试得以构建

手动添加:

  • 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 缓存问题。

【讨论】:

  • 我认为instrumentTestCompile可能已经重命名为androidTestCompile
猜你喜欢
  • 2016-04-26
  • 1970-01-01
  • 2017-02-24
  • 1970-01-01
  • 2014-01-07
  • 2016-09-24
  • 2018-11-06
  • 2023-03-08
  • 1970-01-01
相关资源
最近更新 更多