奇怪的DexArchiveMergerException

时间:2017-12-03 05:23:18

标签: java android-gradle android-studio-3.0

我以前遇到过这个问题,并且能够相当容易地修复它。但是,这一次,我看不出是什么导致了它。我工作以来对build.gradle的唯一更改是implementation project(':sharedfiles') - 一个用于穿戴/移动的共享通用模块。我没有添加这个,我添加了模块作为依赖项,这行自动添加,所以我怀疑这是一个错误。我有multipleDexEnabled true,找不到任何冲突的依赖项。任何帮助将不胜感激,这是我第一次使用通用模块。这是两个build.gradle文件。

移动模块

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "bhprograms.supremis"
        minSdkVersion 23
        targetSdkVersion 26
        multiDexEnabled true
        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(include: ['*.jar'], dir: 'libs')
    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'
    wearApp project(':wear')
    implementation 'com.google.android.gms:play-services-wearable:+'
    implementation files('libs/gson.jar')
    implementation project(':sharedfiles')
}

公共模块

apply plugin: 'com.android.library'

android {
    compileSdkVersion 26



    defaultConfig {
        minSdkVersion 23
        targetSdkVersion 26
        versionCode 1
        multiDexEnabled true
        minSdkVersion 23
        targetSdkVersion 26
        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'
    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'
    implementation files('libs/gson.jar')
}

当然还有错误。

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

1 个答案:

答案 0 :(得分:1)

通过移除移动模块中的implementation files('libs/gson.jar')解决问题。不知道为什么要修复它,可能是因为我在移动模块中不再使用这个jar了。将它留在那里,因为如果实验性功能不起作用,我将来可能需要它,但这是造成这个问题的原因。