Ответ 1
прежде всего, давайте посмотрим, что такое dex файл. в чистой java, когда вы скомпилируете Java-код, он будет скомпилирован в файл .class
, в то время как в android ваш Java-код будет скомпилирован в файл .dex
. (оба являются байт-кодами, но разными)
incremental
: это означает, что Gradle будет использовать предыдущий файл dex и добавляет к ним новые изменения (не создавая их снова каждый раз).
ответ вашего первого Q: например. одно из ограничений заключалось в том, что вы не могли использовать его вместе с multidex * (хотя это ограничение было решено - для версий sdk 21+ инкрементные сборки возможны для apache multidex путем восстановления только затронутых файлов dex)
-note: вам больше не нужно беспокоиться об этих ограничениях, потому что по умолчанию опция is true по умолчанию, поскольку Gradle версия 2.1.0
multidex
: этот параметр означает компиляцию java-кода в несколько файлов dex, которые вам не нужны, если ваши методы кода не превышают максимальное ограничение для одного файла dex (методы 64k)
jumboMode
(ответ вашего второго Q): есть также ограничение на количество строк в файле dex, позволяющее этой опции расширять количество строк в файле dex (эта опция истинна так как Gradle 2.1.0, поэтому вам также не придется об этом беспокоиться)
preDexLibraries
(ответ третьего Q): он создает файл dex из библиотек, поэтому его можно использовать в инкрементных сборках (не создавая файлы dex каждый время для библиотек). поэтому использование этого элемента, когда чистая сборка делает все немного медленнее.