※効果はプロジェクトや環境によって異なるので参考程度に
gradle.propertiesの設定
gradle.properties
# JVMのメモリ設定
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# 並列ビルド
org.gradle.parallel=true
# デーモン(CIではOFFにした方がいいらしい)
org.gradle.daemon=true
# オンデマンド
org.gradle.configureondemand=true
あんまり効果ありませんでした。
Gradleのバージョンを上げる
Gradle 2.2.1を使っていたので最新の2.8にあげてみました。2.4で高速化が入ってるらしいです。
gradle/wrapper/gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
# ここを2.8にする
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
まあまあ効果ありました。
Google Play Servicesを必要なものだけリンクする
Google Play Services は6.5から必要なパッケージだけリンクできるようになってます。必要な物だけ使うことで、無駄なクラスをビルドしなくてよくなります。
参考:https://developers.google.com/android/guides/setup
app/build.gradle
// before
// compile 'com.google.android.gms:play-services:8.3.0'
// after
compile 'com.google.android.gms:play-services-auth:8.3.0'
compile 'com.google.android.gms:play-services-base:8.3.0'
compile 'com.google.android.gms:play-services-appindexing:8.3.0'
compile 'com.google.android.gms:play-services-analytics:8.3.0'
compile 'com.google.android.gms:play-services-gcm:8.3.0'
compile 'com.google.android.gms:play-services-location:8.3.0'
compile 'com.google.android.gms:play-services-maps:8.3.0'
結果的には、これが一番効果ありました。
multidexを使っている場合、minSdkVersion=21にする
こちらの記事に書いてある通り、multidexを使っている場合はminSdkVersionを21以上にするとビルドが高速化されます。
android {
productFlavors {
dev {
// 開発時はこちら
minSdkVersion 21
}
prod {
// リリース時はこちら
minSdkVersion 15
}
}
...
}
コマンドラインのDebugビルドで3分15秒かかっていたのが、2分18秒に短縮されました。