כחלק מהוספת Firebase לפרויקט Android, צריך להוסיף לפרויקט את התוסף Gradle ואת קובץ ההגדרות.
אם מוסיפים את Firebase לפרויקט Android באמצעות מסוף Firebase, Management API בארכיטקטורת REST או Firebase CLI, צריך להוסיף באופן ידני את פלאגין 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 שתואם לשם החבילה (עבור סוג הבנייה הנוכחי) על סמך הלוגיקה הבאה:
לכל רכיב במערך
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 חדש.