【Android Studio】Api keyを始めとしたgit管理したくない定数を環境変数で管理する
Api keyやGoogle AnalyticsのトラッキングIDなんかは、ハードコーディングしてgithub等でオープンにするのが好ましくないですよね。
そこでOS Xの環境変数にそれらを登録しておき、Android Studioのビルドの際に参照するようにして回避しましょう。
OS Xの環境変数にkeyを登録する
ターミナルから以下を実行します。
$ launchctl setenv APIKEY hogehoge
APIKEYがkey、hogehogeがvalueにあたるKeyValue形式です。
build.gradleから環境変数を参照する
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// 環境変数を参照する
manifestPlaceholders = [api_key: System.getenv("APIKEY")]
}
}
環境変数のAPIKEYを参照し、api_keyへ格納しています。
AndroidManifest.xmlからmanifestPlaceholdersを参照する
<application>
<meta-data android:name="apiKey" android:value="${api_key}"/>
</application>
javaプログラムの中からAndroidManifest.xmlのmeta-dataを参照する
String key = "";
try{
ApplicationInfo info
= getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
key = info.metaData.getString("apiKey");
}catch(PackageManager.NameNotFoundException e){
e.printStackTrace();
}
// keyを使った処理〜〜
これでString keyはhogehogeになっています。
Windowsから環境変数を登録し参照することは検証していないです。
ありがとうございました。
参考
AndroidManifest.xmlにAPIキーを書いたコードをGitHubにコミットしないために AndroidManifest.xmlに記述したメタデータを取得する