我以前见过各种版本的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
情况:
我打算使用Java库,我只有一个来自Maven存储库的AAR文件,但我需要JAR文件.
背景故事:
我试图编译一个库,但它的Gradle结构不稳定.所以我要求一个编译的jar文件,它的开发人员从一些Maven存储库递给我一个aar文件(开发人员无法编译自己的项目).Gradle配置很乱,它依赖于多个库,Gradle抛出了一些例外.
我尝试在我的IDEA IDE中使用它,但它看不到它.一个库项目应该能够编译成一个jar文件,对吧?
问题:
我该怎么做才能将AAR文件转换为JAR文件?
编译我的应用程序时出现以下错误:
[2014-05-07 21:48:42 - Dex Loader] Unable to execute dex: Cannot merge new index 65536 into a non-jumbo instruction!
Run Code Online (Sandbox Code Playgroud)
我的观点是,如果我在我的包中的任何地方声明一个新方法,我会收到此错误.如果我没有,该应用程序编译.
我想知道这个错误的确切含义(并准确无误).我的应用程序很大,但我不认为它那么大!所以:
我已经知道在SO中的类似问题中解决了"jumbo"启用标志,但是,我认为jumbo模式在我目标的API级别(ICS)上不可用.
我已经看到了一些用于计算Linux和MacOS上的方法的链接,但我还没有看到任何针对Windows的内容.你如何计算.dex或.jar文件中的许多方法?
我们如何计算库文件中的方法数.
例如,Jar或AAR.
这需要知道项目使用的库所使用的android资源ID的数量.这将有助于估算我们与Android的65K dex限制的接近程度.