Ускорить gradle построить в приложении с несколькими приложениями

В моем приложении есть множество библиотек, которые необходимы, поэтому я был вынужден использовать библиотеку поддержки multidex, и она работает хорошо. Но там, где проблема показывает, находится в скорости загрузки gradle. Требуется в среднем 2 минуты, чтобы строить, и когда я разрабатываю и тестирую, это довольно раздражает.

Есть ли способ ускорить сборку отладки?

Ответ 1

Вы можете ускорить разработку, указав минимальную версию SDK = 21.
Официальная документация включает весь раздел об этом.

Пример (из документации):

android {
    productFlavors {
        // Define separate dev and prod product flavors.
        dev {
            // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
            // to pre-dex each module and produce an APK that can be tested on
            // Android Lollipop without time consuming dex merging processes.
            minSdkVersion 21
        }
        prod {
            // The actual minSdkVersion for the application.
            minSdkVersion 14
        }
    }
          ...
    buildTypes {
        release {
            runProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                                                 'proguard-rules.pro'
        }
    }
}
dependencies {
  compile 'com.android.support:multidex:1.0.0'
}

После того, как вы добавили ароматы продукта, вы можете использовать задачу devDebug (вместо задачи debug по умолчанию) для вашей сборки разработки:
- из командной строки: запустите ./gradlew installDevDebug
- от Android Studio: откройте окно "Варианты сборки" и выберите вариант сборки devDebug.

Вы должны, конечно, работать против устройства, SDK >= 21.


Там также есть решение для тех, кто не хочет использовать ароматы. Как было предложено в this gist, динамически вычисляйте значение minSdkVersion:

int minSdk = hasProperty('devMinSdk') ? devMinSdk.toInteger() : 14
apply plugin: 'com.android.application'

android {
    ...
    defaultConfig {
        minSdkVersion minSdk
        ...
    }
}

В этом примере мы проверяем, определено ли свойство devMinSdk, и если true - мы его используем. В противном случае мы по умолчанию 14.

Как передать значение devMinSdk для сборки script? Два варианта:

Использование командной строки:

./gradlew installDebug -PdevMinSdk=21

Использование настроек Android Studio:

Перейдите в раздел Настройки (Настройки в Windows) → Сборка, выполнение, развертывание → Компилятор → установите -PdevMinSdk=21 в текстовое поле Параметры командной строки.

Параметры компилятора Android Studio

Ответ 2

Недавно созданный кеш был представлен командой, работающей над плагином Android Gradle. Вы можете включить его, добавив android.enableBuildCache=true в gradle.properties.

Подробнее здесь http://tools.android.com/tech-docs/build-cache

Для меня это увеличило инкрементное время сборки на ~ 30 секунд.

Он не работает с устаревшим multidex (com.android.support:multidex), представленным как часть библиотеки поддержки, поэтому он подходит только в том случае, если ваш minSDK >= 21. Вы можете установить его только для своих разработок и выполнить выпуск сборок с помощью minSDK < 21.

Он также работает без включенного мультисайда.

Ответ 3

Android Studio 1.3 (в настоящее время в Preview 3) использует новую систему сборки, которая улучшила конструкцию gradle время (действительно, как 10-30 раз быстрее).

Дополнительная информация в Live сеансе в Google I/O 2015

Ответ 4

Multidexing использует больше памяти. Когда вы приблизитесь к максимальному размеру кучи в Java, вы обнаружите, что Java тратит больше времени на выполнение GC, чем на любую реальную работу, это может сильно замедлить работу.

Я бы настоятельно рекомендовал увеличить максимальный размер кучи при использовании multidex. Добавьте к закрытию андроида в файл build.gradle следующее: максимальный размер кучи 4 ГБ (уменьшите его, если хотите):

dexOptions {
    javaMaxHeapSize "4g"
}

Ответ 5

Изменение MinSdk до 21 сделало все для меня нормальным. Теперь все скомпилируется как 6s

Ответ 6

Это больше не нужно с последней версией Android Studio 3.0

Ответ 7

Перейдите в настройку, найдите компилятор, введите "--offline" в параметрах командной строки и компилируйте.