Androidアプリ作成 gradleで作業を自動化する

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

Androidアプリを作成する時、実装前にgradleで自動化しておいたほうがよいことがいくつかあります。
アプリ開発の生産性がグンと上がるので、なるべく設定しておくことをおススメします。

その方法を記載した記事です。
環境はAndroid 6.0 (API level 23) です。

環境

  • Android sdk 23
  • Build Tools, Revision 23.0.3
  • com.android.tools.build:gradle:2.0.0

開発前作業について

本格的なAndroidアプリ開発作業に入る前にやっておくと便利な設定があります。それは以下の通りです。

  • 環境に応じたビルドの設定
  • テストの設定
  • リリース方法の設定

Androidアプリは作成して終了ではありません。長く利用してもらうためには、その後、継続的な更新と改修が必要になります。
上記の作業をしておくことで、環境の切り替え、アプリのビルド、apkの配布、Google playの更新作業が飛躍的に楽になります。

開発ビルドの設定

まずはビルドの種類を指定します。
buildTypesは、

ビルドの種類

を指定することができます。

デフォルトは、debugとreleaseが用意されています。
API等のネットワークを利用するandroidの開発では、debug, staging, releaseの3種類を用意するのが一般的です。

{project_folder}/build.gradle
    buildTypes {
        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        staging {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
        

proguardは難読化ツールです。debug、staging、release、全ての環境で利用するべきです。
あらかじめ設定して開発することで、proguardが原因で動かなくなることを未然に防げます。

minifyEnabledプロパティは

trueにするとビルド時に難読化できます

それぞれの環境で設定が可能ですが、全ての環境でtrueにするべきです。

signingConfigsの設定

signingConfigsは

認証(password, keyAlias, keyPassword)

の設定を行います。
release用keystoreは、releaseビルドだけで使います。
debug, stagingのkeystoreはandroidに配置されているdebug.keystoreをコピーして利用します。

debug.keystoreは

/Users/{user-name}/.android
        

配下にあります。
terminalからコマンドを使用して、プロジェクトのappフォルダ配下にdebug.keystoreをコピーします。

terminal
cp -pa /Users/{user-name}/.android/debug.keystore {project_folder}/app
        

debug.keystoreとrelease.keystoreをプロジェクトのappフォルダ配下に置いたら、以下の設定を記載します。

{project_folder}/build.gradle
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
            storePassword "android"
        }
        staging {
            storeFile file("debug.keystore")
            storePassword "android"        
        }
        release {
            storeFile file("release.keystore")
            storePassword "xxxxxxx"
        }
    }
    buildTypes {
        // something
        

keyAliasとkeyPasswordを設定します。

{project_folder}/build.gradle
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
            storePassword "android"
            +keyAlias "androiddebugkey"
            +keyPassword "android"
        }
        staging {
            storeFile file("debug.keystore")
            storePassword "android"
            +keyAlias "androiddebugkey"
            +keyPassword "android"
        }
        release {
            storeFile file("release.keystore")
            storePassword "xxxxxxx"
            +keyAlias "androiddebugkey"
            +keyPassword "android"
        }
    }
        

buildTypes編集

設定したsigningConfigsをbuildTypesに指定します。

{project_folder}/build.gradle
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
        staging {
            storeFile file("debug.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
        release {
            storeFile file("release.keystore")
            storePassword "xxxxxxx"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }
    buildTypes {
        debug {
            +signingConfig signingConfigs.debug
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        staging {
            +signingConfig signingConfigs.staging
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }release {
            +signingConfig signingConfigs.release
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
        

gradle build

設定が完了したらbuildできることを確認します。

terminal
// プロジェクトフォルダに移動
cd {project_folder}

// gradle build
./gradlew clean build

// something
:app:assembleStagingUnitTest
:app:testStagingUnitTest
:app:test
:app:check
:app:build

BUILD SUCCESSFUL
        

出力フォルダ

{project_folder}/app/build/outputs/apk 
        

に各環境のapkファイルが作成されていれば成功です。

異なる環境のapkを同一端末にインストール

関連記事

タグ検索で調べてみよう

Android6.0