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

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

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

android端末には、同一パッケージ名のアプリをインストールすることができません。

とはいえ、アプリのテストをする時、デバッグ、検証、リリースのapkを利用するたびに、アプリのuninstallとinstallを繰り返すのは非効率です。

こういう場合、gradleのbuildTypesでapplicationIdSuffixを設定して対応します。

{project_folder}/build.gradle
    buildTypes {
        debug {
            debuggable true
            +applicationIdSuffix ".debug"
            versionNameSuffix ".debug"
            signingConfig signingConfigs.debug
            minifyEnabled true
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        staging {
            debuggable true
            +applicationIdSuffix ".staging"
            versionNameSuffix ".staging"
            signingConfig signingConfigs.staging
            minifyEnabled true
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        release {
            debuggable false
            signingConfig signingConfigs.release
            minifyEnabled true
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
        

applicationIdSuffixを利用することでパッケージ名に名前を追記することが可能です。
上記のコードの場合は、debug環境のapkが【パッケージ名 + .debug】になり、ステージング環境のapkが【パッケージ名 + .staging】になります。

この設定で、デバッグ、検証、リリースのapkを同一端末に導入することができます。

また、この設定をすることにより、

Error: Activity class {} does not exist.

がビルド時に発生するかもしれません。
これはgradleの変更が反映されてないエラーなので、Rebuildをすれば変更が反映されます。

環境(apk)ごとに異なる値を設定する

関連記事

タグ検索で調べてみよう

Android6.0