Android Studio无法使用DexIndexOverflowException构建APK

时间:2018-05-07 08:57:01

标签: android

当我在手机或模拟器中运行我的项目时,它运行正常。但是,当我尝试构建APK时,会引发错误。

  

错误:任务执行失败   ':应用程序:transformClassesWithDexForDebug'。 >   com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:   java.util.concurrent.ExecutionException:   com.android.dex.DexIndexOverflowException:方法ID不在[0,   0xffff]:65536

这是我的build.gradle

apply plugin: 'com.android.application'

android {
    useLibrary 'org.apache.http.legacy'
    compileSdkVersion 27
    buildToolsVersion "27.0.3"

    defaultConfig {
        applicationId "com.atm_locator.cbe.cbeatmlocator"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets { debug { res.srcDirs = ['src/debug/res', 'src/debug/res/html'] } }
}

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'
    })

    compile 'com.android.volley:volley:1.0.0'
    compile 'com.mcxiaoke.volley:library-aar:1.0.0'
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support:support-v4:25.3.1'
    compile 'com.android.support:design:25.3.1'
    compile 'com.h6ah4i.android.widget.verticalseekbar:verticalseekbar:0.7.2'
    compile 'com.firebase:geofire-android:2.1.2'
    compile 'com.google.firebase:firebase-database:11.0.4'
    compile 'com.google.android.gms:play-services:11.0.4'
    compile 'com.google.android.gms:play-services-vision:11.0.4'
    compile 'com.google.android.gms:play-services-location:11.0.4'
    compile 'com.google.android.gms:play-services-maps:11.0.4'
    compile 'com.android.support:recyclerview-v7:25.3.1'
    compile 'com.android.support:cardview-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'ai.api:libai:1.6.12'
    compile 'ai.api:sdk:2.0.7@aar'
    compile 'com.google.code.gson:gson:2.3'
    compile 'commons-io:commons-io:2.4'
    testCompile 'junit:junit:4.12'
    compile files('libs/httpclient-4.5.jar')
}
apply plugin: 'com.google.gms.google-services' 

2 个答案:

答案 0 :(得分:0)

错误告诉您的是,您已达到Android中的方法计数限制。这可以通过两种方式解决:您要么开始删除依赖项,要么启用多索引。后者可以通过以下方式启用:

android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.android.support:multidex:1.0.1'
}

在Android API级别> = 21,您不需要编译依赖项,因为ART本身支持此功能。

您可以在https://developer.android.com/studio/build/multidex

上阅读有关此内容的所有信息

答案 1 :(得分:0)

要发布,我建议启用proGuard优化您的应用并自动删除不需要的代码。对于调试版本,为了简化调试,如上所述,您可以启用multidex。

对于proguard,阅读文档:https://developer.android.com/studio/build/shrink-code - 配置可能不是直截了当的