Как увеличить скорость сборки приложений 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 ответов
есть две основные вещи, которые вы можете сделать, чтобы улучшить скорость строительства:
- Автономная работа:
- 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 и время сборки вашего проекта!