相关疑难解决方法(0)

无法执行dex:方法ID不在[0,0xffff]:65536中

我以前见过各种版本的dex erros,但这个版本是新的.清理/重启等无济于事.图书馆项目似乎完好无损,依赖似乎正确联系在一起.

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
Run Code Online (Sandbox Code Playgroud)

要么

Cannot merge new index 65950 into a non-jumbo instruction
Run Code Online (Sandbox Code Playgroud)

要么

java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
Run Code Online (Sandbox Code Playgroud)

tl;博士:Google的官方解决方案终于来了!

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

只有一个小提示,你可能需要这样做以防止在执行dex-ing时内存不足.

dexOptions {
        javaMaxHeapSize "4g"
}
Run Code Online (Sandbox Code Playgroud)

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

dexOptions {
        jumboMode true
}
Run Code Online (Sandbox Code Playgroud)

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

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

android dex

341
推荐指数
7
解决办法
14万
查看次数

Android:我的应用程序太大,并且"无法执行dex:方法ID不在[0,0xffff]:65536"?

我正在尝试将我的应用程序与Box,Dropbox和Google Drive集成.所有这三项服务都需要一些第三方罐子.此外,我的应用程序已经需要一些第三方罐子.现在当我尝试从eclipse运行我的应用程序时,我收到以下错误:

无法执行dex:方法ID不在[0,0xffff]中:65536转换为Dalvik格式失败:无法执行dex:方法ID不在[0,0xffff]中:65536

似乎发生此错误是因为我的应用程序有太多方法.我相当肯定这些方法的大部分来自第三方罐子,所以试图通过简化我的代码来解决这个问题是不现实的.我在网上找到了这两个建议.

  1. 添加dex.force.jumbo=true到project.properties(并使用adt版本21).我这样做但仍然得到错误.

  2. 使用多个dex文件,如下所述:http://android-developers.blogspot.co.il/2011/07/custom-class-loading-in-dalvik.html.这似乎是唯一的选择,但我不明白它在我的情况下是如何适用的.问题是像Drive这样的服务有太多的依赖关系.这个解决方案是否要求我在引用其依赖项时修改Drive源以使用inflection?(这显然不是一种选择).

  3. 使用proguard缩小删除未使用的代码/方法.使用proguard导出我的应用程序确实有效,文档服务集成在> 4.0设备上按预期工作.但是,在2.3设备上进行测试时会抛出classnotfound错误.

所以,我希望就这个问题提出一些建议.选项2是我案例的解决方案吗?我应该考虑另一个解决方案吗?

android dx dalvik

24
推荐指数
4
解决办法
2万
查看次数

标签 统计

android ×2

dalvik ×1

dex ×1

dx ×1