jjzjj

android - 应用太大?无法执行 dex : Cannot merge new index into a non-jumbo instruction

coder 2023-06-05 原文

我在编译我的应用程序时收到以下错误:

[2014-05-07 21:48:42 - Dex Loader] Unable to execute dex: Cannot merge new index 65536 into a non-jumbo instruction!

我现在如果我在包中的任何位置声明一个新方法,我会收到此错误。如果我不这样做,应用程序就会编译。

我想知道这个错误究竟是什么意思。我的应用程序很大,但我认为它没有那么大!所以:

  • 这个错误是否意味着我的方法太多?上市?静止的?包裹?成员(member)?
  • 它与我的根包的方法/成员有关,还是与包含的 JAR 库有关?
  • 有没有办法获得更多关于此的调试信息?

我已经知道 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/

有关android - 应用太大?无法执行 dex : Cannot merge new index into a non-jumbo instruction的更多相关文章

随机推荐