目的
外部 Webサービスの APIキーなどをソースコード中に入れておくと、うっかり githubへ pushしたときなどに悲惨なことになる。 大事な情報は gitignoreしたファイルで管理し、ビルド時にそれを参照するようにすると安全。
方法
app/gradle.propertiesを作成
API KEYなど重要な情報を管理するファイル。 このファイルは .gitignoreに追加して gitの管理外にしておく。
gradle.properties
API_KEY="xxxxxxxxxx"
app/build.gradle.kts
build.gradle.kts
android {
defaultConfig {
buildConfigField("String", "SECRET_API_KEY", project.properties["API_KEY"] as String) // 追加
}
buildFeatures {
buildConfig = true // 追加
}
BuildConfigがデフォルトで作られなくなっているので buildConfig = true
を設定する。
コード中での利用
buildConfigFieldで宣言した値はコード中で BuildConfig.SECRET_API_KEY
のように参照できる。
Constants.kt
const val SECRET_API_KEY = BuildConfig.SECRET_API_KEY
気になったこと
いつから buildConfig = false
が標準になったのだろう 🤔 と思って調べたところ以下の記事があった
BuildFeatures.ktを見るとbuildConfigのデフォルト値がfalseになっていた。 Androidの公式サイトのドキュメントはtrueのままだったが、今後更新されるのかもしれない。
今後はあまり推奨される方法ではないのかもしれない。 そのときはそのときで別の方法を調べる。