【Kotlin/Android】秘匿情報をgradle.propertiesで管理する方法!
この記事からわかること
- Android Studio/Kotlinで秘匿情報を管理する方法
- gradle.propertiesを読み込むには?
- propertiesファイルの作成方法
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
秘匿情報を管理する方法
android Studioでサーバーキーや広告IDなど秘匿情報はプロジェクト内にハードコードしないように注意が必要です。シークレットにしたい情報はgradle.properties
や独自にproperties
ファイルを生成して一元管理すると間違えて公開してしまうリスクを減らすことができます
gradle.propertiesで管理する
gradle.properties
はGradleビルドシステムにおけるプロジェクトの構成情報を定義するためのプロパティファイルです。Androidプロジェクトを生成するとルートディレクトリにgradle.properties
があります。
中身を見ると色々な設定が記述されていますが、一番下などにキーと値をCLIENT_ID=XXXXXXXX
のように記述します。
// 〜〜〜〜〜〜〜
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official
# Enables namespacing of each library's R class so that its R class includes only the
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
CLIENT_ID=XXXXXXXX
次に「build.gradle(app)」ファイル内にbuildConfigField
を使用して以下のように読み込みます。参照するときはproject.properties[キー]
形式で指定します。
defaultConfig {
// 〜〜〜〜〜〜〜
buildConfigField("String", "CLIENT_ID", "\"${project.properties['CLIENT_ID']}\"")
}
これでBuildConfig
クラスから指定したキーでgradle.properties
に定義した値を取得することができるようになります。
BuildConfig.CLIENT_ID
独自にpropertiesファイルを用意する
既存のgradle.properties
を使用せずに独自にproperties
ファイルを用紙して同じ手順で読み込むことも可能です。例えばルートディレクトリにsecret.properties
を用意します。
CLIENT_ID=XXXXXXXX
「build.gradle(app)」ファイル内ではまだsecret.properties
を参照できないのでsecretProperties
変数を用意して先ほどのsecret.properties
を読み込みます。
plugins {
// 〜〜〜〜〜〜〜
}
// 以下を追加
def secretPropertiesFile = rootProject.file("secret.properties")
def secretProperties = new Properties()
secretProperties.load(new FileInputStream(secretPropertiesFile))
android {
// 〜〜〜〜〜〜〜
}
あとは同じ容量でbuildConfigField
を定義するだけです。project.properties[キー]
形式ではなくsecretProperties[キー]
になるので注意してください。
defaultConfig {
// 〜〜〜〜〜〜〜
buildConfigField("String", "CLIENT_ID", "\"${secretProperties['CLIENT_ID']}\"")
}
.gitignoreに追加するのを忘れないように
生成したsecret.properties
はそのままではGitの管理対象になってしまうので.gitignore
ファイルに追加しておきましょう。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。