什么是:incremental,preDexLibraries,jumboMode,在dexOptions中?

时间:2015-10-01 15:04:03

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

在build.gradle中我们可以添加params

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)中启用巨型模式。

     

boolean preDexLibraries

     

是否预先设定图书馆。这可以改善增量构建,但是干净的构建可能会更慢。

1)哪些限制是增量的?

2)什么是巨型模式?

3)什么是pre-dex库?

1 个答案:

答案 0 :(得分:18)

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

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

您的第一个问答的答案:例如:其中一个限制是你不能将它与multidex *一起使用(虽然这个限制已经解决了 - 对于sdk版本,通过仅重建受影响的dex文件,可以为multidex apks增加21+增量版本)

-note:您不必再担心这种限制了,因为默认情况下增量选项为真,因为Gradle版本为2.1.0

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

jumboMode你的第二个Q的答案):dex文件中的字符串计数也有限制,启用此选项将扩展dex文件中的字符串计数(此选项)从Gradle 2.1.0开始就是如此,所以你也不用担心它。)

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