无法构建APK - DexException

时间:2017-03-20 11:01:44

标签: android android-gradle apk

当我通过"运行(应用)"来构建我的项目时内置功能 - 一切都很好,我可以通过手机测试我的应用程序,但我想通过gradle创建独立应用程序。

我使用 gradle:client:clean:client:assemble 任务,这是我的输出:

Dex: Error converting bytecode to dex:sesWithDexForDebug
Cause: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
    UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;

通过this link我搜索了我的模块之间的某些依赖关系。我查了一下,appcompat-v7和设计库都有support-v4库内置,所以我把它从设计库中删除了。

我的 build.gradle 文件:

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

    //Support Design
    compile ('com.android.support:appcompat-v7:23.4.0')
    compile ('com.android.support:design:23.4.0') {
        exclude module: 'support-v4'
    }
    //Butter Knife
    compile 'com.jakewharton:butterknife:8.5.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
    //Retrofit
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
    //JSON Utils
    compile 'com.google.code.gson:gson:2.5'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    //Dagger 2
    compile 'com.google.dagger:dagger:2.9'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.9'
    provided 'javax.annotation:jsr250-api:1.0'
    //Android Plot
    compile 'com.github.PhilJay:MPAndroidChart:v3.0.1'
    //Apache Commons
    compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.0'
    //RxJava
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'io.reactivex.rxjava2:rxjava:2.0.1'
    //Tests
    testCompile 'junit:junit:4.12'
}

我该如何解决?

此致

修改

我添加了 multiDexEnabled true ,它给了我另一个错误:

Error:Execution failed for task ':client:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v4/hardware/display/DisplayManagerCompat$JellybeanMr1Impl.class

2 个答案:

答案 0 :(得分:0)

当您的应用拥有超过64k的方法时,您必须启用Multidex。通常,当使用大量库时会发生这种情况。

要解决此问题,请在build.gradle中启用Multidex

android {
    defaultConfig {
        ...
        minSdkVersion 21
        targetSdkVersion 25
        multiDexEnabled true
    }
    ...
}

Read more about Multidex here.

答案 1 :(得分:0)

只需更改此属性

即可

multiDexEnabled falsemultiDexEnabled true