🔑

[kotlin][android]secrets-gradle-plugin: APIキーなどの秘匿情報をgit管理から外す

2024/06/18に公開

はじめに

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