Gradle 构建中 dexOptions 中 jumboMode 的用途是什么?

Est*_*eam 6 android gradle

根据这篇文章 ,它允许 dex 文件中包含更多数量的字符串,但我不太明白这意味着什么以及对构建的影响。

Sma*_*lls 5

\n

Jumbo 模式与 DEX 文件中可引用的字符串数量有关,默认情况下使用 16 位宽整数进行索引。\n 因此,如果您的应用程序编码超过 2^16 个字符串,则 dx\n 工具将也失败。然而,对于字符串引用,有一个补救措施:DEX 支持 \xe2\x80\x9cjumbo 操作码\xe2\x80\x9d,它允许 32 位宽\n 字符串引用。Android Gradle 构建脚本中的 jumboMode 标志启用此模式,允许引用最多 2^32 个字符串。

\n
\n\n

这意味着如果您的 dex 文件中有超过 2^16 个引用,您可以使用jumboMode通过允许最多 2^32 个引用来适应这种情况。这是通过强制字节码始终使用“巨型字符串”(2^32) 引用来完成的,以帮助避免合并 dex 文件时出现问题。

\n\n

注意:这与方法引用的数量没有任何关系,因此当你的 dex 文件有超过 64k 的方法时,此模式无法解决。

\n\n

来源:https ://developers.soundcloud.com/blog/congratulations-you-have-a-lot-of-code-remedying-androids-method-limit-part-1

\n\n

根据我的经验,除了可能增加构建时间之外,这不会对构建产生任何明显的影响。

\n