🌱

Androidで環境変数を使用する

2024/05/24に公開

はじめに

今回アプリを作成するにあたり環境変数をいつものように.envファイルで管理しようとした際に他の方法でいいものがあったためまとめておきます。

実装

環境変数の用意

Androidにはデフォルトでlocal.propertiesというファイルが用意されています。
こちらが.envの代わりとして使用することができます。

↑ここにあります

その中に.envファイルと同じように記述します。

local.properties
~~元からあるコード~~
USERNAME=user
PASSWORD=pass

ビルド時に生成されるように

次にGradleを編集していきます
build.gradle.ktsファイル("Module:app"があるほう)に以下の内容を追記します。

build.gradle.kts
android {
    ~~元からあるコード~~
    //buildConfigを有効に
    buildFeatures {
        buildConfig = true
    }
    defaultConfig {
        ~~元からあるコード~~
        // local.properties ファイルからプロパティを読み込む
        val localProperties = Properties()
        val localPropertiesFile = rootProject.file("local.properties")
        if (localPropertiesFile.exists()) {
            localPropertiesFile.inputStream().use { stream ->
                localProperties.load(stream)
            }
        }

        // 環境変数を BuildConfig に設定する
        buildConfigField("String", "USERNAME", "\"${localProperties["USERNAME"]}\"")
        buildConfigField("String", "PASSWORD", "\"${localProperties["PASSWORD"]}\"")
    }
    ~~元からあるコード~~
}

解説

簡単に解説していきます

//buildConfigを有効に
    buildFeatures {
        buildConfig = true
    }

ここの部分でビルド時にBuildConfigの生成を有効にします。
有効にしておかないとMainActivity等から使用することができません

defaultConfig {
        ~~元からあるコード~~
        // local.properties ファイルからプロパティを読み込む
        val localProperties = Properties()
        val localPropertiesFile = rootProject.file("local.properties")
        if (localPropertiesFile.exists()) {
            localPropertiesFile.inputStream().use { stream ->
                localProperties.load(stream)
            }
        }

        // 環境変数を BuildConfig に設定する
        buildConfigField("String", "USERNAME", "\"${localProperties["USERNAME"]}\"")
        buildConfigField("String", "PASSWORD", "\"${localProperties["PASSWORD"]}\"")
}

次のこの部分ではlocal.propertiesからプロパティを読み取ってBuildConfigにビルドを行っています。

環境変数を使用する

MainActivityから読み出す部分を実装する前に一旦ビルドを行いましょう。
ビルドがされた際にBuildConfigが生成されるのでしていないとBuildConfigが見つからずエラーとなります。(1敗)
ビルドが終わったら次のようにして呼び出すことができます。

val user=BuildConfig.USERNAME
val pass=BuildConfig.PASSWORD

これで環境変数を呼び出すことができました。

おわりに

今回はAndroidで環境変数を使用する方法についてまとめました。
.envファイルもライブラリをインポートすれば使用できなくはないですが、AndroidStudioでのプロジェクトの表示方法が独特なのでappタブ等で表示しているとルート直下に配置した.envファイルはタブを変えないと見ることができず不便です。
local.propertiesは使用するまでが手間ですが、AndroidStudioでも問題なく表示されるのでぜひ活用しましょう。

Discussion