مقدمة
كجزء من تفعيل Google APIs أو خدمات Firebase في تطبيق Android،
قد تحتاج إلى إضافة المكوّن الإضافي google-services
إلى ملف build.gradle
:
dependencies {
classpath 'com.google.gms:google-services:4.4.1'
// ...
}
يؤدي المكوّن الإضافي google-services
إلى وظيفتَين أساسيتَين:
- عالج ملف
google-services.json
وأنشئ موارد Android التي يمكن استخدامها في رمز تطبيقك. يُرجى الاطّلاع على مزيد من المعلومات حول إضافة ملف JSON. أضِف اعتماديات للمكتبات الأساسية المطلوبة للخدمات التي فعّلتها. تتطلّب هذه الخطوة تطبيق المكوّن الإضافي Google Services Gradle في ملف
app/build.gradle
، على النحو التالي:
apply plugin: 'com.google.gms.google-services'
يمكنك الاطّلاع على نتيجة هذه الخطوة عن طريق تشغيل
./gradlew :app:dependencies
.
إضافة ملف JSON
ويتم عادةً وضع ملف google-services.json
في دليل
app/
(في جذر وحدة تطبيق "استوديو Android"). بدءًا من الإصدار 2.2.0
، سيدعم المكوّن الإضافي ملفات JSON الخاصة بنوع الإصدار ونكهة المنتج. جميع بُنى الأدلة التالية صالحة:
// dogfood and release are build types. app/ google-services.json src/dogfood/google-services.json src/release/google-services.json ...
ملاحظة: من خلال توفير ملف google-services.json في دليل الإصدار، يمكنك الاحتفاظ بمشروع منفصل على Firebase لملفات APK للإنتاج.
عندما تكون نكهات المنتجات قيد الاستخدام، فإن هياكل الأدلة الأكثر تعقيدًا صالحة أيضًا.
// free and paid are product flavors. app/ google-services.json src/dogfood/paid/google-services.json src/release/free/google-services.json ...
جارٍ معالجة ملف JSON
يتضمن ملف google-services.json
البنية الأساسية التالية:
{ "project_info": {...}, "client": [...], }
يحتوي الكائن project_info
على معلومات عامة حول
مشروعك، بينما يحتوي كل عضو في مصفوفة client
على معلومات
حول العملاء (تطبيقات Android) التي أضفتها إلى المشروع.
عند معالجة ملف JSON لتطبيق Android، لا يستخدم المكوّن الإضافي سوى الكائن client
الذي يتطابق مع اسم الحزمة (لنوع الإصدار الحالي) استنادًا إلى المنطق التالي:
- لكل عضو في مصفوفة
client
:- التحقّق من قيمة
client_info/android_client_info/package_name
- إذا تطابُق اسم الحزمة مع هذه القيمة، يمكنك عرض كائن member.
- التحقّق من قيمة
- إذا لم يتطابق أي من أعضاء
client
مع اسم الحزمة، يتم تطبيق استثناء.
في بقية هذا المستند، سنستخدم {YOUR_CLIENT}
للإشارة إلى عضو صفيف client
الذي يحدده الإجراء أعلاه.
والنتيجة الرئيسية لمعالجة JSON هي إنتاج ملفي XML يمكنك الرجوع إليهما كموارد Android في رمز Java. فيما يلي مثال على كل ملف:
app/build/generated/res/google-services/{build_type}/values/values.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <! -- Present in all applications --> <string name="google_app_id" translatable="false">1:1035469437089:android:73a4fb8297b2cd4f</string> <! -- Present in applications with the appropriate services configured --> <string name="gcm_defaultSenderId" translatable="false">1035469437089</string> <string name="default_web_client_id" translatable="false">337894902146-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com</string> <string name="ga_trackingId" translatable="false">UA-65557217-3</string> <string name="firebase_database_url" translatable="false">https://example-url.firebaseio.com</string> <string name="google_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string> <string name="google_crash_reporting_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string> <string name="project_id" translatable="false">mydemoapp</string> </resources>
app/build/generated/res/google-services/{flavor}/{build_type}/xml/global_tracker.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="ga_trackingId" translatable="false">UA-65557218-3</string> </resources>
تتوفّر كل قيمة في ملفات XML في ملف google-services.json
في المواقع الجغرافية أدناه. إذا تضمّن مشروع Android بعض الإعدادات
التي تمنعك من استخدام المكوّن الإضافي google-services
، يمكنك
إعادة إنشاء ملفات XML يدويًا بأمان باستخدام القيم التالية:
google_app_id:
{YOUR_CLIENT}/client_info/mobilesdk_app_id
gcm_defaultSenderId:
project_info/project_number
default_web_client_id:
{YOUR_CLIENT}/oauth_client/client_id (client_type == 3)
ga_trackingId:
{YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id
firebase_database_url:
project_info/firebase_url
google_api_key:
{YOUR_CLIENT}/api_key/current_key
google_crash_reporting_api_key:
{YOUR_CLIENT}/api_key/current_key
project_id:
project_info/project_id
تحديد المشاكل وحلّها
س: عند إنشاء الملف، تظهر لي رسالة الخطأ التالية: "ملف google-services.json غير متوفّر في المجلد الجذر للوحدة. ولا يمكن أن يعمل المكوّن الإضافي لخدمات Google بدونه".
ج: ستساعدك وحدة تحكم Firebase
في تنزيل google-services.json
.
بالإضافة إلى ذلك، تحتوي أدلة البدء السريع لمعظم واجهات برمجة التطبيقات على تعليمات لإنشاء هذا الملف.
بعد تنزيل ملف google-services.json
، انسخه في المجلد app/
ضمن مشروع "استوديو Android"، أو في المجلد
app/src/{build_type}
إذا كنت تستخدم أنواع تصميم متعددة.
س: لا يمكنني العثور على الرمز "R.string.gcm_defaultSenderId"، "R.xml.global_tracker"، وغير ذلك.
ج: تأكَّد من أنّ اسم الحزمة في ملف build.gradle
يتطابق مع اسم الحزمة الذي أدخلته عند إنشاء ملف google-services.json
. وإذا لم تكن متأكدًا، اتّبِع خطوات البدء مرة أخرى واحصل على ملف json جديد.