意外的顶级异常:com.android.dex.DexIndexOverflowException:方法 ID 不在 [0, 0xffff] 中:65536

UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

我的 Gradle 文件中有以下依赖项:

 apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        applicationId "packagename"
        minSdkVersion 10
        targetSdkVersion 23
    }

    sourceSets {
        main {
            jni.srcDirs = []
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:23.0.1'
    compile files('libs/FLurry_3.2.2.jar')
    compile files('libs/pixel-perfect-collision.jar')
    compile files('libs/twitter4j-core-3.0.3.jar')
    compile project(':zip_file')
    compile project(':andEngine')
    compile project(':andEnginePhysicsBox2DExtension')
    compile project(':downloader_library')
    compile project(':viewPagerLibrary')
    compile 'com.google.android.gms:play-services:8.1.0'
    compile 'org.apache.commons:commons-lang3:3.0'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:appcompat-v7:23.0.1'
}

在构建 gradle 文件时出现以下错误:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

为了解决这个错误,我已经添加了 multidex 依赖项:

 compile 'com.android.support:multidex:1.0.1'

还在循环​​..

已编辑:问题已经解决,所以不要尝试复制它,解决方案如下..!!

希望得到帮助!

谢谢。

你应该添加

  multiDexEnabled true

build.gradle

defaultConfig {

    applicationId 'pkg'
    minSdkVersion 
    targetSdkVersion 
    versionCode 
    versionName 

    // Enable MultiDexing:  https://developer.android.com/tools/building/multidex.html
    multiDexEnabled true
}

这意味着您的应用超过了 android 应用的 65k 方法计数限制。 看来您正在使用 google 庞大的播放服务。

compile 'com.google.android.gms:play-services:8.1.0'

this document所说

您可以通过仅使用上面相同 link 中显示的您需要的播放服务来减少这种情况。 例如,如果您的应用只需要 gcm,您可以使用它的子集,例如:

com.google.android.gms:play-services-gcm:8.1.0

等等

当您的整个项目有超过 64000 个方法时,就会出现此问题。 所以你必须添加对应用程序 build.gradle 文件

的依赖
compile 'com.android.support:multidex:1.0.0'

然后将此标签添加到AndrodManifest.xml到应用程序项

 <application
    ...
    android:name="android.support.multidex.MultiDexApplication">

如果您的应用使用扩展应用程序 class 添加此代码

@Override
public void attachBaseContext(Context base) {
    MultiDex.install(base);
    super.attachBaseContext(base);
}

然后下一步是在 build.gradle

处将 multidex 支持添加到 defaultConfig
defaultConfig {
    ...
    minSdkVersion 16
    targetSdkVersion 21
    ...
    // Enabling multidex support.
    multiDexEnabled true
}

... 见 http://phpidiots.in/android/unexpected-top-level-exception/