【Kotlin/Android】秘匿情報をgradle.propertiesで管理する方法!

この記事からわかること

  • Android Studio/Kotlin秘匿情報管理する方法
  • gradle.properties読み込むには?
  • propertiesファイル作成方法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

秘匿情報を管理する方法

android Studioでサーバーキーや広告IDなど秘匿情報はプロジェクト内にハードコードしないように注意が必要です。シークレットにしたい情報はgradle.propertiesや独自にpropertiesファイルを生成して一元管理すると間違えて公開してしまうリスクを減らすことができます

gradle.propertiesで管理する

gradle.propertiesGradleビルドシステムにおけるプロジェクトの構成情報を定義するためのプロパティファイルです。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ファイルに追加しておきましょう。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index