android studio中的重复输入错误

Posted

技术标签:

【中文标题】android studio中的重复输入错误【英文标题】:Duplicate Entry Error in android studio 【发布时间】:2017-10-18 08:34:23 【问题描述】:

>错误:任务 ':app:transformClassesWithJarMergingForRelease' 执行失败。

com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:com/google/android/gms/common/api/zzf.class

每当我尝试生成已签名的 apk 时都会出现此错误..

试过清理代码 试过排除包

Build.Gradle(应用程序)

apply plugin: 'com.android.application'

android 
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig 
    applicationId "com.app.app"
    minSdkVersion 16
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner 
               "android.support.test.runner.AndroidJUnitRunner"
    vectorDrawables.useSupportLibrary = true
    multiDexEnabled true

    manifestPlaceholders = [onesignal_app_id: "",
                            // Project number pulled from dashboard, local 
   value is ignored.
                            onesignal_google_project_number: ""]


buildTypes 
    release 
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    

      

    dependencies 
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', 
    exclude group: 'com.android.support', module: 'support-annotations'
)


compile 'cn.pedant.sweetalert:library:1.3'
compile 'com.onesignal:OneSignal:[3.6.2, 3.99.99]'
compile 'com.yalantis:contextmenu:1.0.7'
compile 'com.crystal:crystalrangeseekbar:1.1.1'
compile 'com.github.mzelzoghbi:zgallery:0.3'
compile 'com.rengwuxian.materialedittext:library:2.1.4'
compile 'com.yalantis:flipviewpager:1.0.0'
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support:design:26.+'
compile 'com.android.support:support-vector-drawable:26.+'
compile 'com.android.support:support-v4:26.0.0-alpha1'
compile 'com.squareup.picasso:picasso:2.3.2'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.google.zxing:core:3.2.1'
compile 'com.google.firebase:firebase-core:11.4.2'
testCompile 'junit:junit:4.12'
    



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

【问题讨论】:

【参考方案1】:

将支持库版本更改为 26.1.0,如下所示:

compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'
compile 'com.android.support:support-vector-drawable:26.1.0'
compile 'com.android.support:support-v4:26.1.0'

目前,26.+ 使用 26.1.0,而您正尝试同时使用 26.0.0-alpha1,这会导致重复。

更新:更新您的项目的主要 gradle,如下所示,添加子项目 ... 部分以强制使用相同版本的支持库。

allprojects 
    repositories 
        //maven jcenter etc.
    

    subprojects 
        project.configurations.all 
            resolutionStrategy.eachDependency  details ->
                if (details.requested.group == 'com.android.support'
                && !details.requested.name.contains('multidex') ) 
                    details.useVersion "26.1.0"
                
            
        
    

【讨论】:

@VivekRaj 如果存在任何版本冲突,您需要检查其他库依赖项。或查看我的更新答案 还是没有运气:(【参考方案2】:

编辑:只有删除此行才有效:

编译'com.android.support:support-v4:26.0.0-alpha1'

您复制了这个类,可能是因为您的两个(或更多)库添加了相同的依赖项。

您必须采取的第一步是确定哪个干扰。您可以尝试在 Gradle 中运行 dependencies 任务,看看哪些依赖项(或其子项)发生冲突。

第二步是告诉 Gradle 脚本排除该依赖项

【讨论】:

请尝试运行 Gradle 的 dependencies 任务,并在您的问题上发布输出 还是没有运气:( 运行此任务不会解决您的问题,它会在 Gradle 输出中提示您解决问题所在。当您有运行此任务的输出时,请将其发布在这里编辑您的问题,如果您无法弄清楚问题出在哪里 哦,对不起...你能告诉我该怎么做吗? run ./gradlew dependencies 它会给你项目的依赖树。你可以使用./gradlew app:dependencies 来检查你的模块【参考方案3】:

您可以添加一个任务来查找重复项

task findDuplicates 
    doLast 
        Map<String, List<File>> map = [:]
        Set<File> jars = configurations.compile.matching 
           include '**/*.jar'
        .files
        jars.each  File jarFile ->
            zipTree(jarFile).visit  FileVisitDetails fvd ->
                String path = fvd.relativePath.pathString
                List<File> matches = map[path] ?: []
                matches << jarFile
                map[path] = matches
            
        
        map.each  String path, List<File> matches ->
            if (matches.size() > 1) 
                println "Found $path in $matches"
            
        
    

然后从命令行运行gradle findDuplicates

【讨论】:

以上是关于android studio中的重复输入错误的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio中的Activity.java错误[重复]

Android studio错误:java.lang.NullPointerException [重复]

Android Studio和Firebase中的权限被拒绝错误[重复]

错误检查php Android Studio中的重复项

片段中的Android Studio RecyclerView [重复]

xmpp连接Android Studio中的NetworkOnMainThreadException [重复]