Android Studio + Gradle ビルド環境を切り替える方法

Gradleを使用したビルド環境切り替え手順を記載
目的

・開発用URL、ステージング用URL、製品用URLの切り換えを行う
・デバッグ版 apk、リリース版 apk の切り換えを行う

Android Studio にて新規プロジェクト生成時に
自動生成される buile.gradle に必要な情報を追加する。

編集前ファイル(build.gradle)
apply plugin: ‘com.android.application’
android {
    compileSdkVersion 20
    buildToolsVersion “20.0.0″
    defaultConfig {
        applicationId “com.example.myapp”
        minSdkVersion 15
        targetSdkVersion 20
        versionCode 1
        versionName “1.0″
    }

    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

 

ビルドタイプ設定、プロダクトフレーバー設定、署名定義設定を追記

・ビルドタイプ設定
デバッグ/リリース切り替え定義として以下を”buildTypes”へ追記
デバッグ ・・・”debug”
リリース ・・・”release”

・プロダクトフレーバー設定
リソース切り換え定義として”productFlavors”を追記
開発版     ・・・”develop”
ステージング版 ・・・”staging”
製品版     ・・・”product”
(”develop”、”staging”、”product”は任意の文字列)

・署名設定
署名定義として“signingConfigs”を追記
“app/“ フォルダ以下の任意のフォルダに .keystore を配置しておきます。

今回は”releaseKey”という名称で”app/”ディレクトリに直接配置します。
追加後のファイルは以下のようになります。

編集後ファイル(build.gradle)
apply plugin: ‘com.android.application’

android {
    compileSdkVersion 20
    buildToolsVersion “20.0.0″
    defaultConfig {
        applicationId “com.example.myapp”
        minSdkVersion 15
        targetSdkVersion 20
        versionCode 1
        versionName “1.0″
    }

    // 署名用定義
    signingConfigs {
        releaseKey {
            keyAlias ‘myApp’ // エイリアス名
            keyPassword ‘password’
            storeFile file(‘myApp.keystore’) // カレントディレクトリはapp/直下
            storePassword ‘password’
        }
    }

    // ビルドタイプ
    buildTypes {
        debug {
            debuggable true
            applicationIdSuffix = ‘.debug’ // パッケージ名に .debug をつける
            versionNameSuffix = ‘d’ // バージョン名の末尾に d をつける
        }
        release {
            runProguard false
            proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
        }
    }

    // プロダクトフレーバー
    productFlavors {
        develop {
            applicationId = ‘com.example.myapp’
            signingConfig signingConfigs.releaseKey
        }
        staging {
            applicationId = ‘com.example.myapp’
            signingConfig signingConfigs.releaseKey
        }
        product {
            applicationId = ‘com.example.myapp’
            signingConfig signingConfigs.releaseKey
        }
    }
}

dependencies {
    compile fileTree(dir: ‘libs’, include: ['*.jar'])
}
リソースファイル作成

各フレーバー毎に ”app/src/“ ディレクトリ配下にフォルダを作成します。
その後、開発用URL、ステージング用URL、製品用URLを記載した string.xml を
各フレーバーフォルダへ配置していきます。
(フォルダ・ファイルは自動生成されないため1つずつ自分で作ります)
 
[URL記載文字列]
開発用
 <string name=”url”>http://dummy_develop_url/</string>
ステージング用
 <string name=”url”>http://dummy_staging_url/</string>
製品用
 <string name=”url”>http://dummy_product_url/</string>

配置後の状態は以下となります。
ディレクトリ作成後-2

レイアウトファイルは以下のように記載しました。

レイアウトファイル
<RelativeLayout
 〜〜〜
    tools:context=”.MyActivity”>
    <TextView
        android:text=”@string/url”
        android:layout_width=”wrap_content”
        android:layout_height=”wrap_content” />
</RelativeLayout>

 
 

apk作成

Build Variants から任意の組み合わせを選択し実行します。
(Build Variantsが非表示の場合は、左側ツールバーのボタンをクリックすれば表示されます)

ビルド選択

全パターン(ビルドタイプ2種 ×プロダクトフレーバー3種)のapkを作成すると、
出力フォルダ(“app/build/outputs/apk”)に以下のようにapkが出力されます。

apk生成

又、実際に動作させたapkでレイアウトファイルに記載したURLが
次のように置き換わっている事も確認出来ます。

開発用
 http://dummy_develop_url/
ステージング用
 http://dummy_staging_url/
製品用
 http://dummy_product_url/