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





13 Answers

google-services.jsonでパッケージ名を確認すると、アプリのローカルパッケージ名と同じになるはずです

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

この場合、私のローカルパッケージ名はcom.my.app.package.nameなので、私もローカルパッケージ名でgoogle-services.jsonでパッケージ名を変更しました

コンソール プロジェクト 移動

コンテキスト:

私は自分のアプリ用に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ます。 すべてのビルドバリアントで手動で複数のパッケージ名を追加することはできますか? はいの場合、それを行う方法? 文書で指示を見つけることができませんでした。



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

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




package nameを作成または更新するときはいつでもあなたのパッケージ名がまったく同じであることを確認してください[大文字と小文字の区別]

次のステップを実行します。

1)。 アプリケーションレベルのgradleファイルでapplicationIdを確認し、

2)。 google-services.jsonファイルのpackage_nameを確認し、

3)。 あなたのAndroidManifestファイルのpackageをチェックする

完全な確認のためには、作業パッケージのディレクトリ名ie( "com.example.app")も同じです。




google-services.jsonの client_idpackage_nameがパッケージ名に従って正しい値を持っているかどうかを確認します。

前述のファイルをflavorsディレクトリに、対応するパッケージ名をclient_idおよびpackage_nameフィールドに追加する必要があります。




イムはネイティブの反応から来ているが、私はこれもこの質問に当てはまると思う。 指定します。

ファイル内のandroid/app/build.gradleapplicationId検索しapplicationIdandroiddefaultConfig内)

その値が同じであることを確認します

client[0]client_info.android_client_info.package_name

google-services.json内の値として使用しgoogle-services.json




また、 google-services.jsonでパッケージ名を変更する必要があります




私の問題は、「com」で始まらなかったパッケージ名でした。 それを変更しました、今それは動作します。

助けてくれる希望




まず、Gradleのアプリケーションパッケージに接尾辞を追加します。

yourFlavor {
   applicationIdSuffix "yourFlavor"
}

これにより、パッケージの名前が付けられます

com.domain.yourapp.yourFlavor

次に、あなたの現在のプロジェクトの下にあるFirebaseに行き、このパッケージ名で別のアンドロイドアプリを追加します。

次に、既存のgoogle-services.jsonファイルを新しいアプリで生成した新しいものに置き換えます。

次に、複数の「client_info」セクションを持つものになります。 だから、あなたはこのようなものになるはずです:

"client_info": {
    "mobilesdk_app_id": "YOUR APP INFO",
    "android_client_info": {
      "package_name": "com.domain.yourapp"
    }
  }

"client_info": {
    "mobilesdk_app_id": "YOUR APP INFO - will be different then other app info",
    "android_client_info": {
      "package_name": "com.domain.yourapp.yourFlavor"
    }
  }



android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.package.name"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

Gradle.appのapplicationIdがパッケージ名と同じであることを確認してください。 私の問題はこれで、私はこのように解決した




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

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




google-services.jsonファイルに移動し、クライアント部分でパッケージ名を確認し、Appパッケージ名と比較して異なる場合は、アプリパッケージ名に従ってクライアントパッケージ名を変更してください。

google-services.jsonファイル - > "package_name": "com.example.application.tracker"

アプリケーションパッケージ名 - >パッケージ "com.example.application.tracker";




私は自分のアプリケーションのパッケージ名を変更するときにもこの問題が発生します。

あなたのAndroidスタジオプロジェクトで、 "google-services.json"ファイルを探します。 それを開く。 アプリケーションのパッケージ名がこのファイルに書かれているものと同じかどうかを確認してください。

"google-services.json"ファイルに書かれたアプリケーション名とパッケージ名は同じでなければなりません。




これを解決するのは簡単です:app / build.gradleファイルのパッケージ名がApp Manifestファイルのパッケージ名と同じであることを確認してください。 パッケージ名が正しいことを確認してください。 これで解決するはずです




Related