Androidアプリ開発 AndroidStudio Gradleでビルド時間を改善する

2016年08月11日(編集2016年08月11日)
このエントリーをはてなブックマークに追加

Androidアプリ開発では、ビルドツールにGradleを利用するのが一般的です。 しかし、デフォルト設定のビルドは時間がかかります。なので、設定を変更して高速化するべきです。
この記事は、Androidアプリ開発でGradleを使ったビルド時間を高速化する方法を記載した記事です。

環境はAndroid 7.0 (API level 24) です。

環境

  • OS X Yosemite
  • Oracle jdk version 1.8.0_72
  • Android Studio 2.1.2
  • android sdk 24
  • Gradle 2.1.0

難易度

初心者向け

計測

まずは、改善前のビルドの速度を計測します。

Android StudioでRebuildを実行します。
Rebuildはbuildフォルダのコンテンツを削除し、バイナリをビルドします。apkファイルは作成しません。

メニュー → Build → Rebuild Project

でRebuildを実行します。

Rebuild
terminal
// 1回目
BUILD SUCCESSFUL

Total time: 16.19 secs

// 2回目
BUILD SUCCESSFUL

Total time: 9.215 secs

// 3回目
BUILD SUCCESSFUL

Total time: 8.421 secs
        

上記は、3回のビルド実行結果です。

サンプルは小さなアプリなので、もともとビルドは早いです。

Gradleのバージョン

Androidアプリのビルドは、Gradleに依存します。当然、ビルド時間はGradleの性能と関連があります。
なので、Gradleのバージョンは可能な限り最新にします。

Offline workを有効にする

Android Studioで

Preference → Build,Execution,Deployment → Gradle

と進み Offline work と書かれたチェックボックスにチェックを入れると、ライブラリの依存関係の確認作業をしなくなります。

Offline work

これにより、Gradleのビルドを高速化できます。

gradle.propertyの設定

gradle.propertyを設定します。

{project_folder}/gradle.property
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx3072m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true
        

各種プロパティの値と内容は、以下の表の通りです。

■ gradle.propertyの設定項目

名称 機能
org.gradle.daemon デーモンプロセスを使うか
org.gradle.jvmargs 実行時のJVM引数
org.gradle.parallel gradleの並列ビルドモードを有効にする
org.gradle.configureondemand 関連するプロジェクトがある場合に必要な部分だけビルドする

最も効果が高いのは、org.gradle.jvmargsのメモリ容量を増やすことです。

Dex In Processの有効化

Dex In Processを有効化します。 Dex In Processを有効にすると、フルクリーンビルドが劇的に早くなります。

{project_folder}/build.gradle
android {
    dexOptions {
        javaMaxHeapSize '2g'
    }
}
        

Dex In Processの設定を有効にするには、gradle.propertyのorg.gradle.jvmargsのメモリ容量を、javaMaxHeapSize以上にする必要があります。

インクリメンタルビルド

インクリメンタルビルドは、以前ビルドされなかったターゲットまたは古いターゲットだけをビルドすることです。
gradleで機能を有効にするには以下のようにします。

{project_folder}/build.gradle
android {
    dexOptions {
        incremental true
    }
}
        

再計測

改善後のビルドの速度を計測します。
改善前と同じように3回Rebuildを実行します。

terminal
// 1回目
BUILD SUCCESSFUL

Total time: 8.52 secs

// 2回目
BUILD SUCCESSFUL

Total time: 7.972 secs

// 3回目
BUILD SUCCESSFUL

Total time: 6.686 secs
        

1.26倍ほど早くなりました。
小さなアプリだとあまり実感できませんが、大規模アプリだとかなりの高速化を感じることができると思います。

まとめ

アプリの容量が大きくなるほど、ビルドは時間がかかります。
適切なカスタマイズをして、ストレスの少ない開発環境を構築してください。

また、Androidアプリ開発は、マシンパワーによる影響が大きいので、2-3年を目安に開発マシンを買い換えましょう。

関連記事

タグ検索で調べてみよう

Android7.0 Android Studio