パッケージ名(Google Analytics)に一致するクライアントが見つかりません-複数のproductFlavorsとbuildTypes [終了]


383

環境:

アプリにGoogleアナリティクスを設定しようとしています。(4つのカスタムbuildTypesといくつか以上productFlavors

(の生成時に使用されるパッケージ名)が設定されBuild Variantているを選択すると、問題なく動作します。しかし、他のフレーバーは異なるapplicationIdを持っています。applicationIdcom.my.app.package.namegoogle-services.json

私は、その後公式Devguideにそれを設定するために。

別のビルドバリアントが選択されているときに発生するエラー(パッケージ名がBuild Variants Tab異なるapplicationId)は次のとおりです。

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

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

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

上記のエラーメッセージでのタスク名ではDebugfree私の習慣であるbuildTypeAllcategories、私の一つですproductFlavors

私はエラーを理解し、パッケージ名がjsonを生成するときに使用したものとは異なることを知っていますが、それは私が回避策を模索しているものです。

問題:

現在、はフォルダーにgoogle-services.json常駐しappているため、フレーバー固有のソースセットフォルダーにドロップしても、製品フレーバーごとにそれらを分離することはできません。

質問:

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

1
特に3番目の質問のために、soutionを見つけましたか?
メイトメイト

私も同じような状況です。製品リリースのフレーバーバージョンのみの分析サポートが必要です。追加された依存関係をprod-flavour に制限することはできましたが、それでも息子ファイルの一部として正しいパッケージを検索します。なにか提案を !
CoDe

1
私も同じ問題に直面しています。誰かがこの解決策を見つけたら教えてください。
Deepanshu Sinha

回答:


382

あなたにあなたのパッケージ名を確認 グーグル-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-services.jsonはファイルです!!! アプリディレクトリ内。Windowsエクスプローラなどを使用して、このファイルを見つける必要があります。通常のエディタでこのファイルを編集する必要があります。
user_MGU 2018

アンドロイドStudioのプロジェクトビューにこの行くを見つけて、アプリのパッケージ内検索する
ガストンSaillén

12
いいえ...私たちは皆、この問題ではgoogle-services.jsonが無効であることを知っています... ビルドバリアントの状況でこの問題を解決する方法が必要です!!
MJ Studio


アクティビティが次のようなサブパッケージにある場合:com.example.aaron.myproject22.Activities .... google-services.jsonに移動し、client_infoのpackage_nameをcom.example.aaron.myproject22に変更する必要もあります。 build.grade(モジュールアプリ)の最下部にplugin: 'com.google.gms.google-services'を適用している
WHOATEMYNOODLES

224

これが見つかりました:

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

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

ソース

ソース2


16
ビルドタイプの分析を簡単に無効にする方法はありますか?デバッグのために無効にしたいですか?google-servicesファイルを追加しないと無効になると思っていましたが、無効にしてもgoogle-servicesファイルを要求されます。
Gokhan Arik 2016

2
各josnファイルが各フレーバーに追加された違いは何ですか?
Android

2
モジュール(2つのアプリが共有する)内でgoogleサービスを使用する可能性はありますか?そのパッケージ用のgoogleサービスファイルがないと、gradle-syncさえできません...埋め込みアプリはjsonを提供する必要がありますが、モジュールではありません。とにかくこれは可能ですか?
Georg

99

パッケージ名「com.tf」一致するクライアントが見つかりません。google -services.jsonの「package_name」がアプリグラドルの「applicationId」と一致していないことはほぼ間違いありません。

アプリグラドル:

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ください。


4
著者はこれに対する回避策について尋ねていました。それらは異なるapplicationIdを持つ異なるビルドタイプを持っています
Dmitry Guselnikov

あなたは最も有効な解決策を与えました。賞賛マン!!
Devansh sadhotra

application idそれを釘付けアプリケーションのGradleで
BlackPearl

69

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


4
新しいプロジェクトのリポジトリをフォークするときの一般的な問題。
Zapnologica 2017

1
はい、両方のパッケージ名が機能していない場合と同じでなければ
Priya

63

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

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

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


10
すべての製品フレーバーを1つのjsonファイルでカバーできるため、これが最良の答えです。他のソースセットを作成する必要はありません。
タシュペミワ2017

2
同じプロジェクト内でアプリを作成する必要があることに注意してください。左上のプロジェクトの概要には、設定アイコンがあります。それを押すと、[全般]タブが開き、下にスクロールして、[アプリ]セクションの下に[アプリを追加]ボタンがあります
galaxigirl

最大の問題は、google-service.jsonを変更し忘れて本番環境にプッシュするときに発生します。
Edgar Khimich

36

あなたは配置する必要があるgoogle-services.jsonapp/DIR。また、ビルドタイプごとに、一致するディレクターが app/srcフォルダー内にます。

たとえば、リリースとデバッグがある場合:

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

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

たとえば、デバッグディレクトリ内では次のようになります。 {com.myapp}.debug


5
どうやら、メインセットの要素を"client"の配列に複製して(要素の間にコンマを追加)"package_name"、新しい要素のの値だけを変更して、.debugサフィックスを含めることもできます。その後、再構築します。AS 2.3.3ではうまくいきました。
et_l 2017

36

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

最近プロジェクトのパッケージ名を変更しましたか?

すべてのクラスは更新されますが、Gradleファイルは更新されませ。したがって、Gradleでパッケージ名が正しいかどうか、またマニフェストも正しいかどうかを確認してください。


1
ありがとうございました
サーワンラヒミ

32

作成または更新するときは常にpackage name、パッケージ名が完全に同じであることを確認してください[大文字と小文字の問題]

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

1)。applicationIdアプリレベルのgradleファイルをチェックインし、

2)。ファイルをチェックpackage_nameインしgoogle-services.json

3)。ファイルをチェックpackageインするAndroidManifest

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


2
おかげでそれは私のために働きました。アプリレベルのgradleファイルで私のパッケージは異なっていました。私がそれを変更したときそれは私のために働きました
fazil

wel come @fazil
Ravi

アプリIDを変更するためpackage、マニフェスト(およびすべてのパッケージのすべてのファイル)を変更する必要はありませんapplicationId
CoolMind 2019

22

まず、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"
    }
  }

これが正解です。google-services.jsonファイルには両方のアプリ(ID)が必要です。
Bojan Hrnkas

これが方法です。+1は、ここでいくつかのだ古い議論この問題に関し、
lasec0203

シンプルでわかりやすい。
Umair

20

チェックした場合client_idpackage_nameグーグル-services.jsonあなたのパッケージ名に応じた正しい値を持っています。

上記のファイルをフレーバーディレクトリに追加し、対応するパッケージ名をclient_idand package_nameフィールドに追加する必要があります。


20

1. パッケージ名アプリケーションIDを確認するが同じであることを確認します

2. appフォルダーにあるgoogle-services.jsonパッケージ名を確認します



17

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

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

パッケージがパッケージ名と同じかどうかを確認します。鉱山が違っていたので交換してみました。


働いた:)おかげで
ソリューションスピリット

11

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

ファイル内android/app/build.gradleの検索applicationId(内androiddefaultConfig

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

client[0]client_info.android_client_info.package_name

内の値としてgoogle-services.json


私も、これが最も当てはまることを感謝します
Jason Sebring


8

Google-services.jsonファイルのパッケージ名に問題がない場合は、gradle.propertiesファイルに移動します。次に、APPLICATION_ID = "com.yourpackage.name"を変更します


5

新しいファイルでfirebase jsonファイル "google-services" .jsonを追加したと思います。必ず新しいファイルを作成してください。firebaseからjsonファイルを作成する方法のリンクを確認してください。ファイルはパッケージ名と一致している必要があります。

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

お役に立てれば !


4

どれもうまくいかない場合、私の問題は「com」で始まらないパッケージ名にありました。変更しましたが、機能します。

それが役に立てば幸い


私のために働きました、ありがとう
Hasan Shouman 2017

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


3

プロジェクトディレクトリに移動し、製品のフレーバー(アルファ、ベータ、ストア、またはフレーバーの名前など)を指定したapp / srcパスにフォルダーを作成します。次に、google-services.jsonファイルを各フォルダーにコピーします。サブフォルダー化した各製品フレーバーのgoogle-services.jsonファイルの「package_name」フィールドを変更することを忘れないでください。


3

google-services.jsonファイルに移動し、クライアント部分でパッケージ名を確認し、異なる場合はアプリパッケージ名と比較します。次に、クライアントパッケージ名をアプリパッケージ名に応じて変更します。

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

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


2

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


2

ファイルを再同期することで同じ問題を解決しましたgoogle-services.json

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


どこでやったの?正確に何を置き換えますか?スクリーンショット?
Nasenbaer

Android Studioでそれを行うことができます(Firebaseプラグインを有効にする必要があります)。ファイルを更新しますgoogle-services.json
Nabin Bhandari、

2

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

  • Firebaseにアプリケーション名を追加します

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

  • firebaseがgoogle-services.jsonファイルを作成したら、それをダウンロードしてアプリフォルダーに貼り付けます

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

    ありがとうございました


2

アプリケーションのパッケージ名を変更すると、この問題も発生します。

Android Studioプロジェクトで「google-services.json」ファイルを見つけます。それを開く。アプリケーションのパッケージ名がこのファイルに記述されているものと同じかどうかを確認します。

アプリケーションのパッケージ名と「google-services.json」ファイルに記述されたパッケージ名は同じである必要があります。


1

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

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


1

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


1

あなたはこの問題を解決するためにそれを行うことができます。

ここに画像の説明を入力してください


3
これは問題を解決する代わりにマスクします。解決策については、他の回答を参照してください。
Vadim Kotov

スクリーンショットの代わりにコードを使用してください。アプリケーションのクローンの「モックアップ」だけを作成したいので、私の場合、あなたの答えは適切です。
user2078023

-1

単純な。Android Studioからサインアウトし、完全に閉じます。Android Studioを再度開き、Android Studioに再度サインインします。

次に、AndroidスタジオIDEからfirebaseに接続してみます。この手順でうまくいきました。


google-services.jsonが存在する場合、これは機能しません。google-services.jsonが存在する場合は削除する必要があります。
ディカ

これは、jsonファイル内のパッケージ名を変更した後、それを保存する前に1回機能します。Androidスタジオを閉じてから、jsonファイルを保存してスタジオを再起動する必要があります。
アニッシュクマー

-1

これを解決するのは簡単です。app/ build.gradleファイルのパッケージ名が、アプリマニフェストファイルのパッケージ名と同じであることを確認してください。そして、パッケージ名が正しいことを確認してください。これで解決するはずです

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.