ในการเพิ่ม Firebase ลงในโปรเจ็กต์ Android คุณต้องเพิ่มปลั๊กอิน Gradle และไฟล์การกำหนดค่า ลงในโปรเจ็กต์
หากเพิ่ม Firebase ลงในโปรเจ็กต์ Android โดยใช้คอนโซล Firebase, Management REST API หรือ CLI Firebase คุณต้องเพิ่มปลั๊กอิน Gradle และไฟล์การกำหนดค่า JSON ลงในโปรเจ็กต์ด้วยตนเอง อย่างไรก็ตาม หากคุณใช้ Firebase Assistant for Android Studio ระบบจะดำเนินการเหล่านี้ให้คุณโดยอัตโนมัติในระหว่างการตั้งค่า
เพิ่มปลั๊กอิน Gradle
คุณเพิ่มปลั๊กอิน Gradle สำหรับบริการของ Google () ลงในไฟล์ build.gradle ดังนี้
dependencies {
classpath 'com.google.gms:google-services:4.5.0'
// ...
}
ปลั๊กอิน Gradle ของบริการของ Google มีฟังก์ชันหลัก 2 อย่าง ได้แก่
ประมวลผลไฟล์การกำหนดค่า
และสร้างทรัพยากร Android ที่ใช้ในโค้ดของแอปได้google-services.json เพิ่มทรัพยากร Dependency สำหรับไลบรารีพื้นฐานที่จำเป็นสำหรับบริการที่คุณเปิดใช้ ขั้นตอนนี้กำหนดให้คุณใช้ปลั๊กอิน Gradle ของบริการ Google ในไฟล์
app/build.gradleดังนี้
apply plugin: 'com.google.gms.google-services'คุณดูผลลัพธ์ของขั้นตอนนี้ได้โดยเรียกใช้
./gradlew :app:dependencies
เพิ่มไฟล์การกำหนดค่า 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
...
เมื่อมีการใช้เวอร์ชันผลิตภัณฑ์ โครงสร้างไดเรกทอรีที่ซับซ้อนมากขึ้นเหล่านี้ก็ใช้ได้เช่นกัน
// free and paid are product flavors.
app/
google-services.json
src/dogfood/paid/google-services.json
src/release/free/google-services.json
...
วิธีประมวลผลไฟล์การกำหนดค่า JSON
ไฟล์การกำหนดค่า มีโครงสร้างพื้นฐานดังนี้
{
"project_info": {...},
"client": [...],
}
ออบเจ็กต์ project_info มีข้อมูลทั่วไปเกี่ยวกับโปรเจ็กต์ของคุณ ส่วนสมาชิกแต่ละรายการของอาร์เรย์ client มีข้อมูลเกี่ยวกับไคลเอ็นต์ (แอป Android) ที่คุณเพิ่มลงในโปรเจ็กต์
เมื่อประมวลผลไฟล์ JSON สำหรับแอป Android ปลั๊กอินจะใช้ออบเจ็กต์ client ที่ตรงกับชื่อแพ็กเกจของคุณเท่านั้น (สำหรับประเภทบิลด์ปัจจุบัน) โดยอิงตามตรรกะต่อไปนี้
สำหรับสมาชิกแต่ละรายของอาร์เรย์
clientปลั๊กอินจะตรวจสอบค่าของclient_info/android_client_info/package_nameหากชื่อแพ็กเกจตรงกับค่านี้ ระบบจะแสดงผลออบเจ็กต์สมาชิกหากไม่มีสมาชิกของ
clientที่ตรงกับชื่อแพ็กเกจ ปลั๊กอินจะแสดงข้อยกเว้น
ส่วนที่เหลือของเอกสารนี้จะใช้ YOUR_CLIENT เพื่ออ้างอิงถึงสมาชิกของอาร์เรย์ client ที่กำหนดโดยตรรกะที่อธิบายไว้ข้างต้น
การสร้างไฟล์ XML
ผลลัพธ์หลักของการประมวลผล JSON คือการสร้างไฟล์ XML 2 ไฟล์ที่คุณสามารถอ้างอิงเป็นทรัพยากร 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
ค่าทุกค่าในไฟล์ XML จะแสดงในไฟล์การกำหนดค่า ในตำแหน่งที่ระบุไว้ด้านล่าง หากโปรเจ็กต์ Android มีการกำหนดค่าบางอย่างที่ทำให้คุณใช้ปลั๊กอิน Gradle ไม่ได้ คุณสามารถสร้างไฟล์ XML ใหม่ด้วยตนเองได้อย่างปลอดภัยโดยใช้ค่าเหล่านี้
google_app_idYOUR_CLIENT/client_info/mobilesdk_app_idgcm_defaultSenderIdproject_info/project_numberdefault_web_client_idYOUR_CLIENT/oauth_client/client_id (client_type == 3)ga_trackingIdYOUR_CLIENT/services/analytics-service/analytics_property/tracking_idfirebase_database_urlproject_info/firebase_urlgoogle_api_keyYOUR_CLIENT/api_key/current_keygoogle_crash_reporting_api_keyYOUR_CLIENT/api_key/current_keyproject_idproject_info/project_id
การแก้ปัญหา
ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้เมื่อสร้าง: File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it
คอนโซล Firebase จะช่วยคุณดาวน์โหลดไฟล์การกำหนดค่า
หลังจากดาวน์โหลดไฟล์การกำหนดค่า แล้ว ให้คัดลอกไฟล์ลงในโฟลเดอร์ app/ ของโปรเจ็กต์ Android Studio หรือลงในโฟลเดอร์ app/src/{build_type} หากคุณใช้บิลด์หลายประเภท
ฉันไม่พบสัญลักษณ์อย่าง R.string.gcm_defaultSenderId หรือ R.xml.global_tracker
ตรวจสอบว่าชื่อแพ็กเกจในไฟล์ build.gradle ตรงกับชื่อแพ็กเกจที่คุณป้อนเมื่อสร้างไฟล์ google-services.json หากไม่แน่ใจ ให้ทำตามขั้นตอนเริ่มต้นใช้งานอีกครั้งและรับไฟล์ JSON ใหม่