我在编译我的应用程序时收到以下错误:
[2014-05-07 21:48:42 - Dex Loader] Unable to execute dex: Cannot merge new index 65536 into a non-jumbo instruction!
我现在如果我在包中的任何位置声明一个新方法,我会收到此错误。如果我不这样做,应用程序就会编译。
我想知道这个错误究竟是什么意思。我的应用程序很大,但我认为它没有那么大!所以:
我已经知道 SO 中类似问题中解决的“巨型”启用标志,但是,我认为巨型模式在我所针对的 API 级别 (ICS) 上不可用。
最佳答案
您的错误在于单个 dex 文件中的字符串数量(方法、成员等)。
您需要使用 jumbo in dex 编译您的应用程序:
dex.force.jumbo=true
在project.properties
这会增加 dex 文件中字符串的限制。你的项目可能会编译。
同样对于 jumbo set,64K 仅适用于单个 dex 中的方法的另一个限制。如果将来遇到此限制,则需要删除一些依赖项。
更新:使用 Gradle 构建: 在 Gradle 中,您也可以在 build.gradle 文件中启用 jumboMode:
dexOptions {
jumboMode = true
}
检查: Android Build: Dex Jumbo Mode in Gradle
同样使用 Gradle,您可以使用 multidex 构建来避免 方法的 64K 限制,教程在这里: https://developer.android.com/tools/building/multidex.html
关于android - 应用太大?无法执行 dex : Cannot merge new index into a non-jumbo instruction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23527218/