【发布时间】:2015-08-18 08:22:47
【问题描述】:
根据this post,它允许在 dex 文件中包含大量字符串,但我不太明白它的含义以及对构建的影响。
【问题讨论】:
根据this post,它允许在 dex 文件中包含大量字符串,但我不太明白它的含义以及对构建的影响。
【问题讨论】:
Jumbo 模式与可以在 一个 DEX 文件,默认情况下使用 16 位宽的整数进行索引。 因此,如果您的应用程序编码超过 2^16 个字符串,则 dx 工具也会失败。然而,对于字符串引用,有一个 补救措施:DEX 支持允许 32 位宽的“巨型操作码” 字符串引用。 Android Gradle 构建中的 jumboMode 标志 脚本启用此模式,最多允许 2^32 个字符串 参考。
这意味着如果您的 dex 文件中有超过 2^16 个引用,您可以使用 jumboMode 通过允许最多 2^32 个引用来适应这种情况。这是通过强制字节码始终使用“巨型字符串”(2^32) 引用来帮助避免合并 dex 文件时出现问题来完成的。
注意:这与方法引用的数量无关,所以当你的 dex 文件的方法超过 64k 时,此模式无法解决。
根据我的经验,这应该不会对构建产生任何明显影响,除了可能会增加构建时间。
【讨论】:
当你在android中编译你的代码时,你的java代码会被编译成.dex文件。
dex文件中可以存在的字符串数量有限制。通过启用 jumboMode,您可以增加 dex 文件中可以存在的字符串数量。
jumboMode 选项自 Gradle 2.1.0 起为 true,因此您不必担心。
【讨论】: