web-dev-qa-db-ja.com

パッケージ名に一致するクライアントが見つかりません(Google Analytics) - 複数の製品フレーバーとビルドタイプ

コンテキスト:

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

applicationIdBuild Variantcom.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.jsonappフォルダーにあるため、それらをフレーバー固有のソースセットフォルダーにドロップしても、製品のフレーバーごとにそれらを区別することはできません。

質問:

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

これが見つかりました:

Google-services.jsonファイルは通常app /ディレクトリただし、プラグインサポートのバージョン2.0.0-alpha3はビルドタイプ用に追加されましたに配置されます。これにより、次のディレクトリ構造が有効になります。

app/src/
    main/google-services.json
    dogfood/google-services.json
    mytype1/google-services.json
    ...

出典

ソース2

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 にある私のパッケージ名も自分のローカルパッケージ名で変更しました。

234
Muhammed Fasil

"google-services.json"ファイルのパッケージ名がアプリのパッケージ名と同じであることを確認してください。

58
cahit beyaz

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

Firebaseプロジェクトに2つの「アプリケーション」を作成する必要があります。その後、任意の1つのアプリケーションからjsonファイルをダウンロードできます(私はフレーバーアプリケーションからダウンロードしました)。両方のアプリのデータが含まれています。 jsonファイルをアプリのルートディレクトリにコピーするだけです。

ソース: https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-Android-app-builds.html

49
Usman

パッケージ名 'com.tf'に一致するクライアントが見つかりません google-services.jsonの "package_name"が、アプリのGradleの "applicationId"と一致していないことを確認します。

アプリgradle:

defaultConfig {
        applicationId "com.tf" //replace with the package_name in google-services.json =
        minSdkVersion 23
        targetSdkVersion 26
        versionCode 7
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }

google-services.json

"client_info": {
        "mobilesdk_app_id": "1:23978655351:Android:2b2fece6b961cc70",
        "Android_client_info": {
          "package_name": "in.ac.geu.debug"
        }
      },

解決策 package_nameapplicationIdが同じであることを確認してください。

35
Kailash Karki

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

以下の手順を実行してください。

1)。 AppレベルのapplicationIdファイルでgradleをチェックします。

2)。 package_nameファイルのgoogle-services.jsonを確認してください。

3)。 packageファイルのAndroidManifestを確認してください。

完全に確認するには、作業パッケージのディレクトリ名を 、すなわち( "com.example.app") にしてください。

27
Ravi Vaniya

google-services.jsonapp/ dirに配置する必要があります。そしてそれぞれのビルドタイプについて、app/srcフォルダーにアコーデオンディレクターがいるはずです。

たとえば、リリースとデバッグがあるとします。

app/google-services.json
app/src/debug/google-services.json

すべてのgoogle-services.jsonファイルで、ビルドタイプに従って正しいpackage_nameを指定する必要があります。

たとえば、debug dirの中では、{com.myapp}.debugのようになります。

26
Bogdan Ustyak

google-services.json client_idpackage_nameがあなたのパッケージ名に従って正しい値を持っているか確認してください。

言及したファイルを、client_idおよびpackage_nameフィールドに対応するパッケージ名を付けてflavorsディレクトリに追加する必要があります。

14
Shayan Amani

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

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

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

14

パッケージの名前を変更した後は、gradleファイルでApplicationIdの名前を変更してください。

12
Arsalan Shah

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

ファイルAndroid/app/build.gradle内でapplicationIdを検索します(Android内、defaultConfig内)

そしてその値が同じであることを確認してくださいこれ

client[0]client_info.Android_client_info.package_name

google-services.json内の値として。

11
ThomasReggi

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

8
S H Mehdi

Google-services.jsonファイルのパッケージ名が正しい場合は、gradle.propertiesファイルに進みます。その後、APPLICATION_ID = "com.yourpackage.name"を変更してください。

8
Dulal Kisku

最初に、Gradleのアプリケーションパッケージにサフィックスを追加します。

yourFlavor {
   applicationIdSuffix "yourFlavor"
}

これによりあなたのパッケージは命名されるでしょう

com.domain.yourapp.yourFlavor

それからあなたの現在のプロジェクトの下でFirebaseに行き、このパッケージ名でそれに別のAndroidアプリを追加してください。

次に、既存の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"
    }
  }
7
Droid Chris

Firebase jsonファイル "google-services" .jsonを新しいファイルで追加したと思います。新しいファイルを作成することを忘れないでください firebaseからjsonファイルを作成する方法についてのリンクをチェックしてください そしてそれはあなたのパッケージ名と一致するべきです

2つ目は、パッケージ名を変更している場合は、ドロップダウンからプロジェクトを選択したときにファイルの下を右クリックしたときに[パスで置換]オプションを使用することです。プロジェクト全体でパッケージ名を検索して置き換える必要があります。

お役に立てれば !

5
Ashok Kumar K R
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があなたのパッケージ名と同じであることを確認してください。私の問題はこれであり、私はこの方法で解決した

4

それがどれもあなたの1人のために働かなかったら、私の問題は「com」で始まっていなかったパッケージ名にあった。それを変えました、今それは働きます。

それが役立つことを願っています

4
eiran

プロジェクトディレクトリに移動し、app/srcパスに製品の種類(Alpha、Beta、Storeなど、名前の種類など)を指定するフォルダを作成します。その後、google-services.jsonファイルを各フォルダにコピーします。サブフォルダーに入れた各製品フレーバーのgoogle-services.jsonファイルの "package_name"フィールドを忘れずに変更してください。

3
Osman Yalın

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

  • Firebaseにあなたのアプリケーション名を追加してください

  • アプリケーションのパッケージ名を追加します(同じパッケージ名を書いて、アプリで使用しています)。

  • firebaseを作るとき google-services.json file just ダウンロード it and paste それをあなたのアプリフォルダに入れる

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

    ありがとうございました

2

Google-services.jsonファイルに移動し、クライアント部分でパッケージ名を確認して、それらが異なる場合はアプリパッケージ名と比較して、それが私のためにうまくいったあなたのアプリパッケージ名に従ってクライアントパッケージ名を変更します.

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

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

2
Shah Rukh

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

2
Abhiroj Panwar

私はファイルgoogle-services.jsonを再同期することによって同じ問題を解決しました。

ツール> Firebase> Firebaseに接続>同期

2
Nabin Bhandari

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

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

1
RileyManda

私は私のアプリケーションのパッケージ名を変更したときにもこの問題に遭遇します。

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

アプリケーションのパッケージ名と "google-services.json"ファイルに書かれているパッケージ名は同じである必要があります。

1
mehmoodnisar125

1.検証 パッケージ名 および アプリケーションID は同じである必要があります

2.Verify google-services.jsonパッケージ名 appフォルダにあります

1

アプリのbuild.gradleファイルでapplicationIdSuffixを確認してください。それがあなたのapplicationIdに何らかのテキストを連結しているかどうかを見てください。もしそうなら、それを削除します。

0
Arsalan Shah

このエラーは、パッケージ名がプロジェクトのパッケージ名と一致しないGoogleサービスJsonファイルがプロジェクトにダウンロードされている場合に発生します。

最近プロジェクトのパッケージ名を変更しましたか?これはすべてのクラスを更新します しかしGradleファイルは更新しません 。それであなたのパッケージ名があなたのGradleで正しいかどうか、そしてまた多分Manifestもチェックしてください。

0
devDeejay