当前位置: 首页 > 知识库问答 >
问题:

无法执行DEX:方法ID不在[0,0xFFFF]:65536中

傅经业
2023-03-14

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

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

Cannot merge new index 65950 into a non-jumbo instruction

java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
dexOptions {
        javaMaxHeapSize "4g"
}

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

dexOptions {
        jumboMode true
}

更新:如果您的应用程序太胖,并且您的主应用程序中有太多的方法,您可能需要按照

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

共有1个答案

元英朗
2023-03-14

更新3(11/3/2014)
谷歌终于发布了官方描述。

更新2(10/31/2014)
Android的Gradle插件V0.14.0增加了对Multi-dex的支持。要启用,只需在build.gradle:

android {
   defaultConfig {
      ...
      multiDexEnabled  true
   }
}

如果您的应用程序支持Android5.0之前的版本(也就是说,如果您的minSDKversion是20或更低的版本),您还必须动态地为应用程序类加载器打补丁,这样它就可以从辅助dex加载类。幸运的是,有一个图书馆可以为你做这件事。将其添加到应用程序的依赖项中:

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

您需要尽快调用类加载器补丁代码。multidexapplication类的文档建议了三种实现方法(从中选择一种,对您来说最方便的):

1-将multidexapplication类声明为AndroidManifest.xml中的应用程序:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>

2-让application类扩展MultiDexApplication类:

public class MyApplication extends MultiDexApplication { .. }
public class MyApplication {
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
        ....
    }
    ....
}

多DEX支持解决了这个问题。DX1.8已经允许生成多个dex文件。
Android L将支持多个dex,下一个版本的支持库将覆盖API4以前的版本。

安华·古鲁姆在Android Developers后台播客节目中说到了这一点。我已经贴出了相关部分的转录(和一般的多项解释)。

 类似资料:
  • 问题内容: 我以前见过各种版本的dex=erros,但这是新的。清理/重新启动等无济于事。图书馆项目似乎完好无缺,并且依存关系似乎已正确链接。 要么 要么 tl; dr:来自Google的官方解决方案终于来了! 只有一个小技巧,您可能需要执行此操作,以防止在进行排序时内存不足。 还有一种巨型模式可以用不太可靠的方式解决此问题: 问题答案: 更新3(11/3/2014)Google终于发布了官方说明

  • 对于我的项目,方法计数是55K。明显低于65k限制。当我尝试在eclipse/studio中运行应用程序时 转换为Dalvik格式失败:无法执行dex:字段ID不在[0,0xffff]:65536中 我有5-6个库包含在项目中,我的应用程序也有很多功能。 在Google上,我发现许多转换为Dalvik格式的链接失败:无法执行[0,0xffff]:65536中的dex:method ID,可能存在多

  • 我尝试将构建工具更改为最新的 因为默认情况下,它更改为20.0.0,似乎使用4.4w的SDK,但这并没有解决我的问题。 有人知道这里会出什么问题吗? 从那以后,唯一新的依赖项是最后一行,我是按照https://developer.android.com/google/gcm/client.html添加的,所以我不认为这是问题的根源。 编辑2: 是的,这是问题的根源。由于我需要,我用http://d

  • 我知道这个问题已经被问了很多次,但我有一些奇怪的问题,它在ADT v22中运行良好,但当我更新我的eclipse到v23时,我得到了这个错误 无法执行dex:method ID不在[0,0xffff]:65536中转换为Dalvik格式失败:无法执行dex:method ID不在[0,0xffff]:65536中 谢谢你的帮助 更新:问题得到了修复,当我使用Android Studio与Multi

  • 问题内容: 我知道这个问题已经在这里问过几次了。但是我还没有看到任何可能的解决方案。在我将项目“以Android应用程序身份运行”之前,如果我不清理它,则会收到以下错误,并且必须重新启动Eclipse …并再次清理。 com.jstun.core …是我的src文件夹的一部分,我当然不能删除它。即使我删除该程序包,另一个程序包也会显示为错误,例如: 自更新为ADT 15以来,我已经看到此错误,我正