コンテキスト:
私は自分のアプリ用に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
です。すべてのビルドバリアントで機能するように手動で複数のパッケージ名を追加できますか?もしそうなら、どうやってそれをするのですか?ドキュメントに指示が見つかりませんでした。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-services.json"ファイルのパッケージ名がアプリのパッケージ名と同じであることを確認してください。
私は解決策を見つけました:
Firebaseプロジェクトに2つの「アプリケーション」を作成する必要があります。その後、任意の1つのアプリケーションからjsonファイルをダウンロードできます(私はフレーバーアプリケーションからダウンロードしました)。両方のアプリのデータが含まれています。 jsonファイルをアプリのルートディレクトリにコピーするだけです。
ソース: https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-Android-app-builds.html
パッケージ名 '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_name
とapplicationId
が同じであることを確認してください。
package name
を作成または更新するときはいつもあなたのパッケージ名が正確に同じであることを確認してください [大文字と小文字の関係]
以下の手順を実行してください。
1)。 AppレベルのapplicationId
ファイルでgradle
をチェックします。
2)。 package_name
ファイルのgoogle-services.json
を確認してください。
3)。 package
ファイルのAndroidManifest
を確認してください。
完全に確認するには、作業パッケージのディレクトリ名を 、すなわち( "com.example.app") にしてください。
google-services.json
をapp/
dirに配置する必要があります。そしてそれぞれのビルドタイプについて、app/src
フォルダーにアコーデオンディレクターがいるはずです。
たとえば、リリースとデバッグがあるとします。
app/google-services.json
app/src/debug/google-services.json
すべてのgoogle-services.jsonファイルで、ビルドタイプに従って正しいpackage_name
を指定する必要があります。
たとえば、debug dirの中では、{com.myapp}.debug
のようになります。
google-services.json のclient_id
とpackage_name
があなたのパッケージ名に従って正しい値を持っているか確認してください。
言及したファイルを、client_id
およびpackage_name
フィールドに対応するパッケージ名を付けてflavorsディレクトリに追加する必要があります。
Google-services.jsonファイルを開き、ファイル内でこのセクションを探します。
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:857242555489:Android:46d8562d82407b11",
"Android_client_info": {
"package_name": "com.example.duke_davis.project"
}
}
パッケージが自分のパッケージ名と同じかどうかを確認してください。私のものは違っていたので、私はそれを変えてそれはうまくいった。
パッケージの名前を変更した後は、gradleファイルでApplicationIdの名前を変更してください。
私はネイティブからの反応から来ていますが、これはこの質問にも当てはまると思います。指定します。
ファイルAndroid/app/build.gradle
内でapplicationId
を検索します(Android
内、defaultConfig
内)
そしてその値が同じであることを確認してくださいこれ
client[0]client_info.Android_client_info.package_name
google-services.json
内の値として。
また、 google-services.json でパッケージ名を変更する必要があります。
Google-services.jsonファイルのパッケージ名が正しい場合は、gradle.propertiesファイルに進みます。その後、APPLICATION_ID = "com.yourpackage.name"を変更してください。
最初に、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"
}
}
Firebase jsonファイル "google-services" .jsonを新しいファイルで追加したと思います。新しいファイルを作成することを忘れないでください firebaseからjsonファイルを作成する方法についてのリンクをチェックしてください そしてそれはあなたのパッケージ名と一致するべきです
2つ目は、パッケージ名を変更している場合は、ドロップダウンからプロジェクトを選択したときにファイルの下を右クリックしたときに[パスで置換]オプションを使用することです。プロジェクト全体でパッケージ名を検索して置き換える必要があります。
お役に立てれば !
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があなたのパッケージ名と同じであることを確認してください。私の問題はこれであり、私はこの方法で解決した
それがどれもあなたの1人のために働かなかったら、私の問題は「com」で始まっていなかったパッケージ名にあった。それを変えました、今それは働きます。
それが役立つことを願っています
プロジェクトディレクトリに移動し、app/srcパスに製品の種類(Alpha、Beta、Storeなど、名前の種類など)を指定するフォルダを作成します。その後、google-services.jsonファイルを各フォルダにコピーします。サブフォルダーに入れた各製品フレーバーのgoogle-services.jsonファイルの "package_name"フィールドを忘れずに変更してください。
私はここで同じ問題を解決する簡単な解決策です: firebase connectionを作成するときは、次のガイドラインに従ってください。
Firebaseにあなたのアプリケーション名を追加してください
アプリケーションのパッケージ名を追加します(同じパッケージ名を書いて、アプリで使用しています)。
firebaseを作るとき google-services.json file just ダウンロード it and paste それをあなたのアプリフォルダに入れる
プロジェクトを同期する問題は解決しました:)
ありがとうございました
Google-services.jsonファイルに移動し、クライアント部分でパッケージ名を確認して、それらが異なる場合はアプリパッケージ名と比較して、それが私のためにうまくいったあなたのアプリパッケージ名に従ってクライアントパッケージ名を変更します.
google-services.jsonファイル - > "package_name": "com.example.application.tracker"
アプリパッケージ名 - >パッケージ "com.example.application.tracker";
私は2つのソースセット、1つは無料、もう1つは有料を作ることでそれを解決しました。これらのフォルダには、必要なJavaコードとリソースファイルが含まれており、それらは特定のフレーバーの要件に合わせて編集されます。たとえば、Javaクラスとレイアウトファイルの両方から、有料のAdMobコードを削除します。
私はファイルgoogle-services.json
を再同期することによって同じ問題を解決しました。
ツール> Firebase> Firebaseに接続>同期
これは、あなたの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が現在のプロジェクトだけに合わせて調整されていることを想定または忘れているのが一般的です。
私は私のアプリケーションのパッケージ名を変更したときにもこの問題に遭遇します。
あなたのAndroidスタジオプロジェクトで "google-services.json"ファイルを見つけてください。それを開く。そして、あなたのアプリケーションのパッケージ名がこのファイルに書かれているものと同じかどうかチェックしてください。
アプリケーションのパッケージ名と "google-services.json"ファイルに書かれているパッケージ名は同じである必要があります。
1.検証 パッケージ名 および アプリケーションID は同じである必要があります
2.Verify google-services.jsonパッケージ名 appフォルダにあります
アプリのbuild.gradleファイルでapplicationIdSuffix
を確認してください。それがあなたのapplicationId
に何らかのテキストを連結しているかどうかを見てください。もしそうなら、それを削除します。
このエラーは、パッケージ名がプロジェクトのパッケージ名と一致しないGoogleサービスJsonファイルがプロジェクトにダウンロードされている場合に発生します。
最近プロジェクトのパッケージ名を変更しましたか?これはすべてのクラスを更新します しかしGradleファイルは更新しません 。それであなたのパッケージ名があなたのGradleで正しいかどうか、そしてまた多分Manifestもチェックしてください。