Google Services Gradle 外掛程式

簡介

在 Android 中啟用 Google API 或 Firebase 服務時 您可能需要將 google-services 外掛程式 build.gradle 檔案:

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

google-services 外掛程式有兩個主要函式:

  1. 處理 google-services.json 檔案並產生 Android 可將資源運用於應用程式的 再也不是件繁重乏味的工作詳情請參閱新增 JSON 檔案
  2. 為您自己服務所需的基本程式庫新增依附元件 這個步驟需要您套用 Google 服務 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 檔案以下所有目錄結構均有效:

// dogfood and release are build types.
app/
    google-services.json
    src/dogfood/google-services.json
    src/release/google-services.json
    ...

注意:只要在發布目錄中提供 google-services.json 檔案, 您無須為正式版 APK 維護另一個 Firebase 專案。

當變種版本使用到這些較複雜的目錄結構時 也有效。

// 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 應用程式) 相關資訊。

處理 Android 應用程式的 JSON 檔案時,外掛程式只會使用 與套件名稱相符的 client 物件 (針對目前版本) type):

  • 針對 client 陣列的每個成員:
    • 查看 client_info/android_client_info/package_name 的值
    • 如果套件名稱與這個值相符,就會傳回成員物件。
  • 如果 client 的所有成員都與套件名稱不符,系統會擲回例外狀況。

在本文件的其他部分,我們將使用 {YOUR_CLIENT} 來參照 由上述程序決定的 client 陣列成員。

JSON 處理的主要結果是產生兩個 XML 檔案 可在 Java 程式碼中參照為 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 檔案中的每個值都存在於 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 檔案後,請複製該檔案 貼到 Android Studio 專案的 app/ 資料夾中,或 app/src/{build_type} 資料夾 (如果您使用多個建構類型)。

問:我找不到「R.string.gcm_defaultSenderId」符號, 「R.xml.global_tracker」等。

A:確認 build.gradle 檔案中的套件名稱與 建立 google-services.json 時輸入的套件名稱 檔案。如果不確定,請再次執行導入流程 建立新的 JSON 檔案