dexOptions 中的 incremental、preDexLibraries、jumboMode 是什么意思?

What's the meaing of: incremental, preDexLibraries, jumboMode, inside dexOptions?

在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

boolean incremental

Whether to enable the incremental mode for dx. This has many limitations and may not work. Use carefully.

boolean jumboMode

Enable jumbo mode in dx (--force-jumbo).

boolean preDexLibraries

Whether to pre-dex libraries. This can improve incremental builds, but clean builds may be slower.

1) 哪些限制是递增的?

2) 什么是巨型模式?

3) 什么是pre-dex库?

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

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

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

-注意:您无需再担心此限制,因为自 Gradle 版本 2.1.0

以来增量选项默认为真

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

jumboMode你第二个问题的答案):dex文件中的字符串计数也有限制,启用此选项将扩展字符串计数dex 文件(此选项自 Gradle 2.1.0 起为真,因此您也不必担心)

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