如何解决合并dex?

时间:2017-11-14 18:16:47

标签: java android gradle

当我尝试运行我的Android应用程序时出现此错误

  

错误:任务':app:transformDexArchiveWithExternalLibsDexMergerForDebug'的执行失败。   java.lang.RuntimeException:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并dex

我试图清理项目并重建项目并尝试删除项目,但同样的错误无法解决   gradle这个

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.example.lef.planeeye"
        minSdkVersion 14
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    compile 'com.google.android.gms:play-services:11.6.0'
    compile 'com.android.volley:volley:1.0.0'
    compile 'com.google.android.gms:play-services-location:11.6.0'
    compile 'com.google.android.gms:play-services-maps:11.6.0'
    compile 'com.android.support:design:26.1.0'
    compile 'com.google.firebase:firebase-core:11.6.0'
    compile 'com.google.firebase:firebase-messaging:11.6.0'
    compile 'com.firebase:firebase-client-android:2.5.2'
    compile 'com.firebaseui:firebase-ui:0.2.0'
}

2 个答案:

答案 0 :(得分:0)

您需要启用多索引

在您的gradl.build文件中设置multiDexEnabled true 并将compile 'com.android.support:multidex:1.0.1'添加到您的依赖项 以下是我的应用

中的示例
android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        multiDexEnabled true
        applicationId ""
        minSdkVersion 14
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

答案 1 :(得分:0)

开始添加multi dex并将应用程序更改为multidexapplication之前。考虑最小化您对所需依赖项的依赖性。您正在导入整个Google Play服务。

只考虑包含你需要的那些,否则你会明确地超过65,536方法限制,这将使你编译得更慢,并且必须调整你的gradle属性以加快内存的速度。

如果您必须执行multi-dex,那么更新您的应用程序扩展MultiDexApplication以及您的gradle属性以增加内存,但希望您不必这样做。

在修补之前尝试正确解决问题;)。

但是,如果它不是多指针问题,那么可能是一个问题,即不同版本的dexing重复依赖性。可能是你的谷歌游戏服务。我会运行assembleRelease --info并获取更多信息。

在此期间,请尝试使用此确切的行强制播放lib版本

 <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"
        tools:replace="android:value" />

在应用程序标记