簡介
在 Android 中啟用 Google API 或 Firebase 服務時
您可能需要將 google-services
外掛程式
build.gradle
檔案:
dependencies {
classpath 'com.google.gms:google-services:4.4.2'
// ...
}
google-services
外掛程式有兩個主要函式:
- 處理
google-services.json
檔案並產生 Android 可將資源運用於應用程式的 再也不是件繁重乏味的工作詳情請參閱新增 JSON 檔案。 為您自己服務所需的基本程式庫新增依附元件 這個步驟需要您套用 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 檔案