כחלק מהוספת Firebase לפרויקט Android, צריך להוסיף לפרויקט את הפלאגין של Gradle ואת קובץ התצורה של .
אם אתם מוסיפים את Firebase לפרויקט Android באמצעות מסוף Firebase, ממשק ה-API לניהול בארכיטקטורת REST או ה-CLI של Firebase, אתם צריכים להוסיף לפרויקט באופן ידני את הפלאגין של Gradle ואת קובץ התצורה בפורמט JSON. עם זאת, אם אתם משתמשים בFirebase Assistant for Android Studio, המשימות האלה מבוצעות באופן אוטומטי במהלך ההגדרה.
הוספת הפלאגין של Gradle
מוסיפים את הפלאגין של שירותי Google ל-Gradle () לקובץ build.gradle:
dependencies {
classpath 'com.google.gms:google-services:4.5.0'
// ...
}
לפלאגין של שירותי Google ל-Gradle יש שתי פונקציות עיקריות:
מעבד את קובץ התצורה של
ומפיק משאבי Android שאפשר להשתמש בהם בקוד של האפליקציה.google-services.json מוסיף תלויות לספריות בסיסיות שנדרשות לשירותים שהפעלתם. בשלב הזה צריך להחיל את הפלאגין של שירותי Google ל-Gradle בקובץ
app/build.gradle, באופן הבא:
apply plugin: 'com.google.gms.google-services'כדי לראות את התוצאה של השלב הזה, מריצים את הפקודה
./gradlew :app:dependencies.
הוספת קובץ התצורה בפורמט JSON
קובץ התצורה נמצא בדרך כלל בספרייה app/ (בתיקיית השורש של מודול האפליקציה ב-Android Studio). החל מגרסה 2.2.0, הפלאגין תומך בקובצי JSON ספציפיים לסוג ה-build ולגרסת המוצר. כל מבני הספריות הבאים תקינים:
// 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 מעובד
המבנה הבסיסי של קובץ התצורה הוא:
{
"project_info": {...},
"client": [...],
}
האובייקט project_info מכיל מידע כללי על הפרויקט, וכל איבר במערך client מכיל מידע על הלקוחות (אפליקציות ל-Android) שהוספתם לפרויקט.
כשמעבדים את קובץ ה-JSON של אפליקציית Android, הפלאגין משתמש רק באובייקט client שתואם לשם החבילה (לסוג ה-build הנוכחי) על סמך הלוגיקה הבאה:
לכל איבר במערך
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 מופיע בקובץ התצורה במיקומים שמפורטים בהמשך. אם בפרויקט Android יש הגדרה שמונעת מכם להשתמש בפלאגין Gradle של , אתם יכולים ליצור מחדש את קובצי ה-XML באופן ידני באמצעות הערכים האלה.
google_app_idYOUR_CLIENT/client_info/mobilesdk_app_idgcm_defaultSenderIdproject_info/project_numberdefault_web_client_idYOUR_CLIENT/oauth_client/client_id (client_type == 3)ga_trackingIdYOUR_CLIENT/services/analytics-service/analytics_property/tracking_idfirebase_database_urlproject_info/firebase_urlgoogle_api_keyYOUR_CLIENT/api_key/current_keygoogle_crash_reporting_api_keyYOUR_CLIENT/api_key/current_keyproject_idproject_info/project_id
פתרון בעיות
במהלך הבנייה, מופיעה הודעת השגיאה הבאה: File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it.
מסוף Firebase יעזור לכם להוריד את קובץ התצורה של .
אחרי שמורידים את קובץ התצורה , מעתיקים אותו לתיקייה app/ של הפרויקט ב-Android Studio, או לתיקייה app/src/{build_type} אם משתמשים בכמה סוגים של build.
אני לא מוצא/ת את הסמלים כמו R.string.gcm_defaultSenderId או R.xml.global_tracker.
חשוב לוודא ששם החבילה בקובץ build.gradle זהה לשם החבילה שהזנתם כשיצרתם את הקובץ google-services.json. אם אתם לא בטוחים, הפעילו שוב את תהליך תחילת העבודה וקבלו קובץ JSON חדש.