przede wszystkim zobaczymy plik whats-dex. w czystym języku Java podczas kompilowania kodu java zostanie on skompilowany do pliku .class
, podczas gdy w systemie Android kod Java zostanie skompilowany do pliku .dex
. (oba są kodami bajtowymi, ale różnią się)
incremental
: Oznacza to, że Gradle użyje poprzedniego pliku dex i dołączy do nich nowe zmiany (nie budując ich ponownie za każdym razem).
odpowiedź Twojego pierwszego Q: np. jednym z ograniczeń było to, że nie mogłeś go użyć wraz z multidexem * (chociaż to ograniczenie zostało rozwiązane - w wersjach sdk 21+ przyrostowe kompilacje są możliwe dla apletów wielowątkowych poprzez przebudowywanie tylko plików dex objętych zmianą)
-note: nie potrzebujesz martwić się już tego ograniczenia, ponieważ opcja przyrostowa jest domyślnie prawidłowa, ponieważ Gradle wersja 2.1.0
: ta opcja oznacza kompilowanie kodu java do wielu plików dekodowanych, których nie potrzebujesz, chyba że metody twojego kodu przewyższają limit max na pojedynczym plik dex (metody 64k)
jumboMode
(odpowiedź twoja druga Q): istnieje również ograniczenie dla liczby łańcuchów w pliku dex, dzięki czemu opcja ta rozszerzy liczbę łańcuchów w pliku dex (ta opcja jest prawdziwa, ponieważ Gradle 2.1.0, więc nie musisz się o to martwić)
preDexLibraries
(odpowiedź swojego trzeciego Q): buduje dex plik z biblioteki, dzięki czemu można go stosować w bieżących buduje (nie buduje pliki Dex za każdym razem dla bibliotek). więc używanie tego elementu, gdy czysta kompilacja sprawia, że wszystko jest trochę wolniejsze.
Możliwy duplikat [jak korzystać z Androida dexOptions?] (http://stackoverflow.com/questions/28927255/how-can-i-use-android-dexoptions) –
edytowane pytanie – Xan