Как увеличить скорость сборки приложений Android Studio?

есть ли способ отобразить, какой процесс моей сборки занимает больше всего времени, а затем попытаться обойти его?

Я использую Android Studio. Я бы не назвал свой проект большим на данный момент, но я думаю, что зависимости, которые мне нужны, делают его больше, и сборка все еще занимает 40-60 секунд. (вниз от 90 секунд до удаления multi dex)

вот мои спецификации середины 2015 Macbook Pro:

  • Процессор: 2.5 ГГц Intel Core и7
  • память: 16 ГБ 1600 МГц DDR3

мне пришлось удалить часть зависимости, чтобы иметь возможность строить без включения поддержки multi dex, и это спасло меня ~20 секунд, однако я хочу добавить больше зависимостей, поэтому мне нужно улучшить время сборки, чтобы я мог снова включить multi dex и фактически использовать зависимости, которые я хочу.

Я видел несколько сообщений об изменении Android Studio, чтобы ускорить время сборки, но они, похоже, не работали, и я лучше посмотрю, смогу ли я исправить причину.

вот мои текущие зависимости:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

// MY INTERNAL LIBRARIES
    wearApp project(':wear')
    compile project(':ViewPagerIndicator')
    compile project(':connection-manager')
    compile project(':core-library')
    compile project(':activity-manager')
    compile project(':activity-recorder')

    compile 'com.google.android.gms:play-services-maps:7.5.0'
    compile 'com.google.android.gms:play-services-wearable:7.5.0'
    compile 'com.google.android.gms:play-services-location:7.5.0'

    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.android.support:support-v4:22.2.1'
    compile 'com.android.support:design:22.2.1'
    compile 'com.android.support:cardview-v7:22.2.1'
    compile 'com.android.support:recyclerview-v7:22.2.1'
    compile 'com.android.support:support-annotations:22.2.1'

    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'joda-time:joda-time:2.7'
    compile 'com.androidplot:androidplot-core:0.6.1'

    compile project(':ParseLoginUI')

    /*Images*/
    compile 'com.squareup.picasso:picasso:2.3.3'
    compile 'com.makeramen:roundedimageview:2.1.0' // https://github.com/vinc3m1/RoundedImageView
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'io.reactivex:rxandroid:1.0.1'

//    apt 'com.google.dagger:dagger-compiler:2.0'

}

4 ответов


есть две основные вещи, которые вы можете сделать, чтобы улучшить скорость строительства:

  1. Автономная работа:

offline work on gradle

  1. Compile против больших версий SDK:

Это сложно. Обычно minSdkVersion должно быть что-то вроде 14 или 16. Это замедляет процесс. Если вы компилируете с помощью minSdkVerison = 22 раза скорость резко возрастет. Вы можете увеличить minSdkVersion во время развития и уменьшите его когда освобождать.


я непреднамеренно исправил проблему, я видел свой конец, работая над другими вещами.

реализация внешней зависимости Retrolambda увеличивалось время сборки с ~10 секунд до ~45/50 секунд. Удаление этого из моего приложения значительно уменьшило его (на ~40 секунд на самом деле!).

я убрал retrolambda потому что я хотел начать тестирование своего приложения и нуждался в зависимостях Robolectric и Mockito. Если бы я использовал retrolambda в то же время я получил исключение по строкам unsupported major.minor version указывая на JDK 7. Короче говоря, мне надоело взламывать мои зависимости и создавать настройки только для использования retrolambda (Android Studio имитирует их в любом случае в сворачивании кода).


использование автономного режима для gradle может улучшить время сборки.

Preferences > Build, Execution, Deployment > Gradle > Offline work

недостатком является то, что вы должны отключить автономный режим при обновлении зависимостей.


вы также можете заменить две библиотеки (picasso и round image view) на Glide и служебный класс, который легко выполнит работу библиотеки roundimageview.

проверьте это сообщение для примера кода, который преобразует изображение в округлое с помощью glide. как округлить изображение с помощью библиотеки Glide?

Я также предлагаю вам создать каталог утилиты и поместить в него этот класс CircleTransform.

делать шаги выше уменьшит количество библиотеки, которые вы используете и следовательно метод count и время сборки вашего проекта!