[Android] パッケージ名に一致するクライアントが見つかりませんでした(Googleアナリティクス) - 複数のproductFlavors&buildTypes


Answers

google-services.jsonでパッケージ名を確認する

"client_info": {
    "mobilesdk_app_id": "1:6596814400689:android:65d6f25f5006145",
    "android_client_info": {
      "package_name": "com.my.app.package.name"
    }
Question

コンテキスト:

私は自分のアプリ用にGoogle Analyticsを設定しようとしています。 (4つのカスタムbuildTypesと複数のbuildTypesを持つ)

これは、 applicationId com.my.app.package.namegoogle-services.json生成するときに使用されるパッケージ名)に設定されたBuild Variantを選択するとうまく動作しgoogle-services.json 。 しかし、私の他の味は異なったapplicationIdsを持っています。

私はそれを設定するために、 正式なdevguideに従った。

Build Variants Tab (他のapplicationId (パッケージ名)を持つBuild Variants Tabで別のビルドバリアントが選択されたときにエラーが発生する:

エラー:タスク ':app:processAllcategoriesDebugfreeGoogleServices'の実行に失敗しました。

パッケージ名 'com.my.app.package.name.debug'に対して一致するクライアントが見つかりませんでした

エラーメッセージの説明:

上のエラーメッセージのタスク名でDebugfreeは私のカスタムbuildTypeあり、 Allcategoriesは私のproductFlavors 1つです。

私はエラーを理解し、パッケージ名が私がjsonを生成するときに使用したものと異なっていることを知っていますが、それは私が周りの方法を考えようとしているものです。

問題:

さて、 google-services.jsonappフォルダにあります。したがって、フレーバー固有のソースセットフォルダにドロップすることで、それぞれのフレーバーごとに分離することができません。

質問:

  1. 接尾辞.debugapplicationId (パッケージ名)にデバッグするための私のカスタムbyildType 。 私はそれが私のリリースのapplicationIdを持っているgoogle-services.json (つまり、接尾辞.debug )で動作させる方法がありgoogle-services.json.debug
  2. 必要なファイルをappフォルダにコピーするために別々のファイルやタスクを使用せずに、同じgoogle-services.jsonファイルに複数の製品のフレーバーを設定する方法はありますか? 私はそれがこのポストで言及されたtaskを使用して行うことができることを知っています。 1つのファイルを持つか、またはgradle構成に基づいて正しいファイルを選択する簡単な方法はありますか?
  3. google-services.json package_nameフィールドにパッケージ名com.my.app.package.nameます。 すべてのビルドバリアントで手動で複数のパッケージ名を追加することはできますか? はいの場合、それを行う方法? 文書で指示を見つけることができませんでした。



これはあなたのgoogle-services.jsonファイルがあなたのアプリケーションに属していないことを意味します(google-services.jsonを別のアプリケーション用にダウンロードしましたか?)...これを解決するには、

1:Firebaseにサインインしてプロジェクトを開きます。 2:設定アイコンをクリックし、プロジェクト設定を選択します。 3:あなたのアプリカードで、設定ファイルが必要なアプリのパッケージ名をリストから選択します。 4:google-services.jsonをクリックします。 ダウンロードが完了したら、新しいgoogle-services.jsonをプロジェクトのルートフォルダに追加し、既存のものを置き換えるか、古いものを削除します。 あなたの最初のプロジェクトのgoogle-services.jsonをダウンロードして、この特定のgoogle-services.jsonがあなたの現在のプロジェクトだけに合っていると仮定するか、忘れてしまいます。




Google-services.jsonファイルを開き、ファイル内の次のセクションを探します。

"client": [
{
  "client_info": {
    "mobilesdk_app_id": "1:857242555489:android:46d8562d82407b11",
    "android_client_info": {
      "package_name": "com.example.duke_davis.project"
    }
  }

パッケージがパッケージ名と同じかどうかを確認してください。 私のものは違っていたので、私はそれを変更し、それは働いた。




私はここで同じ問題を解決した簡単な解決策: firebase接続を作成するときには、次のガイドラインに従ってください:

  • firebaseにアプリケーション名を追加する

  • あなたのアプリケーションのpakageの名前を追加する(同じpakageの名前を書いて、あなたはアプリで使っている)

  • firebaseがgoogle-services.jsonファイルをダウンロードしてアプリのフォルダに貼り付けるだけです

  • あなたのプロジェクトを同期する問題は解決しました:)

    ありがとうございました




あなたのパッケージの名前を変更した後にgradleファイル内のApplicationIdの名前を変更することを確認してください




私は解決策を見つけました:

firebaseプロジェクトに2つの "apps"を作成しなければなりません。そして、私たちは任意の1つのアプリケーション(味付けされたアプリからダウンロードしたもの)からjsonファイルをダウンロードできます。 両方のアプリのデータが含まれます。 jsonファイルをアプリのルートディレクトリにコピーするだけです。

出典: https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html : https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html




Google-services.jsonファイルのパッケージ名が大丈夫なら、gradle.propertiesファイルに移動してください。 その後、あなたのAPPLICATION_ID = "com.yourpackage.name"




私は2つのソースセットを作成して解決しました.1つは無料で、もう1つは有料でした。 これらのフォルダには、必要なJavaコードとリソースファイルが含まれます。これらのファイルは、特定のフレーバの要件に合わせて編集されます。 たとえば、Javaクラスとレイアウトファイルから有料のAdMobコードを削除したいとします。




私はファイルgoogle-services.json再同期して同じ問題を解決しました。

ツール> Firebase> Firebaseへの接続>同期




単純な。 Android Studioからログアウトし、完全に閉じます。 Androidスタジオを再度開き、もう一度Android Studioにログインします。

次に、AndroidスタジオIDEからFirebaseに接続してみます。 この手順は私のために働いた。






Links