المكوّن الإضافي في "خدمات Google" لأداة Gradle وملف إعداد JSON

كجزء من عملية إضافة Firebase إلى مشروع Android، عليك إضافة google-services المكوّن الإضافي لنظام Gradle و google-services.json ملف إعداد إلى مشروعك.

إذا أضفت Firebase إلى مشروع Android باستخدام Firebase وحدة التحكّم أو Management REST API أو Firebase واجهة سطر الأوامر، عليك إضافة إضافة Gradle وملف إعداد JSON إلى مشروعك يدويًا. ومع ذلك، إذا كنت تستخدم Firebase Assistant for Android Studio، يتم تنفيذ هذه المهام تلقائيًا نيابةً عنك أثناء عملية الإعداد.

إضافة مكوّن Gradle الإضافي

يمكنك إضافة المكوّن الإضافي في خدمات Google لأداة Gradle (google-services) إلى ملف build.gradle:

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

للمكوّن الإضافي في خدمات Google لأداة Gradle وظيفتان رئيسيتان:

  • تعالج هذه الأداة ملف الإعداد google-services.json وتنتج موارد Android يمكن استخدامها في الرمز البرمجي لتطبيقك.

  • تضيف هذه السمة التبعيات الخاصة بالمكتبات الأساسية المطلوبة للخدمات التي فعّلتها. تتطلّب هذه الخطوة تطبيق المكوّن الإضافي في خدمات Google لأداة 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
    ...

عند استخدام صيغ المنتج، تكون بنى الدليل الأكثر تعقيدًا هذه صالحة أيضًا.

// 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 الذي يحدّده المنطق الموضّح أعلاه.

إنشاء ملفات XML

النتيجة الرئيسية لمعالجة ملف 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

تتوفّر كل قيمة في ملفات XML في ملف الإعداد google-services.json في المواقع الجغرافية المدرَجة أدناه. إذا كان مشروع Android يتضمّن بعض الإعدادات التي تمنعك من استخدام المكوّن الإضافي google-services Gradle، يمكنك إعادة إنشاء ملفات 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
    

تحديد المشاكل وحلّها

عند الإنشاء، تظهر لي رسالة الخطأ التالية: File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it.

ستساعدك 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 جديد.