【问题标题】:What is the purpose of jumboMode in dexOptions for a Gradle build?Gradle 构建中 dexOptions 中的 jumboMode 的目的是什么?
【发布时间】:2015-08-18 08:22:47
【问题描述】:

根据this post,它允许在 dex 文件中包含大量字符串,但我不太明白它的含义以及对构建的影响。

【问题讨论】:

    标签: android gradle


    【解决方案1】:

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

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

    注意:这与方法引用的数量无关,所以当你的 dex 文件的方法超过 64k 时,此模式无法解决。

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

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

    【讨论】:

      【解决方案2】:

      当你在android中编译你的代码时,你的java代码会被编译成.dex文件。

      dex文件中可以存在的字符串数量有限制。通过启用 jumboMode,您可以增加 dex 文件中可以存在的字符串数量。

      jumboMode 选项自 Gradle 2.1.0 起为 true,因此您不必担心

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-29
        • 2019-12-19
        • 2014-01-14
        • 2018-01-09
        • 2020-12-30
        • 1970-01-01
        • 1970-01-01
        • 2014-08-05
        相关资源
        最近更新 更多