Androidで環境変数を使用する
はじめに
今回アプリを作成するにあたり環境変数をいつものように.envファイルで管理しようとした際に他の方法でいいものがあったためまとめておきます。
実装
環境変数の用意
Androidにはデフォルトでlocal.properties
というファイルが用意されています。
こちらが.env
の代わりとして使用することができます。
↑ここにあります
その中に.env
ファイルと同じように記述します。
~~元からあるコード~~
USERNAME=user
PASSWORD=pass
ビルド時に生成されるように
次にGradleを編集していきます
build.gradle.kts
ファイル("Module:app"があるほう)に以下の内容を追記します。
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
ありがとうございます!!解消しすごく助かりました!
情報少なく苦労しました。