🐥
[Android] 公開したくないAPI Keyを管理する方法
課題
API Keyをハードコーディングした状態でGitHubにあげてしまうと、API Keyが公開されてしまって良くない。
他の人に見られないようにAPI Keyを管理したい。
(自分はSupabaseのURLとAPI Keyを管理したかった。)
解決策
local.propertiesにAPI Keyを保存する。
詳細
手順1:local.propertiesに記載
local.propertiesに以下のように管理したいURLとAPI Keyを記載する。
SUPABASE_URL=https://xxxxxxxxx
SUPABASE_KEY=xxxxxxxxxxxxxxxxx
手順2:build.gradle.kts(app)に記載
次にlocal.propertiesに登録したデータを使えるように
build.gradle.kts(app)に記載する。
import java.io.FileInputStream //★追加
import java.util.Properties //★追加
plugins {
//省略
}
android {
//省略
defaultConfig {
//省略
val propertiesFile = project.rootProject.file("local.properties") //★追加
val properties = Properties().apply{
load(FileInputStream(propertiesFile))
} //★追加
buildConfigField ("String", "SUPABASE_URL", "\"${properties["SUPABASE_URL"]}\"") //★追加
buildConfigField ("String", "SUPABASE_KEY", "\"${properties["SUPABASE_KEY"]}\"") //★追加
}
//省略
buildFeatures {
buildConfig = true // ★追加
compose = true
}
//省略
}
dependencies {
//省略
}
これでkotlinファイル側でAPI keyを取得する準備が整いました。
手順3:Kotlinファイルで使用する
あとは任意のkotlinファイルで使用するだけです。
MainActivity.kt
val supabase = createSupabaseClient(
//ここでlocal.propertiesに保存したSUPABASE_URLとSUPABASE_KEYを取得している
supabaseUrl = BuildConfig.SUPABASE_URL,
supabaseKey = BuildConfig.SUPABASE_KEY,
) {
install(Postgrest)
}
うまくいかないとき確認したこと
以下は自分がうまくいかなかったときに確認したことです。
- local.propertiesで変数名とデータの間にスペースが入ってないか
- build.gradle.kts(app)のbuildConfigFieldで指定している変数名と local.propertiesで指定している変数名が一致しているか
- build.gradle.kts(app)でbuildConfig = true を追加しているか
Discussion