2015-10-01 100 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