【问题标题】:Duplicate files copied in APK META-INF在 APK META-INF 中复制的重复文件
【发布时间】:2016-08-10 23:52:02
【问题描述】:

嗨,我是 android 开发的新手,我正在尝试构建我的 apk,但我遇到了这个错误。我更新了我的 gradle,我得到了重复的副本。我该如何解决这个错误?

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/maven/com.squareup.okhttp/okhttp/pom.properties
    File1: C:\Users\Toshiba\.gradle\caches\modules-2\files-2.1\com.squareup.okhttp\okhttp\2.0.0\4c8d1536dba3812cc1592090dc20c47a4ed3c35e\okhttp-2.0.0.jar
    File2: C:\Users\Toshiba\.gradle\caches\modules-2\files-2.1\com.crashlytics.android\crashlytics\1.1.13\e821eafa1bf489a26bdb71f95078c26785b37a1\crashlytics-1.1.13.jar 

这是我的 build.gradle,这是错误来的吗?

buildscript {
    repositories {
        maven { url 'http://download.crashlytics.com/maven' }
    }

    dependencies {
        classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'crashlytics'

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.mymonas.ngobrol"
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 1
        versionName "0.9.0.68"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

repositories {

    mavenCentral()
    maven { url 'http://download.crashlytics.com/maven' }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'], exclude: 'android-support-v4.jar')
    compile project('libs:floatlabel')
    compile 'com.android.support:support-v4:21.0.0'
    compile 'com.android.support:support-v13:21.0.0'
    compile 'com.squareup.retrofit:retrofit:1.7.0'
    compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
    compile 'com.squareup.okhttp:okhttp:2.0.0'
    compile 'com.github.dmytrodanylyk.android-process-button:library:1.0.1'
    compile 'com.google.android.gms:play-services:6.1.11'
    compile 'com.viewpagerindicator:library:2.4.1@aar'
    compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
    compile 'com.makeramen:roundedimageview:1.3.0'
    compile 'com.andreabaccega:android-form-edittext:1.1.0@aar'
    compile 'com.crashlytics.android:crashlytics:1.+'
}

【问题讨论】:

标签: java android gradle


【解决方案1】:

我今天在使用我们的 React Native 应用程序时遇到了相同或至少非常相似的问题。不过,问题只出在我的 Mac 上。我们能想到的唯一合理的解释是我更新了一堆 Android Studio 工具,然后 gradle 无法使用我们的依赖项正确构建。无论如何,在从 okhttp 中排除 pom.propertiespom.xml 之后,我一直收到同样的错误,但事实证明我只需要排除更多文件。这是我在 build.gradle 中的完整 packagingOptions

packagingOptions {
  exclude 'META-INF/maven/com.squareup.okhttp3/okhttp/pom.properties'
  exclude 'META-INF/maven/com.squareup.okio/okio/pom.xml'
  exclude 'META-INF/maven/com.squareup.okhttp3/okhttp/pom.xml'
  exclude 'META-INF/maven/com.squareup.okio/okio/pom.properties'
}

【讨论】:

  • 这就是答案。
  • 这太棒了
【解决方案2】:

要解决您的问题,请将其添加到您的构建 gradle

packagingOptions {
    exclude 'META-INF/pom.properties' /*OR*/ 'META-INF/maven/com.squareup.okhttp/okhttp/pom.properties
}

【讨论】:

  • 您好,感谢您的回答。我尝试了,但同样的问题我得到了一个错误
  • /*OR*/ 尝试其中一个,看看新的错误是否指向同一个文件,因为您可能最终会因为重复而排除大量文件。
  • 我尝试了同样的问题,我在上面收到了 2 个错误帖子。
【解决方案3】:

似乎 okhttp 和 crashlytics 在较新的 gradle 版本(在我的情况下为 2.10)中不能一起工作。我通过将 crashlytics 更新到较新版本(现在称为 Fabric)来解决此问题。

【讨论】:

    【解决方案4】:
    packagingOptions 
    {
       exclude 'META-INF/maven/com.squareup.okhttp/okhttp/pom.properties
       exclude 'META-INF/maven/com.squareup.okhttp/okhttp/pom.xml'
    }
    
    Please check for correct path "com.squareup.okhttp/okhttp/pom.properties" in your errorlog.
    

    【讨论】:

      猜你喜欢
      • 2016-12-27
      • 2017-11-14
      • 2017-12-08
      • 1970-01-01
      • 2014-07-06
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多