質問: パッケージ名に一致するクライアントが見つかりません(google analytics) - 複数の製品フレーバーとビルドタイプ コンテキスト: 私は自分のアプリ用にgoogle analyticsを設定しようとしています。 (4つのカスタムbuildtypesと数個以上のproductflavorsを持つ)applicationidがbuild variant(com.my.app.package.nameの生成時に使用されたパッケージ名)に設定されているgoogle-services.jsonを選択した場合は、うまくいきます。しかし、私の他のフレーバーは異なるapplicationidsを持っています。それを設定するために 公式のdevguide に従いました。別のビルドバリアントがbuild variants tabで選択されている(異なるapplicationid(パッケージ名)が次のようになっているとエラーが発生します)。 エラー:タスク ':app:processallcategoriesdebugfreegoogleservices'の実行に失敗しました。 パッケージ名 'com.my.app.package.name.debug'に一致するクライアントが見つかりませんでした エラーメッセージの説明: 上記のエラーメッセージのタスク名ではdebugfreeは私のカスタムbuildtypeで、allcategoriesは私のproductflavorsです。 私はエラーを理解し、パッケージ名がjsonを生成するときに使用したものとは異なることを知っていますが、それが私が回避する方法を考えているものです 問題: 現在、google-services.jsonはappフォルダーにあるため、それらをフレーバー固有のソースセットフォルダーにドロップしても、製品のフレーバーごとにそれらを区別することはできません。 質問: デバッグ用の私のカスタムbyildtypeは、.debugのapplicationid(パッケージ名)の接尾辞です。私のリリースがapplicationidであるgoogle-services.jsonで動作させることができる方法はありますか(つまり、接尾辞.debugを付けずに) 必要なファイルをappフォルダーにコピーするために別々のファイルやタスクを使用せずに、同じgoogle-services.jsonファイルに複数の製品フレーバーを構成する方法はありますか。 この記事 で述べたようにtaskを使ってできることを私は知っています。 gradle構成に基づいて1つのファイルを作成するか、正しいファイルを選択する簡単な方法はありますか? package_nameのgoogle-services.jsonフィールドのパッケージ名はcom.my.app.package.nameです。すべてのビルドバリアントで機能するように手動で複数のパッケージ名を追加できますか?もしそうなら、どうやってそれをするのですか?ドキュメントに指示が見つかりませんでした。
回答: 私は2つのソースセット、1つは無料、もう1つは有料を作ることでそれを解決しました。これらのフォルダには、必要なjavaコードとリソースファイルが含まれており、それらは特定のフレーバーの要件に合わせて編集されます。たとえば、javaクラスとレイアウトファイルの両方から、有料のadmobコードを削除します。