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

时间:2015-09-29 05:07:45

标签: android android-studio andengine android-multidex

我的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'

仍在循环......

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

希望得到帮助。!

感谢。

3 个答案:

答案 0 :(得分:4)

你应该添加

  multiDexEnabled true
build.gradle

中的

defaultConfig {

    applicationId 'pkg'
    minSdkVersion 
    targetSdkVersion 
    versionCode 
    versionName 

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

答案 1 :(得分:3)

这意味着您的应用超过Android应用程序的65k方法计数限制。 看来你正在使用庞大的谷歌播放服务。

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

正如this document所说

您可以仅使用上面相同链接中显示的播放服务来减少此问题。 例如,如果您的应用只需要gcm,您可以使用其子集,如:

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

答案 2 :(得分:1)

当您的整个项目有更多64000方法时,会出现此问题。 所以你必须向应用程序build.gradle文件

添加依赖项
compile 'com.android.support:multidex:1.0.0'

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

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

如果您的应用使用扩展,则应用类添加此代码

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

然后下一步是在build.gradle

添加对defaultConfig的multidex支持
defaultConfig {
    ...
    minSdkVersion 16
    targetSdkVersion 21
    ...
    // Enabling multidex support.
    multiDexEnabled true
}

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