我以前见过不同版本的dex错误,但这一个是新的。清洁/重新启动等不会有帮助。库项目似乎完好无损,依赖项似乎正确链接。

Unable to execute dex: method ID not in [0, 0xffff]: 65536
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536

or

Cannot merge new index 65950 into a non-jumbo instruction

or

java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

tl;dr:谷歌的官方解决方案终于来了!

http://developer.android.com/tools/building/multidex.html

只有一个小提示,您可能需要这样做,以防止在进行索引时内存不足。

dexOptions {
        javaMaxHeapSize "4g"
}

还有一个超大模式可以以一种不太可靠的方式解决这个问题:

dexOptions {
        jumboMode true
}

更新:如果你的应用程序很胖,你有太多的方法在你的主应用程序,你可能需要重新组织你的应用程序

http://blog.osom.info/2014/12/too-many-methods-in-main-dex.html


当前回答

Gradle + proguard解决方案:

afterEvaluate {
  tasks.each {
    if (it.name.startsWith('proguard')) {
        it.getInJarFilters().each { filter ->
            if (filter && filter['filter']) {
                filter['filter'] = filter['filter'] +
                        ',!.readme' +
                        ',!META-INF/LICENSE' +
                        ',!META-INF/LICENSE.txt' +
                        ',!META-INF/NOTICE' +
                        ',!META-INF/NOTICE.txt' +
                        ',!com/google/android/gms/ads/**' +
                        ',!com/google/android/gms/cast/**' +
                        ',!com/google/android/gms/games/**' +
                        ',!com/google/android/gms/drive/**' +
                        ',!com/google/android/gms/wallet/**' +
                        ',!com/google/android/gms/wearable/**' +
                        ',!com/google/android/gms/plus/**' +
                        ',!com/google/android/gms/topmanager/**'
            }
        }
    }
  }
}

其他回答

尝试在构建中添加以下代码。Gradle,它对我很管用

compileSdkVersion 23
buildToolsVersion '23.0.1'
defaultConfig {
    multiDexEnabled true
}

你可以使用Android Studio分析问题(dex文件引用):

Build ->分析APK ..

在结果面板上单击classes.dex文件

你会看到:

面对同样的问题,通过编辑我的构建解决了它。Gradle文件的依赖项部分,删除:

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

并将其替换为:

compile 'com.google.android.gms:play-services-location:7.8.0'
compile 'com.google.android.gms:play-services-analytics:7.8.0' 

从Libs文件夹中删除一些jar文件并复制到其他文件夹,然后进入_Project Properties >,选择Java构建路径,选择Libraries,选择添加外部jar,选择已删除的jar到您的项目,单击保存,这将被添加到引用库,而不是Libs文件夹。现在清理并运行项目。你不需要添加任何代码为多dex。这对我来说很有效。

你的项目太大了。你的方法太多了。每个应用程序只能有65536个方法。请看这里https://code.google.com/p/android/issues/detail?id=7147#c6