מבוא
כחלק מהפעלת ממשקי ה-API של Google או שירותי Firebase באפליקציה ל-Android, יכול להיות שתצטרכו להוסיף את הפלאגין google-services
לקובץ build.gradle
:
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
// ...
}
הפלאגין 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 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 ...
הערה: קובץ 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
שתואם לשם החבילה (לסוג ה-build הנוכחי) לפי הלוגיקה הבאה:
- לכל חבר במערך
client
:- בדיקת הערך של
client_info/android_client_info/package_name
- אם שם החבילה תואם לערך הזה, צריך להחזיר את האובייקט של החבר.
- בדיקת הערך של
- אם אף אחד מהחברים ב-
client
לא תואם לשם החבילה, המערכת תחריג את ההרשאה.
בהמשך המסמך נשתמש ב-{YOUR_CLIENT}
כדי להתייחס לחבר במערך client
שנקבע לפי התהליך שלמעלה.
התוצאה העיקרית של עיבוד ה-JSON היא לייצר שני קובצי XML, שאפשר להתייחס אליהם כמשאבי Android בקוד Java. לפניכם דוגמה לכל קובץ:
app/build/created/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/created/res/google-services/{scent}/{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
.
בנוסף, יש במדריכים למתחילים הדרכה לרוב ממשקי ה-API והוראות ליצירת הקובץ.
אחרי שתורידו את הקובץ google-services.json
, תצטרכו להעתיק אותו לתיקייה app/
בפרויקט ב-Android Studio, או לתיקייה app/src/{build_type}
אם אתם משתמשים בכמה סוגי build.
ש: לא הצלחתי למצוא את הסמל "R.string.gcm_defaultSenderId ", "R.xml.global_tracker" וכו'.
תשובה: צריך לוודא ששם החבילה בקובץ build.gradle
תואם לשם החבילה שהזנתם כשיצרתם את הקובץ google-services.json
. אם אתם לא בטוחים, תוכלו להריץ שוב את התהליך לתחילת העבודה ולקבל קובץ JSON חדש.