مكوّن Gradle الإضافي لخدمات Google

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

المقدمة

كجزء من تفعيل Google APIs أو خدمات Firebase في تطبيق Android، قد تحتاج إلى إضافة المكوّن الإضافي google-services إلى ملف build.gradle:

dependencies {
    classpath 'com.google.gms:google-services:4.3.15'
    // ...
}

يتضمن مكوّن google-services الإضافي وظيفتين رئيسيتين:

  1. عالج ملف google-services.json وأنتِج موارد Android التي يمكن استخدامها في رمز تطبيقك. راجع إضافة ملف JSON المزيد من المعلومات.
  2. أضِف التبعيات للمكتبات الأساسية المطلوبة للخدمات التي فعّلتها. تتطلّب هذه الخطوة تطبيق المكوّن الإضافي Google Services Gradle في ملف app/build.gradle، على النحو التالي:
    apply plugin: 'com.google.gms.google-services'

    يمكنك الاطلاع على نتيجة هذه الخطوة من خلال تشغيل ./gradlew :app:dependencies.

إضافة ملف JSON

ويتم عادةً وضع الملف google-services.json في الدليل app/ (في جذر وحدة تطبيق Android Studio). اعتبارًا من الإصدار 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
    • إذا كان اسم الحزمة يتطابق مع هذه القيمة، اعرض كائن العضو.
  • إذا لم يتطابق أي من أعضاء client مع اسم الحزمة، يتم إلغاء الاستثناء.

بالنسبة إلى بقية هذا المستند، سنستخدم {YOUR_CLIENT} للإشارة إلى عضو مصفوفة client المحدد في الإجراء أعلاه.

والنتيجة الرئيسية لمعالجة JSON هي إنشاء ملفي XML يمكنك الإشارة إليهما كموارد Android في شفرة جافا. في ما يلي مثال على كل ملف:

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. بالإضافة إلى ذلك، تشتمل أدلة Quickstart لمعظم واجهات برمجة التطبيقات على إرشادات لإنشاء هذا الملف. بعد تنزيل ملف google-services.json، انسخه إلى المجلد app/ لمشروع Android Studio أو إلى مجلد app/src/{build_type} إذا كنت تستخدم أنواع إصدارات متعددة.

س: لا يمكنني العثور على الرمز "R.string.gcm_defaultSenderId"، "R.xml.global_tracker"، وما إلى ذلك.

ج: تأكد من أن اسم الحزمة في ملف build.gradle يتطابق مع اسم الحزمة الذي أدخلته عند إنشاء ملف google-services.json. وإذا لم تكن متأكدًا، فتابع تدفق خطوات البدء مرة أخرى واحصل على ملف json جديد.