簡介
在 Android 應用程式中啟用 Google API 或 Firebase 服務時,您可能必須將 google-services
外掛程式新增至 build.gradle
檔案:
dependencies {
classpath 'com.google.gms:google-services:4.4.3'
// ...
}
google-services
外掛程式有兩項主要功能:
- 處理
google-services.json
檔案,並產生可在應用程式程式碼中使用的 Android 資源。詳情請參閱「新增 JSON 檔案」。 為您啟用的服務新增基本程式庫的必要依附元件。這個步驟需要您在
app/build.gradle
檔案中套用 Google 服務 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
物件 (適用於目前的建構類型):
- 針對
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
疑難排解
問:建構時,我收到下列錯誤訊息:「File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it".
答:Firebase 控制台可協助您下載 google-services.json
。此外,大多數 API 的快速入門指南都提供產生這個檔案的操作說明。下載 google-services.json
檔案後,請將檔案複製到 Android Studio 專案的 app/
資料夾,或複製到 app/src/{build_type}
資料夾 (如果您使用多個建構類型)。
問:我找不到「R.string.gcm_defaultSenderId」、「R.xml.global_tracker」等符號。
答:請確認 build.gradle
檔案中的套件名稱,與建立 google-services.json
檔案時輸入的套件名稱相符。如果不確定,請再次執行入門流程,並取得新的 JSON 檔案。