【Kotlin/Android Studio】ビルド環境を変更する方法!buildConfigField
この記事からわかること
- Android Studio/Kotlinでビルド環境を変更する方法
- debugやdevelop、staging、releaseなど
- APIURLや設定情報を環境ごとに変えるには?
- buildConfigFieldやresValueの使い方
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
参考文献:公式リファレンス:
iOS(Xcode)でいうスキームで変更できるようなビルド時の環境の変更方法のAndroid版をまとめていきます。
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
ビルド環境を変更する方法
Android Studioでビルド環境を追加するにはbuild.gradleファイルのbuildTypes内に環境を追加します。デフォルトでは以下のようにあらかじめreleaseのみが定義されています。
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
ここにdebug
とstaging
を追加する際は以下のようになります。中には環境ごとの設定を記述していきます。またこの際に上側に記述した環境がデフォルト適応されるようになります。
buildTypes {
debug {
applicationIdSuffix ".debug"
debuggable true
}
staging {
applicationIdSuffix ".staging"
debuggable true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
applicationIdSuffix
アプリのパッケージ名にサフィックスを追加できます。例:com.example.app.debug
debuggable
デバッグ情報を含めるかどうかを制御
minifyEnabled
ProGuard(またはR8)を使用してコードの最適化と難読化を有効にするかどうかを設定
initWith [環境名]
指定した環境設定を継承する
記述できたら「Sync Now」を押してプロジェクトに反映させます。
実際に環境を切り替える:buildConfigField
Android Studioで実際にビルドする際の環境を切り替えるには上部メニューの「Build」>「Select Build Variant...」をクリックします。すると右側に「Build Variants」メニューが出てくるのでそこからアクティブにする環境を変更することで切り替えることが可能です。
環境に応じてAPIのURLや設定を変更する方法
環境を切り分けたいときはAPIのURLが環境ごとに異なったり、設定情報を変更したい時だと思います。そのような時はbuildConfigField
メソッドを使用します。引数にはデータ型
、参照変数
、値
を渡します。
またresValue
メソッドでリソースを追加することも可能です。
buildTypes {
debug {
applicationIdSuffix ".debug"
debuggable true
buildConfigField("String", "API_URL", "https://appdev-room.com/dev")
resValue("string", "api_name", "dev")
}
staging {
applicationIdSuffix ".staging"
debuggable true
buildConfigField("String", "API_URL", "https://appdev-room.com/stg")
resValue("string", "api_name", "stg")
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
buildConfigField("String", "API_URL", "https://appdev-room.com/")
resValue("string", "api_name", "prd")
}
}
アプリ内から参照するには以下のようにします。
Log.i(TAG, BuildConfig.API_URL)
Log.i(TAG, getString(R.string.api_name))
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。