Bộ mô phỏng cục bộ Firebase có thể được cài đặt và định cấu hình cho các môi trường thử nghiệm và nguyên mẫu khác nhau, từ các phiên tạo nguyên mẫu một lần đến quy trình tích hợp liên tục ở 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 sẽ cần:
Để cài đặt Bộ mô phỏng:
- Cài đặt Firebase CLI . Nếu bạn chưa cài đặt Firebase CLI, hãy cài đặt ngay bây giờ . Bạn sẽ cần CLI phiên bản 8.14.0 trở lên để sử dụng Bộ mô phỏng. Bạn có thể kiểm tra phiên bản nào bạn đã cài đặt bằng lệnh sau:
firebase --version
- Nếu bạn chưa làm như vậy, hãy khởi tạo thư mục làm việc hiện tại dưới dạng dự án Firebase, làm theo lời nhắc trên màn hình để chỉ định sản phẩm nào sẽ sử dụng:
firebase init
- Thiết lập Bộ mô phỏng. Lệnh này khởi động trình hướng dẫn cấu hình cho phép bạn chọn trình mô phỏng quan tâm, tải xuống tệp nhị phân của trình mô phỏng tương ứng và đặt cổng trình mô phỏng nếu giá trị mặc định không phù hợp.
firebase init emulators
Sau khi cài đặt trình mô phỏng, sẽ không có hoạt động kiểm tra cập nhật nào được thực hiện và sẽ không có lượt tải xuống tự động bổ sung nào xảy ra cho đến khi bạn cập nhật phiên bản Firebase CLI của mình.
Định cấu hình Bộ mô phỏng
Bạn có thể tùy ý định cấu hình các cổng mạng của trình mô phỏng và đường dẫn đến định nghĩa Quy tắc bảo mật 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 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 cài đặt này, trình mô phỏng sẽ lắng nghe trên các cổng mặc định của chúng và trình mô phỏng Cloud Firestore, Cơ sở dữ liệu thời gian thực và Lưu trữ đám mây cho Firebase sẽ chạy với bảo mật dữ liệu mở.
Yêu cầu | Sự miêu tả |
---|---|
trình giả lập ban đầu | Bắt đầu trình hướng dẫn khởi tạo trình mô phỏng. Xác định trình mô phỏng sẽ được cài đặt và tùy ý chỉ định cài đặt cổng trình mô phỏng. init emulators không phá hủy; việc chấp nhận giá trị mặc định sẽ giữ nguyên cấu hình trình mô phỏng hiện tại. |
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 nhau trên máy của bạn với giá trị mặc định ưu tiên.
Giả lập | Cổng mặc định |
---|---|
Xác thực | 9099 |
Giao diện người dùng của bộ mô phỏng | 4000 |
Chức năng đám mây | 5001 |
Sự kiện | 9299 |
Cơ sở dữ liệu thời gian thực | 9000 |
Cửa hàng đám mây | 8080 |
Bộ nhớ đám mây cho Firebase | 9199 |
Lưu trữ căn cứ hỏa lực | 5000 |
Quán rượu/Phụ | 8085 |
Cấu hình ID dự án
Tùy thuộc vào cách bạn gọi trình mô phỏng, bạn có thể chạy nhiều phiên bản của trình mô phỏng bằng cách sử dụng các ID dự án Firebase khác nhau hoặc nhiều phiên bản trình mô phỏng cho một ID dự án nhất định. Trong những trường hợp như vậy, phiên bản 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 ID dự án cho tất cả các lệnh gọi trình mô phỏng để giao diện người dùng của Bộ mô phỏng, 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 mọi trường hợp.
Bộ mô phỏng cục bộ đưa ra cảnh báo khi phát hiện nhiều ID 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 khóa singleProjectMode
thành false
trong firebase.json
của mình.
Bạn có thể kiểm tra (các) phần khai báo ID dự án xem có khớp không trong:
- Dự án mặc định trong dòng lệnh. Theo mặc định, ID dự án sẽ được lấy khi khởi động từ dự án được chọn bằng
firebase init
hoặcfirebase use
. Để xem danh sách dự án (và xem dự án nào được chọn), hãy sử dụngfirebase projects:list
. - Kiểm tra đơn vị quy tắc. ID dự án thường được chỉ định trong các lệnh gọi đến các phương thức thư viện Kiểm tra đơn vị quy tắc
initializeTestEnvironment
hoặcinitializeTestApp
. - Cờ dòng lệnh
--project
. Việc chuyển cờ Firebase CLI--project
sẽ ghi đè dự án mặc định. Bạn cần đảm bảo giá trị của cờ khớp với ID dự án trong quá trình kiểm thử đơn vị và khởi tạo ứng dụng.
Ngoài ra, hãy kiểm tra cấu hình ID dự án dành riêng cho nền tảng mà bạn đã đặt trong khi định cấu hình các dự án nền tảng Apple , Android và web của mình.
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ừ các khóa cấu hình database
, 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 tùy chọn Java
Trình mô phỏng cơ sở dữ liệu thời gian thực, trình mô phỏng Cloud Firestore và một phần của trình mô phỏng Cloud Storage cho Firebase dựa trên Java, có thể được tùy chỉnh bằng 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 không gian vùng heap Java, bạn có thể tăng kích thước vùng heap Java tối đa lên 4GB:
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
Nhiều cờ có thể được chỉ định trong dấu ngoặc kép được phân tách bằng dấu cách, như JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g"
. Các cờ này chỉ ảnh hưởng đến các thành phần dựa trên Java của trình mô phỏng và không ảnh hưởng đến các phần khác của Firebase CLI, chẳng hạn như Giao diện người dùng của Bộ mô phỏng.
Khởi động trình giả lập
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 trong suốt thời gian của tập lệnh kiểm thử được chỉ định rồi tự động tắt.
Yêu cầu | Sự miêu tả | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
trình giả lập: bắt đầu | Bắt đầu trình mô phỏng cho các sản phẩm Firebase được định cấu hình trong firebase.json . Quá trình mô phỏng sẽ tiếp tục chạy cho đến khi dừng rõ ràng. Gọi emulators:start sẽ tải trình giả lập xuống ~/.cache/firebase/emulators/ nếu chúng chưa được cài đặt.
| ||||||||||||
trình giả lập: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 được định cấu hình trong firebase.json . Quá trình mô phỏng sẽ tự động dừng khi tập lệnh chạy xong.
|
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 trình mô phỏng
Bạn có thể xuất dữ liệu từ Xác thực, Cloud Firestore, Cơ sở dữ liệu thời gian thực và Lưu trữ đám mây cho trình mô phỏng Firebase để sử dụng làm tập dữ liệu cơ sở chung, có thể chia sẻ. Những tập dữ liệu này có thể được nhập bằng cờ --import
, như được mô tả ở trên.
trình giả lập: export_directory | Xác thực, Cloud Firestore, Cơ sở dữ liệu thời gian thực hoặc Lưu trữ đám mây cho trình giả lập Firebase . Xuất dữ liệu từ Cloud Firestore, Cơ sở dữ liệu thời gian thực hoặc Cloud Storage đang chạy cho phiên bản trình mô phỏng Firebase. Bạn có thể hướng dẫn trình mô phỏng tự động xuất dữ liệu khi tắt máy bằng cách sử dụng cờ |
Tích hợp với hệ thống CI của bạn
Chạy hình ảnh Bộ mô phỏng được đóng gói
Việc cài đặt và cấu hình Emulator Suite với các bộ chứa trong thiết lập CI thông thường rất đơn giản.
Có một số vấn đề cần lưu ý:
Các tệp JAR được cài đặt và lưu vào bộ đệm tại
~/.cache/firebase/emulators/
.- Bạn có thể muốn thêm đường dẫn này vào cấu hình bộ đệm CI của mình để tránh tải xuống nhiều lần.
Nếu không có tệp
firebase.json
trong kho lưu trữ của mình, bạn phải thêm đối số dòng lệnh vàoemulators:start
hoặc lệnh trìnhemulators: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ỉ 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
. Các trình giả lập 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; điều này không nên được thực hiện từ hệ thống CI. 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ẽ hợp lệ trên các bản dựng. Mã thông báo phải được coi như mật khẩu; đảm bảo rằng nó được giữ bí mật.
Nếu môi trường CI của bạn cho phép bạn chỉ định các biến môi trường có thể được sử dụng trong tập lệnh xây dựng, bạn chỉ cần tạo một biến môi trường có tên FIREBASE_TOKEN
, với giá trị là chuỗi mã thông báo truy cập. Firebase CLI sẽ tự động nhận biến môi trường FIREBASE_TOKEN
và trình mô phỏng sẽ khởi động đúng cách.
Phương án cuối cùng là bạn có thể chỉ cần đưa mã thông báo vào tập lệnh xây dựng của mình nhưng hãy đảm bảo rằng các bên không tin cậy sẽ không có quyền truy cập. Đối với cách tiếp cận được mã hóa cứng 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
Danh sách các trình giả lập đang chạy
Để liệt kê các trình mô phỏng hiện đang chạy, hãy gửi yêu cầu GET
đến điểm cuối /emulators
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 của chú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 nền
Trong một số trường hợp, bạn sẽ cần phải tạm thời tắt chức năng cục bộ và trình kích hoạt tiện ích mở rộng. Ví dụ: bạn có thể muốn xóa tất cả dữ liệu trong trình mô phỏng Cloud Firestore mà không kích hoạt bất kỳ chức năng onDelete
nào đang chạy trong trình mô phỏng Chức năng đám mây hoặc Tiện ích mở rộng.
Để tạm thời tắt trình kích hoạt chức năng 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 mô tả chi tiết trạng thái hiện tại.
{
"enabled": false
}
Để bật trình kích hoạt chức năng cục bộ sau khi chúng bị tắt, hãy gửi yêu cầu PUT
đến điểm cuối /functions/enableBackgroundTriggers
của Trung tâm Trình mô phỏng.
curl -X PUT localhost:4400/functions/enableBackgroundTriggers
Kết quả sẽ là một đối tượng JSON mô tả chi tiết 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 SDK khách và SDK quản trị hỗ trợ. Tương lai có nghĩa là hỗ trợ trình mô phỏng đã được lên kế hoạch nhưng chưa có sẵn.
Tính khả dụng của SDK khách hàng
Android | Nền tảng của Apple | Web | Giao diện người dùng căn cứ hỏa lực Android | Giao diện người dùng căn cứ hỏa lực iOS | Giao diện người dùng căn cứ hỏa lực Web | |
---|---|---|---|---|---|---|
Cơ sở dữ liệu thời gian thực | 19.4.0 | 7.2.0 | 8.0.0 | 6.4.0 | Tương lai | không áp dụng |
Cửa hàng đám mây | 21.6.0 | 7.2.0 | 8.0.0 | 6.4.0 | Tương lai | không áp dụng |
Xác thực | 20.0.0 | 7.0.0 | 8.0.0 | 7.0.0 | Tương lai | 4.7.2 |
Bộ nhớ đám mây cho Firebase | 20.0.0 | 8.0.0 | 8.4.0 | 7.0.0 | 11.0.0 | không áp dụng |
Chức năng đám mây | 19.1.0 | 7.2.0 | 8.0.0 | không áp dụng | không áp dụng | không áp dụng |
Lưu trữ | không áp dụng | không áp dụng | không áp dụng | không áp dụng | không áp dụng | không áp dụng |
Tiện ích mở rộng | không áp dụng | không áp dụng | không áp dụng | không áp dụng | không áp dụng | không áp dụng |
Tính khả dụng của SDK quản trị
Nút | Java | Python | Đi | |
---|---|---|---|---|
Cơ sở dữ liệu thời gian thực | 8.6.0 | 6.10.0 | 2.18.0 | Tương lai |
Cửa hàng đám mây | 8.0.0 | 6.10.0 | 3.0.0 | 1.0.0 |
Xác thực | 9.3.0 | 7.2.0 | 5.0.0 | 4.2.0 |
Bộ nhớ đám mây cho Firebase | 9.8.0 | Tương lai | Tương lai | Tương lai |
Chức năng đám mây | không áp dụng | không áp dụng | không áp dụng | không áp dụng |
Lưu trữ | không áp dụng | không áp dụng | không áp dụng | không áp dụng |
Tiện ích mở rộng | không áp dụng | không áp dụng | không áp dụng | không áp dụng |