Giới thiệu
Để bật API Google hoặc dịch vụ Firebase trong ứng dụng Android, bạn có thể phải thêm trình bổ trợ google-services
vào tệp build.gradle
:
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
// ...
}
Trình bổ trợ google-services
có hai hàm chính:
- Xử lý tệp
google-services.json
và tạo các tài nguyên Android có thể dùng trong mã của ứng dụng. Xem thêm thông tin về cách Thêm tệp JSON. Thêm phần phụ thuộc cho các thư viện cơ bản bắt buộc đối với dịch vụ mà bạn đã bật. Bước này yêu cầu bạn áp dụng trình bổ trợ Dịch vụ của Gradle cho Google trong tệp
app/build.gradle
, như sau:
apply plugin: 'com.google.gms.google-services'
Bạn có thể xem kết quả của bước này bằng cách chạy
./gradlew :app:dependencies
.
Thêm tệp JSON
Tệp google-services.json
thường được đặt trong thư mục app/
(ở gốc của mô-đun ứng dụng Android Studio). Kể từ phiên bản 2.2.0
, trình bổ trợ sẽ hỗ trợ các loại tệp JSON theo từng loại bản dựng và phiên bản sản phẩm. Tất cả các cấu trúc thư mục sau đây đều hợp lệ:
// dogfood and release are build types. app/ google-services.json src/dogfood/google-services.json src/release/google-services.json ...
Lưu ý: Việc cung cấp tệp google-services.json trong thư mục phát hành cho phép bạn duy trì một dự án Firebase riêng cho tệp APK sản xuất.
Khi phiên bản sản phẩm được sử dụng, các cấu trúc thư mục phức tạp hơn này cũng hợp lệ.
// free and paid are product flavors. app/ google-services.json src/dogfood/paid/google-services.json src/release/free/google-services.json ...
Xử lý tệp JSON
Tệp google-services.json
có cấu trúc cơ bản sau:
{ "project_info": {...}, "client": [...], }
Đối tượng project_info
chứa thông tin chung về dự án, trong khi mỗi thành phần của mảng client
chứa thông tin về ứng dụng (ứng dụng Android) mà bạn đã thêm vào dự án.
Khi xử lý tệp JSON cho ứng dụng Android, trình bổ trợ này chỉ sử dụng đối tượng client
khớp với tên gói của bạn (đối với loại bản dựng hiện tại) dựa trên logic sau:
- Đối với mỗi thành phần của mảng
client
:- Kiểm tra giá trị của
client_info/android_client_info/package_name
- Nếu tên gói khớp với giá trị này, hãy trả về đối tượng thành viên.
- Kiểm tra giá trị của
- Nếu không có thành viên nào của
client
khớp với tên gói, một ngoại lệ sẽ được gửi.
Đối với phần còn lại của tài liệu này, chúng ta sẽ sử dụng {YOUR_CLIENT}
để tham chiếu đến thành phần của mảng client
được xác định trong quy trình ở trên.
Kết quả chính của quá trình xử lý JSON là tạo ra hai tệp XML mà bạn có thể tham chiếu dưới dạng tài nguyên Android trong mã Java. Dưới đây là ví dụ về mỗi tệp:
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>
Mọi giá trị trong các tệp XML đều có trong tệp google-services.json
tại các vị trí bên dưới. Nếu dự án Android của bạn có một số cấu hình
ngăn bạn sử dụng trình bổ trợ google-services
, thì bạn có thể
tạo lại các tệp XML theo cách thủ công bằng cách sử dụng các giá trị sau:
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
mã_dự_án:
project_info/project_id
Khắc phục sự cố
Hỏi: Khi tạo bản dựng, tôi nhận được thông báo lỗi sau: "File google-services.json bị thiếu trong thư mục gốc của mô-đun. Plugin Google Services không thể hoạt động nếu không có plugin này.
Đáp: Bảng điều khiển của Firebase sẽ giúp bạn
tải google-services.json
xuống.
Ngoài ra, hướng dẫn Quickstart dành cho hầu hết các API đều có hướng dẫn để tạo tệp này.
Sau khi bạn tải tệp google-services.json
xuống, hãy sao chép tệp đó vào thư mục app/
của dự án Android Studio hoặc vào thư mục app/src/{build_type}
nếu bạn đang sử dụng nhiều loại bản dựng.
Hỏi: Tôi không tìm thấy biểu tượng "R.string.gcm_defaultSenderId", "R.xml.global_tracker", v.v.
Đáp: Đảm bảo tên gói trong tệp build.gradle
khớp với tên gói bạn đã nhập khi tạo tệp google-services.json
. Nếu bạn không chắc chắn, hãy chạy lại quy trình bắt đầu và nhận tệp json mới.