【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に記述したメタデータを取得する