【问题标题】:What's the meaing of: incremental, preDexLibraries, jumboMode, inside dexOptions?什么是:增量,preDexLibraries,jumboMode,dexOptions 内部?
【发布时间】:2015-12-29 16:50:35
【问题描述】:

在 build.gradle 中我们可以添加该参数

android {
    dexOptions {
        incremental 
        preDexLibraries
        jumboMode 
        javaMaxHeapSize
    }
}

但是文档太少了

http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.DexOptions.html#com.android.build.gradle.internal.dsl.DexOptions

布尔增量

是否开启dx的增量模式。这有很多限制,可能不起作用。谨慎使用。

boolean jumboMode

在 dx (--force-jumbo) 中启用巨型模式。

布尔 preDexLibraries

是否预 dex 库。这可以改进增量构建,但干净的构建可能会更慢。

1) 哪些限制是渐进式的?

2) 什么是巨型模式?

3) 什么是 pre-dex 库?

【问题讨论】:

标签: android-studio gradle android-gradle-plugin build.gradle


【解决方案1】:

首先让我们看看什么是 dex 文件。在纯 java 中,当您编译 java 代码时,它将被编译成 .class 文件,而在 android 中,您的 java 代码将被编译成 .dex 文件。 (都是字节码但不同)

incremental:这意味着 Gradle 将使用以前的 dex 文件并将新的更改附加到它们(不是每次都重新构建它们)。

你的第一个问题的答案:例如其中一个限制是您不能将它与 multidex* 一起使用(尽管此限制已解决 - 对于 sdk 版本,通过仅重建受影响的 dex 文件,multidex apk 可以进行 21+ 增量构建)

-注意:你不再需要担心这个限制,因为从 Gradle 版本 2.1.0 开始,增量选项默认为 true

multidex: 这个选项意味着将 java 代码编译成多个 dex 文件,除非你的代码方法超过单个 dex 文件的最大限制(64k 方法)

jumboMode你第二个Q的答案):dex文件中的字符串计数也有限制启用此选项将扩展dex文件中的字符串计数(此选项为true因为 Gradle 2.1.0 所以你也不必担心)

preDexLibraries第三个问题的答案):它从库中构建 dex 文件,因此可以在 增量构建 中使用(不是每次都构建 dex 文件图书馆的时间)。所以在干净的构建时使用这个项目会使一切变慢。

【讨论】:

  • 总结:使用Gradle 2.1.0或更高版本不需要设置任何这些参数来加快构建
  • multidex 和 predexLibraries 不正确。这两个不是默认的。每个希望首先默认添加到 gradle 的功能都被添加为孵化功能(意味着您可以使用它们,但它们不稳定并且可能有问题)。但是在某些版本之后,它会退出孵化状态并成为默认值。
  • multidex 没有问题,因为意思很清楚
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-21
  • 2011-07-11
  • 2020-02-06
  • 2011-05-27
  • 2021-11-20
  • 2022-01-12
  • 1970-01-01
相关资源
最近更新 更多