السياق:
أحاول إعداد Google Analytics لتطبيقي. (تحتوي على 4 buildTypes
مخصصة وأكثر من بضعة productFlavors
)
يعمل بشكل جيد عندما أقوم بتحديد Build Variant
الذي يحتوي على applicationId
الذي تم تعيينه على com.my.app.package.name
(اسم الحزمة المستخدم عند إنشاء google-services.json
). ولكن ، النكهات الأخرى لها applicationIds مختلفة.
تابعت devguide الرسمي لإعداده.
حدث خطأ عندما يتم تحديد أي متغير بناء آخر في Build Variants Tab
(والذي له applicationId
(اسم الحزمة)) كما يلي:
خطأ: فشل التنفيذ للمهمة ': التطبيق: processAllcategoriesDebugfreeGoogleServices'.
لم يتم العثور على عميل مطابق لاسم الحزمة 'com.my.app.package.name.debug'
شرح رسالة الخطأ:
في اسم المهمة في رسالة الخطأ أعلاه Debugfree
، فإنني مخصص buildType
و Allcategories
واحد من productFlavors
الخاص بي.
أفهم الخطأ وأعرف أن اسم الحزمة يختلف عن ما استخدمته عند إنشاء json ، ولكن هذا ما أحاول اكتشافه.
المشكلة:
الآن ، يوجد google-services.json
في مجلد app
وبالتالي لا أستطيع فصلها عن كل نكهة منتج عن طريق إسقاطها في مجلد مجموعة مصدر النكهة المحددة.
أسئلة:
byildType
الخاص بي لتصحيح الأخطاء لاحقات .debug
إلى applicationId
(اسم الحزمة). هل هناك طريقة يمكنني من خلالها العمل مع google-services.json
الذي يحتوي على إصدار applicationId
(أي بدون لاحقة .debug
)google-services.json
دون استخدام ملفات ومهام منفصلة لنسخ الملف المطلوب إلى مجلد app
. أعلم أنه يمكن القيام بذلك باستخدام task
كما هو مذكور في هذا المنشور . هل هناك طريقة أكثر بساطة للحصول على ملف واحد فقط أو اختيار الملف الصحيح بناءً على تكوين gradle؟package_name
في google-services.json
يحتوي على اسم الحزمة com.my.app.package.name
. هل يمكنني إضافة أسماء حزم متعددة يدويًا للعمل مع جميع أشكال البناء؟ إذا كانت الإجابة بنعم ، كيف نفعل ذلك؟ لا يمكن العثور على أي تعليمات في الوثائق.وجدت هذا:
يتم وضع ملف google-services.json بشكل عام في التطبيق/الدليل ، ولكن اعتبارًا من الإصدار 2.0.0 - تمت إضافة alpha3 لدعم المكون الإضافي لأنواع الإنشاء ، مما يجعل بنية الدليل التالية صالحة:
app/src/ main/google-services.json dogfood/google-services.json mytype1/google-services.json ...
تحقق من اسم الحزمة الخاصة بك على 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 ، وبعد ذلك يمكننا تنزيل ملف json من أي تطبيق واحد (قمت بتنزيله من التطبيق ذي النكهة). وسوف تحتوي على البيانات لكل من التطبيقات. يمكننا ببساطة نسخ ملف json إلى دليل جذر التطبيق.
المصدر: https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-Android-app-builds.html
لم يتم العثور على عميل مطابق لاسم الحزمة 'com.tf' أنا متأكد من أن "package_name" في google-services.json لا يتطابق مع "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"
}
جوجل-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). تحقق من 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
الصحيح وفقًا لنوع البنية.
على سبيل المثال ، يجب أن يكون الوضع داخل تصحيح deb مثل {com.myapp}.debug
تحقق مما إذا كان client_id
و package_name
في google-services.json له قيمة صحيحة وفقًا لاسم الحزمة الخاص بك.
يجب عليك إضافة الملف المذكور في دليل النكهات باسم الحزمة المطابق في حقل client_id
و package_name
.
افتح ملف Google-services.json وابحث عن هذا القسم في الملف:
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:857242555489:Android:46d8562d82407b11",
"Android_client_info": {
"package_name": "com.example.duke_davis.project"
}
}
تحقق مما إذا كانت الحزمة هي نفس اسم الحزمة الخاصة بك. كان لي مختلفًا ، لذا غيرته وعملت عليه.
تأكد من إعادة تسمية ApplicationId في ملف gradle بعد إعادة تسمية الحزمة الخاصة بك
أنا قادم من رد الفعل الأصلي ولكن أعتقد أن هذا ينطبق على هذا السؤال كذلك. لتحديد.
داخل الملف 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 مع الملف الجديد. تأكد من إنشاء ملف جديد تحقق من الرابط حول كيفية إنشاء ملف json من firebase ويجب أن يتطابق مع اسم الحزمة الخاصة بك
الشيء الثاني هو أنه إذا كنت تقوم بتغيير اسم الحزمة ، استخدم خيار "استبدال في المسار" عند النقر بزر الماوس الأيمن أسفل الملفات عند تحديد مشروع من القائمة المنسدلة. يجب عليك البحث عن اسم الحزمة في المشروع بالكامل واستبداله!
أتمنى أن يساعدك هذا !
Android {
compileSdkVersion 27
defaultConfig {
applicationId "com.package.name"
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
تأكد من أن applicationId Gradle.app هو نفسه اسم الحزمة الخاصة بك. مشكلتي كانت هذه وأنا حلها بهذه الطريقة
إذا لم ينجح أي منها مع أحدكم يا رفاق ، فكانت مشكلتي مع اسم الحزمة الذي لم يبدأ بـ "com". غيره ، والآن يعمل.
امل ان يساعد
انتقل إلى دليل المشروع الخاص بك وقم بإنشاء مجلدات على مسار التطبيق/src الذي سمّى نكهات منتجك (مثل Alpha أو Beta أو Store أو ما كان اسم نكهتك). ثم انسخ ملف google-services.json إلى كل مجلد. لا تنسَ تغيير حقل "package_name" في ملف google-services.json الخاص بكل نكهة لكل منتج ، والذي قمت بتجميعه.
لقد حلت نفس المشكلة هنا وهو حل بسيط: عند إنشاء firebase اتصال اتبع الإرشادات التالية:
أضف اسم التطبيق الخاص بك في firebase
إضافة اسم التطبيق pakage (اكتب نفس اسم pakage ، الذي تستخدمه في التطبيق)
عند إنشاء قاعدة firebase google-services.json file فقط تنزيل و لصق في مجلد التطبيق
مزامنة مشروعك تم حل المشكلة :)
شكرا لكم
انتقل إلى ملف google-services.json وفي جزء العميل ، تحقق من اسم الحزمة ومقارنتها باسم حزمة التطبيقات إذا كان مختلفًا ، ثم قم بتغيير اسم حزمة العميل وفقًا لاسم حزمة التطبيق الذي حظي به حظًا سعيدًا ..
google-services.json file-> "package_name": "com.example.application.tracker"
اسم حزمة التطبيق-> package "com.example.application.tracker"؛
لقد قمت بحلها عن طريق صنع اثنين من المصادر ، واحد مجاني والآخر مدفوع. سيحتوي كلا المجلدين على ملفات Java البرمجية وملفات الموارد المطلوبة ، والتي سيتم تحريرها وفقًا لمتطلبات النكهة الخاصة. على سبيل المثال ، ترغب في إزالة AdMob Code في Paid سواء من فئات Java وملفات Layout.
لقد حللت نفس المشكلة عن طريق إعادة مزامنة الملف google-services.json
.
الأدوات> Firebase> الاتصال بـ Firebase> Sync
هذا يعني أن ملف 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". افتحه. وتحقق مما إذا كان اسم حزمة التطبيق الخاص بك هو نفسه المكتوب في هذا الملف.
يجب أن يكون اسم الحزمة للتطبيق واسم الحزمة المكتوب في ملف "google-services.json" هو نفسه.
1. تحقق اسم الحزمة و معرف التطبيق يجب أن يكون هو نفسه
2. تحقق اسم حزمة google-services.json والذي يتوفر في مجلد التطبيق
تحقق من applicationIdSuffix
في ملف build.gradle الخاص بالتطبيق. معرفة ما إذا كان يتم ربط أي نص بـ applicationId
. إذا كان الأمر كذلك ، فقم بإزالته.
يحدث هذا الخطأ عندما يكون لديك ملف Google Services Json قد تم تنزيله في مشروعك ولا يتطابق اسم الحزمة مع اسم حزمة المشروع.
إعادة تسمية مؤخرا اسم حزمة المشروع؟ يقوم بتحديث جميع الفئات ولكن ليس ملف Gradle . لذا تحقق مما إذا كان اسم الحزمة صحيحًا في Gradle ، وربما أيضًا Manifest أيضًا.