Bộ công cụ mô phỏng cục bộ của Firebase có thể được cài đặt và định cấu hình cho các môi trường nguyên mẫu và thử nghiệm, mọi thứ từ các phiên tạo mẫu một lần cho đến quy trình tích hợp liên tục trên quy mô sản xuất.
Cài đặt Bộ mô phỏng cục bộ
Trước khi cài đặt Bộ mô phỏng, bạn cần có:
Cách cài đặt Bộ mô phỏng:
- Cài đặt Firebase CLI.
Nếu bạn chưa cài đặt Firebase CLI,
cài đặt ngay.
Bạn cần có CLI phiên bản 8.14.0 trở lên để sử dụng Bộ mô phỏng. Bạn có thể
hãy kiểm tra xem bạn đã cài đặt phiên bản nào bằng lệnh sau:
firebase --version
- Khởi chạy thư mục đang làm việc hiện tại (nếu bạn chưa thực hiện)
dưới dạng dự án Firebase, hãy làm theo các lời nhắc trên màn hình để chỉ định
sản phẩm để sử dụng:
firebase init
- Thiết lập Bộ mô phỏng. Lệnh này sẽ khởi động một trình hướng dẫn cấu hình
cho phép bạn chọn trình mô phỏng mà bạn quan tâm, tải trình mô phỏng tương ứng xuống
tệp nhị phân và đặt cổng trình mô phỏng nếu chế độ mặc định không phù hợp.
firebase init emulators
Sau khi cài đặt trình mô phỏng, không có lượt kiểm tra cập nhật nào được thực hiện và không có tự động tải xuống sẽ xảy ra cho đến khi bạn cập nhật phiên bản Firebase CLI.
Định cấu hình Bộ mô phỏng
Bạn có thể tuỳ ý định cấu hình trình mô phỏng cổng mạng và đường dẫn đến trang Bảo mật
Định nghĩa các quy tắc trong tệp firebase.json
:
- Thay đổi cổng trình mô phỏng bằng cách chạy
firebase init emulators
hoặc bằng cách chỉnh sửafirebase.json
theo cách thủ công. - Thay đổi đường dẫn đến định nghĩa về Quy tắc bảo mật bằng cách chỉnh sửa
firebase.json
theo cách thủ công.
Nếu bạn không định cấu hình các chế độ cài đặt này, thì trình mô phỏng sẽ lắng nghe trên các cổng mặc định và Cloud Firestore, Realtime Database và Cloud Storage for Firebase các trình mô phỏng sẽ chạy cùng với chế độ bảo mật dữ liệu mở.
Lệnh | Mô tả |
---|---|
trình mô phỏng init | Khởi động trình hướng dẫn khởi động trình mô phỏng. Xác định trình mô phỏng cần cài đặt và tuỳ ý chỉ định chế độ cài đặt cổng trình mô phỏng. init emulators không thể phá huỷ; Việc chấp nhận giá trị mặc định sẽ giữ nguyên cấu hình hiện tại của trình mô phỏng. |
Cấu hình cổng
Mỗi trình mô phỏng liên kết với một cổng khác trên máy của bạn bằng một cổng mặc định ưu tiên giá trị.
Trình mô phỏng | Cổng mặc định |
---|---|
Authentication | 9099 |
Emulator Suite UI | 4000 |
Cloud Functions | 5001 |
Eventarc | 9299 |
Realtime Database | 9000 |
Cloud Firestore | 8080 |
Cloud Storage for Firebase | 9199 |
Firebase Hosting | 5000 |
Pub/Sub | 8085 |
Cấu hình mã dự án
Tuỳ thuộc vào cách gọi trình mô phỏng, bạn có thể chạy nhiều phiên bản của một trình mô phỏng sử dụng mã dự án Firebase khác nhau hoặc nhiều phiên bản của trình mô phỏng cho một mã dự án nhất định. Trong những trường hợp như vậy, các thực thể trình mô phỏng đang chạy trong một môi trường riêng biệt.
Nhìn chung, bạn nên đặt một mã dự án cho tất cả trình mô phỏng nên Emulator Suite UI, các trình mô phỏng sản phẩm khác nhau và tất cả các phiên bản đang chạy của một trình mô phỏng cụ thể có thể giao tiếp chính xác trong tất cả trường hợp.
Local Emulator Suite đưa ra cảnh báo khi phát hiện có nhiều mã dự án trong
môi trường, mặc dù bạn có thể ghi đè hành vi này bằng cách đặt
Khoá singleProjectMode
để false
trong firebase.json
của bạn.
Bạn có thể kiểm tra(các) bản khai báo mã dự án để tìm thông tin không khớp trong:
- Dự án mặc định trong dòng lệnh. Theo mặc định, mã dự án sẽ
được lấy khi khởi động từ dự án được chọn bằng
firebase init
hoặcfirebase use
. Cách xem danh sách dự án (cũng như dự án được chọn) sử dụngfirebase projects:list
. - Kiểm thử đơn vị quy tắc. Mã dự án thường được chỉ định trong các lệnh gọi đến Quy tắc
Các phương thức thư viện Kiểm thử đơn vị
initializeTestEnvironment
hoặcinitializeTestApp
. - Cờ
--project
của dòng lệnh. Truyền CLI Firebase Cờ--project
ghi đè dự án mặc định. Bạn cần đảm bảo giá trị cờ khớp với mã dự án trong các bài kiểm thử đơn vị và khởi chạy ứng dụng.
Hãy kiểm tra cấu hình mã dự án dành riêng cho từng nền tảng mà bạn đã đặt trong khi định cấu hình nền tảng Apple của bạn, Dự án Android và web.
Cấu hình Quy tắc bảo mật
Trình mô phỏng sẽ lấy cấu hình Quy tắc bảo mật từ database
,
Khoá cấu hình firestore
và storage
trong firebase.json
.
{
// Existing firebase configuration ...
"database": {
"rules": "database.rules.json"
},
"firestore": {
"rules": "firestore.rules"
},
"storage": {
"rules": "storage.rules"
}
// ...
// Optional emulator configuration. Default
// values are used if absent.
"emulators": {
"singleProjectMode": false, // do not warn on detection of multiple project IDs
"firestore": {
"port": "8080"
},
"ui": {
"enabled": true, // Default is `true`
"port": 4000 // If unspecified, see CLI log for selected port
},
"auth": {
"port": "9099"
},
"pubsub": {
"port": "8085"
}
}
}
Chỉ định các tuỳ chọn Java
Trình mô phỏng Realtime Database, trình mô phỏng Cloud Firestore và một phần của
Trình mô phỏng Cloud Storage for Firebase dựa trên Java (có thể tuỳ chỉnh được)
với cờ JVM thông qua biến môi trường JAVA_TOOL_OPTIONS
.
Ví dụ: nếu gặp lỗi liên quan đến dung lượng vùng nhớ khối xếp Java, bạn có thể tăng kích thước vùng nhớ khối xếp Java tối đa là 4GB:
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
Bạn có thể chỉ định nhiều cờ trong dấu ngoặc kép và phân tách bằng dấu cách, chẳng hạn như
JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g"
. Cờ chỉ ảnh hưởng đến mã dựa trên Java
của các trình mô phỏng và không ảnh hưởng đến các phần khác của
Giao diện dòng lệnh (CLI) Firebase, chẳng hạn như Emulator Suite UI.
Khởi động trình mô phỏng
Bạn có thể khởi động trình mô phỏng để chạy cho đến khi bị chấm dứt theo cách thủ công hoặc để chạy cho thời lượng của một tập lệnh kiểm thử được chỉ định rồi tự động tắt.
Lệnh | Mô tả | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
emulators:start | Khởi động trình mô phỏng cho các sản phẩm Firebase được định cấu hình trong firebase.json .
Các quy trình của trình mô phỏng sẽ tiếp tục chạy cho đến khi kết thúc một cách rõ ràng. Gọi điện
emulators:start sẽ tải trình mô phỏng xuống ~/.cache/firebase/emulators/ nếu
chúng chưa được cài đặt.
|
||||||||||||
emulators:exec scriptpath | Chạy tập lệnh tại scriptpath sau khi khởi động trình mô phỏng cho các sản phẩm Firebase
đã định cấu hình trong firebase.json . Các quy trình của trình mô phỏng sẽ tự động dừng khi
đã chạy xong tập lệnh.
|
Phương thức firebase emulators:exec
thường phù hợp hơn cho
quy trình tích hợp liên tục.
Xuất và nhập dữ liệu của trình mô phỏng
Bạn có thể xuất dữ liệu từ Authentication, Cloud Firestore, Realtime Database và
Trình mô phỏng Cloud Storage for Firebase để dùng làm dữ liệu cơ sở phổ biến, dễ chia sẻ
thiết lập. Bạn có thể nhập các tập dữ liệu này bằng cách sử dụng cờ --import
, như
được mô tả ở trên.
emulators:export export_directory |
Trình mô phỏng Authentication, Cloud Firestore, Realtime Database hoặc Cloud Storage for Firebase.
Xuất dữ liệu từ một Cloud Firestore, Realtime Database hoặc Cloud Storage for Firebase đang chạy
thực thể của trình mô phỏng.
Bạn có thể hướng dẫn trình mô phỏng tự động xuất dữ liệu khi chúng tắt bằng cách sử dụng
Cờ |
Tích hợp với hệ thống CI
Chạy hình ảnh Bộ mô phỏng trong vùng chứa
Cài đặt và định cấu hình Bộ mô phỏng với các vùng chứa trong một cách thiết lập CI thông thường rất đơn giản.
Có một vài vấn đề cần lưu ý:
Các tệp JAR được cài đặt và lưu vào bộ nhớ đệm tại
~/.cache/firebase/emulators/
.- Bạn nên thêm đường dẫn này vào cấu hình bộ nhớ đệm CI để tránh tải xuống lặp lại.
Nếu không có tệp
firebase.json
trong kho lưu trữ, bạn phải thêm một tệp đối số dòng lệnh cho lệnhemulators:start
hoặcemulators:exec
để chỉ định trình mô phỏng nào sẽ được khởi động. Ví dụ:--only functions,firestore
.
Tạo mã thông báo xác thực (Chỉ dành cho trình mô phỏng lưu trữ)
Nếu quy trình tích hợp liên tục của bạn dựa vào Firebase Hosting , thì bạn
sẽ cần đăng nhập bằng mã thông báo để chạy firebase emulators:exec
. Chiến lược phát hành đĩa đơn
các trình mô phỏng khác không yêu cầu đăng nhập.
Để tạo mã thông báo, hãy chạy firebase login:ci
trên môi trường cục bộ của bạn; bạn không nên thực hiện việc này từ hệ thống CI. Hãy làm theo hướng dẫn để xác thực. Bạn chỉ cần thực hiện bước này một lần cho mỗi dự án, vì mã thông báo sẽ có hiệu lực trên các bản dựng. Mã thông báo phải được coi là mật khẩu; hãy đảm bảo thông tin này được giữ bí mật.
Nếu môi trường CI cho phép bạn chỉ định các biến môi trường có thể
dùng trong tập lệnh bản dựng, bạn chỉ cần tạo một biến môi trường có tên là
FIREBASE_TOKEN
, với giá trị là chuỗi mã truy cập. Giao diện dòng lệnh (CLI) của Firebase
sẽ tự động chọn biến môi trường FIREBASE_TOKEN
và
trình mô phỏng sẽ khởi động đúng cách.
Khi không còn cách nào khác, bạn chỉ cần đưa mã thông báo đó vào tập lệnh bản dựng, nhưng
đảm bảo rằng các bên không đáng tin cậy sẽ không có quyền truy cập. Đối với loại tệp được cố định giá trị trong mã này
phương pháp tiếp cận này, bạn có thể thêm --token "YOUR_TOKEN_STRING_HERE"
vào
Lệnh firebase emulators:exec
.
Sử dụng API REST của Trung tâm trình mô phỏng
Liệt kê các trình mô phỏng đang chạy
Để liệt kê các trình mô phỏng đang chạy, hãy gửi yêu cầu GET
đến /emulators
điểm cuối của Trung tâm trình mô phỏng.
curl localhost:4400/emulators
Kết quả sẽ là một đối tượng JSON liệt kê tất cả các trình mô phỏng đang chạy và cấu hình máy chủ/cổng, ví dụ:
{
"hub":{
"name": "hub",
"host": "localhost",
"port": 4400
},
"functions": {
"name": "functions",
"host": "localhost",
"port": 5001
}
"firestore": {
"name": "firestore",
"host": "localhost",
"port": 8080
}
}
Bật / tắt trình kích hoạt chức năng trong nền
Trong một số trường hợp, bạn sẽ cần tạm thời vô hiệu hoá chức năng cục bộ và
trình kích hoạt tiện ích. Ví dụ: bạn có thể muốn xoá tất cả dữ liệu trong
Trình mô phỏng Cloud Firestore mà không kích hoạt bất kỳ hàm onDelete
nào
đang chạy trong trình mô phỏng Cloud Functions hoặc Extensions.
Để tạm thời tắt các điều kiện kích hoạt hàm cục bộ, hãy gửi yêu cầu PUT
đến
Điểm cuối /functions/disableBackgroundTriggers
của Trung tâm trình mô phỏng.
curl -X PUT localhost:4400/functions/disableBackgroundTriggers
Kết quả sẽ là một đối tượng JSON chứa thông tin chi tiết về trạng thái hiện tại.
{
"enabled": false
}
Để bật điều kiện kích hoạt hàm cục bộ sau khi tắt, hãy gửi PUT
yêu cầu đến điểm cuối /functions/enableBackgroundTriggers
của Trình mô phỏng
Nội dung trung tâm.
curl -X PUT localhost:4400/functions/enableBackgroundTriggers
Kết quả sẽ là một đối tượng JSON chứa thông tin chi tiết về trạng thái hiện tại.
{
"enabled": true
}
Tích hợp SDK trình mô phỏng
Các bảng trong phần này cho biết trình mô phỏng nào được ứng dụng hỗ trợ và SDK Quản trị. Tương lai có nghĩa là đã có kế hoạch hỗ trợ trình mô phỏng nhưng chưa hỗ trợ trình mô phỏng sẵn có.
Phạm vi cung cấp SDK ứng dụng
Android | Nền tảng của Apple | Web |
Giao diện người dùng Firebase Android |
Giao diện người dùng Firebase iOS |
Giao diện người dùng Firebase Web |
|
---|---|---|---|---|---|---|
Realtime Database | 19.4.0 | 7.2.0 | 8.0.0 | 6.4.0 | Tương lai | Không áp dụng |
Cloud Firestore | 21.6.0 | 7.2.0 | 8.0.0 | 6.4.0 | Tương lai | Không áp dụng |
Authentication | 20.0.0 | 7.0.0 | 8.0.0 | 7.0.0 | Tương lai | 4.7.2 |
Cloud Storage for Firebase | 20.0.0 | 8.0.0 | 8.4.0 | 7.0.0 | 11.0.0 | Không áp dụng |
Cloud Functions | 19.1.0 | 7.2.0 | 8.0.0 | Không áp dụng | Không có | Không có |
Hosting | Không có | Không có | Không có | Không có | Không có | Không có |
Extensions | Không có | Không có | Không có | Không có | Không có | Không áp dụng |
Phạm vi cung cấp SDK dành cho quản trị viên
Nút | Java | Python | Bắt đầu | |
---|---|---|---|---|
Realtime Database | 8.6.0 | 6.10.0 | 2.18.0 | Tương lai |
Cloud Firestore | 8.0.0 | 6.10.0 | 3.0.0 | 1.0.0 |
Authentication | 9.3.0 | 7.2.0 | 5.0.0 | 4.2.0 |
Cloud Storage for Firebase | 9.8.0 | Tương lai | Tương lai | Tương lai |
Cloud Functions | Không áp dụng | Không có | Không có | Không có |
Hosting | Không có | Không có | Không có | Không có |
Extensions | Không có | Không có | Không có | Không áp dụng |