Androidにてアプリを開発されている方々では常識だと思いますが、デフォルトで、debug/releaseとビルドを分けることができるようになっています。また、Flavorを使って、さらに細かくビルドを分けることができ、これらを使って複数のビルドを作成されている開発者の方も多くいらっしゃると思います。
これらのバリアントごとにNew Relicのキーを分けるための実装方法はいくつもあると思いますが、1つの例をこちらのブログで紹介します。
なお、本ブログは、こちらに記載の方法をわかりやすく解説したブログになります。
また、Android Agentの組み込みに関して、基本的にはドキュメントやUI上にて表示されるインストールガイドに従ってください。それらを行ったうえで、追加でご対応いただくこととなります。
まず、アプリレベルのbuild.gradleと同じフォルダに、newrelic-util.gradle
というファイルを作成し、以下のコードをそのまま貼り付けて保存してください。
なお、本コードで行われていることは、主に以下のとおりです。
- リソースフォルダにあるapi.xmlからnew_relic_key名前に格納されている値(APIキー)を取得する
- ビルド時に
newrelic.properties
を作成し、APIキーの内容を保存する - clean時に
newrelic.properties
を削除する
続いて、上記gradleスクリプトを実行するため、アプリレベルのbuild.gradle.ktsに以下のようにapplyを追加します。
なお、上記はgradleにKotlin DSLを利用した場合となります。Groovyを利用されている場合は、以下をコピーしてください。
続いて、APIキーの内容をリソースファイルに保存します。対象のプロジェクトの各ビルドバリアント用のフォルダのres/values配下にapi.xmlを作成してください。
続いて、api.xmlを以下のように編集して、対象のビルドバリアントで利用するAPIキーを設定してください。
続いて、Agentの初期化も上記リソースから読み込むように修正します。Agentの初期化するコードをLaunch activityに設定されていると思いますが、そちらを以下のように修正してください。
これで、終了です。APIキーがビルド時及び、起動時の両方にて、api.xmlに保存したキーが利用されるようになりました。アプリをビルドして、期待通りに動作する確認してみてください。
注意事項
複数のバリアントのビルドを並行して実行しないようにしてください。
newrelic-util.gradleにて設定されたスクリプトを理解された方はわかると思いますが、ビルド時にnewrelic.propertiesのファイルを作成しています。そのため、複数のバリアントのビルドを同時に実行した場合、異なるバリアントのキーが適用されることになり、Mapファイルのアップロードで利用されるキーが想定していたキーとは異なるキーが利用される可能性があります。
なお、mapファイルのアップロードはデフォルトではReleaseビルドのみとなっています。Debugビルドでもmapファイルをアップロードされる場合は、こちらのドキュメントに従い、設定を変更してください。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。