Android:build.gradle中的重复条目

问题描述:

我试图用Android Studio运行我的Android应用程序,并且显示错误消息,并显示以下消息。Android:build.gradle中的重复条目

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'. 
> com.android.build.transform.api.TransformException: java.util.zip.ZipException: duplicate entry: com/mikepenz/iconics/core/BuildConfig.class 

它似乎有一个重复的库,所以这就是为什么它停止运行。但我真的不知道我应该修复build.gradle文件。所以我把我的build.gradle文件放在这里,有人请帮助我。

apply plugin: 'com.android.application' 
apply plugin: 'com.google.gms.google-services' 

//wrap with try and catch so the build is working even if the signing stuff is missing 
try { 
    apply from: '../../../signing.gradle' 
} catch (ex) { 
} 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

    defaultConfig { 
     applicationId "com.marshall.opensurvey" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
     multiDexEnabled true 

     applicationVariants.all { variant -> 
      variant.outputs.each { output -> 
       def file = output.outputFile 
       def fileName = file.name.replace(".apk", "-v" + versionName + "-c" + versionCode + ".apk") 
       output.outputFile = new File(file.parentFile, fileName) 
      } 
     } 
    } 
    buildTypes { 
     debug { 
      applicationIdSuffix ".debug" 
      versionNameSuffix "-DEBUG" 
      try { 
       signingConfig signingConfigs.debug 
      } catch (ex) { 
      } 
      minifyEnabled false 
     } 
     release { 
      try { 
       signingConfig signingConfigs.release 
       minifyEnabled false 
       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      } catch (ex) { 
      } 
      zipAlignEnabled true 
      minifyEnabled false 
     } 
    } 
    lintOptions { 
     abortOnError false 
    } 
} 

repositories() { 
    mavenCentral() 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:23.1.0' 
    compile 'com.android.support:support-v13:23.1.0' 
    compile 'com.squareup.okhttp:okhttp:2.0.0' 
    compile 'com.android.support:support-v4:23.1.0' 
    compile 'com.android.support:design:23.1.0' 
    compile 'com.squareup.picasso:picasso:2.3.2' 

    // Google Analytics Library 
    compile 'com.google.android.gms:play-services-analytics:8.1.0' 
    compile 'com.google.android.gms:play-services:8.1.0' 

    // Glide Library 
    compile 'com.github.bumptech.glide:glide:3.6.1' 

    // Material Drawer Library by Mike Penz 
    compile('com.mikepenz:materialdrawer:[email protected]') { 
     transitive = true 
    } 

    // Android Iconics Library by Mike Penz 
    compile 'com.mikepenz:iconics-core:[email protected]' 
    compile 'com.mikepenz:google-material-typeface:[email protected]' 

    // Circle image view library 
    compile 'de.hdodenhof:circleimageview:2.0.0' 

    // AboutLibraries by Mike Penz 
    compile('com.mikepenz:aboutlibraries:[email protected]') { 
     transitive = true 
    } 
} 

您的依赖关系是相互冲突的。

duplicate entry: com/mikepenz/iconics/core/BuildConfig.class

这意味着你的两个依赖含有该类

// Android Iconics Library by Mike Penz 
compile 'com.mikepenz:iconics-core:[email protected]' 
compile 'com.mikepenz:google-material-typeface:[email protected]' 

// AboutLibraries by Mike Penz 
compile('com.mikepenz:aboutlibraries:[email protected]') { 
    transitive = true // <- Why? 
} 

我的猜测是要么transitive不应该被指定或com.mikepenz库的一个实际上包含其他库之一。例如,如果iconics-core包含在aboutlibraries,那么你应该通过

compile('com.mikepenz:aboutlibraries:[email protected]') { 
    exclude module: 'com.mikepenz', name: 'iconics-core' 
} 

一个简单的方法排除经由gradle dependencies运行gradle这个任务dependencies追查依赖性问题。这显示了一个很好的库依赖于其他库的图表

+0

在自述文件中陈述了传递,并将解析给定库的所有子依赖关系(在aboutlibraries中为recyclerview,cardview,appcompat)android-iconics为no关于图书馆的依赖性。 – mikepenz