"重复条目:util / GenericData $ EntrySet.class"尝试运行我的应用时遇到错误

时间:2017-03-10 09:25:25

标签: java android

我已经尝试清理我的项目,清理gradle文件,重建我的项目,但是当我尝试运行我的应用程序时,我收到此错误:

  

TransformException:java.util.zip.ZipException:重复条目:   UTIL / GenericData $ EntrySet.class

我该如何解决?

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "25.0.0"

    defaultConfig {
        applicationId "com.example.name.app"
        multiDexEnabled true
        minSdkVersion 10
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

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

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.google.android.gms:play-services:10.0.1'
    compile 'com.android.support:design:23.4.0'
    compile 'junit:junit:4.12'
    compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
    compile 'com.google.code.gson:gson:1.7.2'
    compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
    compile 'com.squareup.okhttp:okhttp:2.4.0'
    compile 'org.apache.httpcomponents:httpcore:4.4.1'
    compile 'org.apache.httpcomponents:httpclient:4.5'
    compile 'com.android.support:multidex:1.0.0'}


android {useLibrary 'org.apache.http.legacy'}

1 个答案:

答案 0 :(得分:0)

tl; dr 您的错误意味着您的依赖项中存在重叠。

你可以削减其中大部分。

apply plugin: 'com.android.application'

android {
    // ... this can stay the same
}

ext {
    supportLibraryVersion = "23.4.0"
    googlePlayServicesVersion = "10.2.0"
    retrofitVersion = "2.2.0"
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile "com.android.support:design:$supportLibraryVersion"
    testCompile 'junit:junit:4.12'

    // compile "com.google.android.gms:play-services-<SERVICE HERE>:$googlePlayServicesVersion"

    compile "com.squareup.retrofit2:retrofit:$retrofitVersion"
    compile "com.squareup.retrofit:converter-gson:$retrofitVersion"
    compile 'com.google.code.gson:gson:2.8.0'

    compile 'com.android.support:multidex:1.0.1'
}

<强>解释

我怀疑你需要这些。您还复制了JUnit,它不需要在测试环境之外编译

compile 'org.apache.httpcomponents:httpcore:4.4.1'
compile 'org.apache.httpcomponents:httpclient:4.5'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'junit:junit:4.12'

useLibrary 'org.apache.http.legacy'

你已经有了Retrofit来处理HTTP请求(顺便说一句,它已经过了测试版,所以用Gson更新它)。

compile 'com.squareup.retrofit2:retrofit:2.2.0'
compile 'com.google.code.gson:gson:2.8.0'

它包含OkHttp,因此您也删除了它。

然后,您不太可能在单个应用中使用每个Google服务。

compile 'com.google.android.gms:play-services:10.0.1'

选择您实际使用的

Google Play Services | Selectively choose your dependencies

例如,想要地图,然后使用compile '... services-maps:<VERSION NUMBER>'

你也可以删除这个,因为design已经包含了......

compile 'com.android.support:appcompat-v7:23.4.0'