Android Studio:将字节码转换为dex出错

问题描述:

当我尝试在手机上安装应用程序时出现错误。我试图清理该项目,然后再做,但不起作用。当我只重建项目时,它正在工作。这是错误我得到:Android Studio:将字节码转换为dex出错

Information:Gradle tasks [:app:assembleDebug] 
Error:Error converting bytecode to dex: 
Cause: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/auth/api/signin/zzc; 
Error:com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/auth/api/signin/zzc; 
Error: at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661) 
Error: at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616) 
Error: at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598) 
Error: at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) 
Error: at com.android.dx.merge.DexMerger.merge(DexMerger.java:198) 
Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61) 
Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36) 
Error: at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424) 
Error: at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) 
Error: at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) 
Error: at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) 
Error: at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) 
Error:Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'. 
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/auth/api/signin/zzc; 
Information:BUILD FAILED in 10s 
Information:15 errors 
Information:0 warnings 
Information:See complete output in console 

,这是我的build.gradle(模块:应用程序)文件:

apply plugin: 'com.android.application' 
apply plugin: 'io.fabric' 

repositories { 
    maven { url 'https://maven.fabric.io/public' } 
} 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.3" 
    defaultConfig { 
     applicationId "my.application.path" 
     minSdkVersion 21 
     targetSdkVersion 25 
     versionCode 2 
     versionName "2.6.1" 
     multiDexEnabled true 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    lintOptions { checkReleaseBuilds false } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    implementation fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.0', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    //noinspection GradleCompatible 
    compile 'com.android.support:appcompat-v7:25.4.0' 
    compile 'com.android.support:design:25.4.0' 
    compile 'com.android.support:recyclerview-v7:25.4.0' 
    compile 'com.sloydev:collapsingavatartoolbar:1.0.0' 
    compile 'com.android.support:cardview-v7:25.4.0' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    compile 'com.github.bumptech.glide:glide:3.5.2' 
    annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1' 
    compile 'com.google.firebase:firebase-database:11.0.2' 
    compile 'com.google.firebase:firebase-storage:11.0.2' 
    compile 'com.google.firebase:firebase-crash:11.0.2' 
    compile 'com.google.firebase:firebase-messaging:11.0.2' 
    compile 'com.google.firebase:firebase-core:11.0.2' 
    compile 'com.google.firebase:firebase-auth:11.0.2' 
    compile "com.google.android.gms:play-services-places:11.0.2" 
    compile "me.leolin:ShortcutBadger:[email protected]" 
    compile 'com.firebaseui:firebase-ui:1.1.1' 
    compile 'com.theartofdev.edmodo:android-image-cropper:2.4.+' 
    testCompile 'junit:junit:4.12' 
    implementation 'com.android.support.constraint:constraint-layout:1.0.2' 
    compile 'com.github.karanchuri:PermissionManager:0.1.0' 
    compile 'com.squareup.okhttp:okhttp:2.5.0' 
    compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
     transitive = true; 
    } 
} 
apply plugin: 'com.google.gms.google-services' 

,这是我的build.gradle(项目:项目名称)

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 

    repositories { 
     google() 
     jcenter() 
     maven {url 'https://maven.fabric.io/public'} 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:3.0.0-beta2' 
     classpath 'com.google.gms:google-services:3.1.0' 
     classpath 'io.fabric.tools:gradle:1.24.2' 
     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     google() 
     jcenter() 
     mavenCentral() 
     maven { url "https://jitpack.io" } 
     maven { url "https://maven.google.com" } 
     maven { url 'https://maven.fabric.io/public' } 
    } 
} 

task clean(type: Delete) { 
    delete rootProject.buildDir 
} 

当我必须更新谷歌播放服务时,它开始发生。但我不知道我应该改变什么。

检查指向同一个jar的重复库,类似于这个SO post中发生的情况。

您还可以从this post阅读:

你的问题,我认为是,无论你是联系图书馆 您的主项目,你有两个用于 您的支持库和注解之间的相同依赖关系。

如果您将库项目作为应用程序的依赖关系 您只需要将依赖关系置于库 依赖项关闭中。

问题是您有两个dex文件,因为有两个文件 具有相同的名称,因为文件与 依赖项重叠。

在我的情况下,Java和Kotlin中有两个类似的文件(例如“SomeView.java”和“SomeView.kt”)。