无法合并 Dex - Android Studio 3.0

41

当我将我的 Android Studio 更新到 3.0 版本并在稳定通道上运行项目时,我开始遇到以下错误。

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

我尝试清理并重建该项目,但没有成功。欢迎提供任何帮助。

项目级别的build.gradle文件

buildscript {
repositories {
    jcenter()
    google()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0'
    classpath 'com.google.gms:google-services:3.1.0'


    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
} 
allprojects {
repositories {
    jcenter()
    google()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}

应用级别的 build.gradle

apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
    applicationId "com.med.app"
    minSdkVersion 21
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    resConfigs "auto"
    multiDexEnabled true

}
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 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'

//appcompat libraries
compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'


//butterknife
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

//picasso
compile 'com.squareup.picasso:picasso:2.5.2'

//material edittext
compile 'com.rengwuxian.materialedittext:library:2.1.4'

// Retrofit & OkHttp & and OkHttpInterceptor & gson
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.google.code.gson:gson:2.8.2'
compile 'com.squareup.okhttp3:logging-interceptor:3.8.0'

// FirebaseUI for Firebase Auth
compile 'com.firebaseui:firebase-ui-auth:3.1.0'
}
apply plugin: 'com.google.gms.google-services'

我已经尝试了所有给出的答案,但无法解决这个错误。请帮帮我。


1
@IntelliJAmiya,我也尝试了你链接的那个问题的解决方案。但是它们都没有起作用。 - user8583580
@NirajSanghani 我也尝试启用multidex,但没有帮助。 - user8583580
你可以尝试将google()存储库放在buildscript存储库中。 - Niraj Sanghani
尝试使用详细选项构建Gradle。在我的情况下,我发现问题出在/libs中的一个库上。我将其删除后,问题得到解决。 - cxphong
请问您能否将完整的 build.gradle 文件粘贴在这里。 - Bhavesh Patadiya
显示剩余14条评论
22个回答

0

对于那些最近仍在努力添加组件的人来说,我遇到的问题是添加了以下内容:

compile 'android.arch.lifecycle:extensions:1.0.0' annotationProcessor 'android.arch.lifecycle:compiler:1.0.0'

解决方法是将其更新为

compile 'android.arch.lifecycle:extensions:1.1.1' annotationProcessor 'android.arch.lifecycle:compiler:1.1.1'

希望这能帮到你。


0
将以下代码添加到您的gradle文件中:implementation 'com.android.support:multidex:1.0.0'
清理项目并重新构建,这样就可以解决问题了。

0
奇怪的情况,但是 multiDexEnabled 对我没有帮助,但是在删除 Gradle 目录并重新构建应用程序后问题得到解决。

0

我在使用Firebase UI Database时遇到了同样的错误。即使按照其他答案建议启用了multiDex,我仍然会遇到错误。然后我知道Firebase UI和Firebase Database需要与Firebase UI GitHub存储库中给出的相应版本相同。

Firebase UI GitHub


0

我按照下面截图中的提示进行了精确操作,将11.0.4更改为11.8.0

compile 'com.google.android.gms:play-services-base:11.8.0'
compile 'com.google.android.gms:play-services:11.8.0'

它运行良好

Unable to merge dex


0

在我的情况下,我必须做三件事:

  1. 在使用Firebase时,请确保Firebase和Google Play服务具有相同的版本。最初,Play服务版本较低。主要是12.0.1版本有所帮助。

  2. 在应用程序级别的build.gradle文件中设置如下:

    android {  
        multiDexEnabled true   
    }
    
  3. 再次在应用程序级别的build.gradle文件中添加以下内容:

    compileOptions{
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
    

0

看起来这个错误有许多情况。在我的情况下,是在build.gradle(应用程序)中使用了1.8 java编译:

compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

我移除了一个错误,问题解决了


0

我将下面的内容从11.6.0更改为11.8.0,然后它就可以工作了。

compile 'com.google.android.gms:play-services-ads:11.6.0'

implementation 'com.google.android.gms:play-services-ads:11.8.0'

0

通过在build.gradle(app模块)中添加以下代码对我有用

android {
      defaultConfig {
          multiDexEnabled true
      }
}

dependencies {
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    implementation 'com.android.support:support-v4:26.1.0'
}

0

我想这是因为不同的库依赖于相同的子库,但版本不同,因此需要排除一个库的依赖,如下:

api (rootProject.ext.dependencies["bindingRecyclerView"]) {
    exclude group: 'com.android.support'
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接