【Kotlin/Android Studio】ビルド環境を変更する方法!buildConfigField

この記事からわかること

  • Android Studio/Kotlinビルド環境変更する方法
  • debugdevelopstagingreleaseなど
  • APIURL設定情報を環境ごとに変えるには?
  • buildConfigFieldresValue使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

参考文献:公式リファレンス:

iOS(Xcode)でいうスキームで変更できるようなビルド時の環境の変更方法のAndroid版をまとめていきます。

環境

ビルド環境を変更する方法

Android Studioでビルド環境を追加するにはbuild.gradleファイルのbuildTypes内に環境を追加します。デフォルトでは以下のようにあらかじめreleaseのみが定義されています。


buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

ここにdebugstagingを追加する際は以下のようになります。中には環境ごとの設定を記述していきます。またこの際に上側に記述した環境がデフォルト適応されるようになります。


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」メニューが出てくるのでそこからアクティブにする環境を変更することで切り替えることが可能です。

【Kotlin/Android Studio】ビルド環境を変更する方法!buildConfigField

環境に応じて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))

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index