2015-10-01 112 views
19

内的build.gradle我们可以添加PARAMS什么是增量,preDexLibraries,jumboMode,里面dexOptions?

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增量模式。这有很多限制,可能无法正常工作。小心使用。

布尔jumboMode

启用DX巨型模式(--force-巨型)。

布尔preDexLibraries

是否预先dex库。这可以提高增量构建,但干净构建可能会变慢。

1)哪些限制是递增的?

2)什么是巨型模式?

3)什么是pre-dex库?

+1

可能重复[我怎样才能使用Android dexOptions?](http://stackoverflow.com/questions/28927255/how-can-i-use-android-dexoptions) –

+0

编辑问题 – Xan

回答

11

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

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

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

-note:你不需要担心这个限制了,因为增加的选择是因为摇篮版本默认为true 2.1.0

:此选项意味着编译Java代码分成多个文件DEX你不需要这个,除非你的代码的方法租税上一个最大限制dex文件(64k方法)

jumboMode答案你的第二个Q):dex文件中的字符串计数也有一个限制,这个选项将扩展dex文件中的字符串计数(这个选项从Gradle 2.1.0开始是真的,所以你也不必担心)

preDexLibraries你的第三个Q的答案):它建立DEX文件出库,因此它可以在增量被用于建立(未建立DEX文件库每次)。所以使用这个项目时,干净的构建使一切慢一点。

+0

总结:用Gradle 2.1.0或更高版本不需要设置这些参数中的任何一个加快构建 – Xan

+1

对于multidex和predexLibraries不是真实的。这两种情况并非如此。每个想要添加为Gradle默认功能的功能都会作为孵化功能添加(意味着您可以使用它们,但它们不稳定并且可能有问题)。但是在一些版本之后,它会离开孵化状态,并且会被默认。 –

+0

multidex没有问题,因为它的含义很明确 – Xan