פלאגין של שירותי Google ל שירותי Gradle

Stay organized with collections Save and categorize content based on your preferences.

מבוא

כחלק מהפעלת שירותי Google APIs או Firebase באפליקציית Android, יכול להיות שתצטרכו להוסיף את הפלאגין google-services לקובץ build.gradle:

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

הפלאגין google-services כולל שתי פונקציות עיקריות:

  1. עבד את הקובץ google-services.json וייצר משאבים של Android שניתן להשתמש בהם בקוד האפליקציה שלך. מידע נוסף זמין במאמר הוספת קובץ JSON.
  2. צריך להוסיף יחסי תלות בספריות בסיסיות שדרושות לשירותים שהפעלת. כדי לבצע את השלב הזה, צריך להחיל את הפלאגין 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 חדש.