![見出し画像](https://assets.st-note.com/production/uploads/images/49247247/rectangle_large_type_2_59d966bef29caed2982a0d7bb7711791.jpeg?width=1200)
Secrets Gradle Pluginを使ってAndroidアプリのAPIキーをリポジトリから隠す方法
間違って流失してしまうと高額な被害を及ぼす可能性のあるAPIキーを、悪用からどうやって守ればいいのでしょうか?この記事では、GoogleのSecrets Gradleプラグインを使って、比較的簡単なセットアップでリポジトリからAPIキーを隠す方法を紹介します。
注意:APIキーバイナリの一部なので、APKを逆コンパイルすることで復元可能です。そのため、(可能であれば)APIに制限を加えるなど、他の手段も加えて保護することをお勧めします。
プラグインのセットアップ
Groovyを使ってる場合はアプリレベルのbuild.gradle、Kotlinを使っている場合はbuild.gradle.ktsでプラグインを指定してください。
この記事の例ではbuild.gradle.ktsを使用します。
ソースフォルダ内のlocal.propertiesにAPIキーが記録されている場合はこのステップはスキップしてもらって構いません。
もし、他の任意のファイルにAPIキーが含まれている場合は、そのファイルを指定します。
これらのファイルはソースコントロールから外されているよう注意してください(レポジトリにアップロードされるのを防ぐには.gitignoreファイルに追加する必要があります)。
この記事では、secrets.propertiesにAPIキーが記録されているとします。
Gradleファイルに以下のコンフィグレーションコードを追加してください。
プロジェクトの構築
ここで一度プロジェクトを構築してください。プラグインを適用してプロジェクトを構築すると、APIキーは2つの方法でアクセスできるようになります。
安全に使用
これでソースコード全体から、APIキーを直接参照および表示することなく安全に使えるようになりました。
今まで、この様に流失しやすい形で使用されていたAPIリクエストが
露出していて悪用されやすいトークンの使用例
安全で読みやすい形式に変わりました。
ビルドバリアント固有のプロパティ
ビルドバリアント固有のプロパティ(ビルドタイプやフレーバー)を設定するには、プロジェクトのルートディレクトリに、バリアントと同じ名前のプロパティファイルを作成してください。例えば、ビルドタイプ「release」に固有のキーを設定するには、release固有のキーを含むrelease.propertiesというファイルを新規に作成して、それを参照してください。