מבוא
כחלק מהפעלת שירותי Google APIs או 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/{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
.
בנוסף, במדריכים למתחילים לרוב ממשקי ה-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 חדש.