🔑
[kotlin][android]secrets-gradle-plugin: APIキーなどの秘匿情報をgit管理から外す
はじめに
API keyのようにgit管理したくないものをどうやって扱えばいいか悩んだ。
いつもなら何も考えず.envを作って管理するのだが
ふと思い立って公式を見ると以下の記載があった。
プロジェクトで API キーを操作するには、代わりに secrets-gradle-plugin などの Gradle プラグインを使用してください。
ということで今回はsecrets-gradle-pluginの使い方を見ていこう。
secrets-gradle-plugin
まずは概要から
APIキーなどの情報をgit管理から外しつつ、プロジェクト内で使うためのプラグインです。
Google公式が出しているため安心感があります。
使い方等は公式のソースのREADMEを見るのがわかりやすい
やり方
1. ライブラリのインポート
secrets-gradle-pluginをプロジェクトに導入
アプリレベル(プロジェクトルート直下)のbuild.gradle.ktxに以下を追加
buildscript {
dependencies {
classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1")
}
}
モジュールレベル(Appディレクトリ配下)のbuild.gradle.ktxに以下を追加
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
// 下を追加
id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
}
2. 隠したい情報を追加
local.propertiesに以下の形式で情報を追加する
secretApiKey = hogehogehoge
secretInformation = hugahugahuga
その際に念の為、gitignoreでlocal.propertiesが隠されているかどうか確認しておこう。
上記ができたら一度ビルドしておく。
3. 呼び出し
後はアプリのコードの中から以下の形式で呼び出そう
val apiKey = BuildConfig.secretApiKey
AndroidManifestから呼び出したい場合は以下の形式で呼び出せるらしい
<meta-data android:value="${secretApiKey}" />
注意点
上記の設定を全て行ってもコードからBuildConfigが呼び出せないことがある。
その場合、プロジェクトの設定としてBuildConfigを呼び出せるようにしてあげなければいけない。
buildFeatures {
buildConfig = true
}
Discussion