您可以為不同的平台安裝及設定 Firebase 本機模擬器套件 例如一次性原型工作階段 大規模的持續整合工作流程
安裝本機模擬器套件
安裝模擬器套件前,您會需要:
如何安裝模擬器套件:
- 安裝 Firebase CLI。
如果您尚未安裝 Firebase CLI,
立即安裝。
您需要 CLI 8.14.0 以上版本才能使用模擬器套件。你可以
請使用以下指令檢查您安裝的版本:
firebase --version
- 如果您尚未初始化目前的工作目錄,請先進行初始化
視為 Firebase 專案,請按照畫面上的提示指定
要使用的產品:
firebase init
- 設定模擬器套件。這個指令會啟動設定精靈
可選取感興趣的模擬器、下載對應的模擬器
二進位檔案,並在不適當的情況下設定模擬器通訊埠。
firebase init emulators
模擬器安裝完成後,系統不會執行更新檢查,也不會 除非您更新 Firebase CLI 版本,否則系統將會自動下載。
設定模擬器套件
您可以視需要設定模擬器的網路通訊埠和安全防護措施路徑
firebase.json
檔案中的規則定義:
- 執行
firebase init emulators
或透過編輯的方式變更模擬器通訊埠 手動firebase.json
。 - 編輯「
firebase.json
」以變更安全性規則定義的路徑
如未指定這些設定,模擬器將監聽 預設通訊埠以及 Cloud Firestore、Realtime Database 和 Cloud Storage for Firebase 模擬器會以開放資料安全性的方式執行。
指令 | 說明 |
---|---|
啟動模擬器 | 啟動模擬器初始化精靈。找出要安裝的模擬器,並視需要指定模擬器通訊埠設定。init emulators 不會破壞性;接受預設值會保留目前的模擬器設定。 |
通訊埠設定
每個模擬器都會以偏好的預設值繫結到電腦上的不同通訊埠 值。
模擬器 | 預設通訊埠 |
---|---|
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 |
專案 ID 設定
視叫用模擬器的方式而定,您可以執行多個 使用不同 Firebase 專案 ID 或多個模擬器執行個體的模擬器 特定專案 ID 的憑證在這種情況下,模擬器執行個體會在 獨立環境
建議為所有模擬器設定一個專案 ID 因此 Emulator Suite UI、不同的產品模擬器和 特定模擬器的運作中執行個體 用途
Local Emulator Suite 偵測到多個專案 ID 時,會發出警告
但您可以藉由設定
您 firebase.json
中的 false
須有 singleProjectMode
鍵。
您可以檢查專案 ID 宣告是否在下列位置不一致:
- 指令列中的預設專案。根據預設,專案 ID 會
會在啟動時從所選專案執行,包含
firebase init
或firebase use
。查看專案清單 (並查看專案已選取的項目) 使用firebase projects:list
。 - 規則單元測試。專案 ID 通常會在呼叫 Rules 時指定
單元測試程式庫方法
initializeTestEnvironment
或initializeTestApp
。 - 指令列
--project
旗標。傳遞 Firebase CLI--project
標記會覆寫預設專案。您必須確保 的標記會與單元測試和應用程式初始化中的專案 ID 相符。
並檢查先前設置的平台專屬專案 ID 設定 設定 Apple 平台。 Android 和網路專案。
安全性規則設定
模擬器會從 database
接收安全性規則設定。
firebase.json
中的 firestore
和 storage
設定鍵。
{
// 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"
}
}
}
指定 Java 選項
Realtime Database 模擬器、Cloud Firestore 模擬器,以及
Cloud Storage for Firebase 模擬器以 Java 為基礎,可自訂
並透過環境變數 JAVA_TOOL_OPTIONS
偵測 JVM 旗標
例如,如果您遇到 Java 堆積空間相關錯誤, Java 堆積大小上限至 4 GB:
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
您可以指定多個旗標,並以半形空格分隔,例如:
JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g"
。這些標記只會影響以 Java 為基礎的
,不會影響模擬器其他部分
Firebase CLI,例如 Emulator Suite UI。
啟動模擬器
您可以啟動模擬器持續執行至手動終止,或針對 系統就會執行自動關閉程序。
指令 | 說明 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
emulators:start | 為 firebase.json 中設定的 Firebase 產品啟動模擬器。
模擬器程序會繼續執行,直到明確停止為止。撥號中
emulators:start 會將模擬器下載到 ~/.cache/firebase/emulators/
而非尚未安裝
|
||||||||||||
emulators:exec scriptpath | 啟動 Firebase 產品的模擬器後,在 scriptpath 執行指令碼
您在 firebase.json 中設定的政策。執行遷移作業時,模擬器程序會自動停止
指令碼執行完畢
|
firebase emulators:exec
方法通常比較適合
持續整合工作流程
匯出及匯入模擬器資料
您可以匯出 Authentication、Cloud Firestore、Realtime Database和
可做為可共用的通用基準資料的 Cloud Storage for Firebase 模擬器
設定。您可以使用 --import
旗標匯入這些資料集,
相同。
emulators:export export_directory |
Authentication、Cloud Firestore、Realtime Database 或 Cloud Storage for Firebase 模擬器。
從執行中的 Cloud Firestore、Realtime Database 或 Cloud Storage for Firebase 匯出資料
模擬器執行個體。如果符合,系統就會建立指定的
您可以使用
上述的 |
與持續整合系統整合
執行容器化模擬器套件映像檔
在以下環境中使用容器,安裝及設定 Emulator 套件: 持續整合設定相當簡單
請注意以下幾個問題:
JAR 檔案是在
~/.cache/firebase/emulators/
安裝及快取。- 建議您將這個路徑新增至 CI 快取設定, 重複下載
如果存放區中沒有
firebase.json
檔案,則必須新增emulators:start
或emulators:exec
指令的指令列引數 ,指定要啟動的模擬器。例如:--only functions,firestore
。
產生驗證權杖 (僅限代管模擬器)
如果持續整合工作流程採用 Firebase Hosting,
必須使用權杖登入,才能執行 firebase emulators:exec
。
使用者不必登入就能使用這些模擬器
如要產生權杖,請在本機環境中執行 firebase login:ci
。但不應該透過持續整合系統執行按照操作說明進行驗證。由於每個版本都有效,因此每個專案只需執行這個步驟一次。憑證應視為密碼;保密,務必保密
如果 CI 環境允許您指定
只要建立一個名為
FIREBASE_TOKEN
,值為存取權杖字串。Firebase CLI
會自動採用 FIREBASE_TOKEN
環境變數
模擬器會正常啟動。
萬不得已時,只需在建構指令碼中加入權杖即可。
確認不受信任的方無法存取。如果是這個硬式編碼
可以將 --token "YOUR_TOKEN_STRING_HERE"
新增至
firebase emulators:exec
指令。
使用 Emulator Hub REST API
列出執行中的模擬器
如要列出目前執行中的模擬器,請傳送 GET
要求至 /emulators
以及 Emulator Hub 的端點
curl localhost:4400/emulators
結果會是 JSON 物件,列出所有執行中的模擬器及其內容 主機/通訊埠設定,例如:
{
"hub":{
"name": "hub",
"host": "localhost",
"port": 4400
},
"functions": {
"name": "functions",
"host": "localhost",
"port": 5001
}
"firestore": {
"name": "firestore",
"host": "localhost",
"port": 8080
}
}
啟用 / 停用背景函式觸發條件
在某些情況下,您必須暫時停用本機函式,
。例如,您可能希望刪除
Cloud Firestore 模擬器,而且不會觸發任何onDelete
函式
是在 Cloud Functions 或 Extensions 模擬器中執行。
如要暫時停用本機函式觸發條件,請將 PUT
要求傳送至
Emulator Hub 的 /functions/disableBackgroundTriggers
端點。
curl -X PUT localhost:4400/functions/disableBackgroundTriggers
結果會是列有目前狀態的 JSON 物件。
{
"enabled": false
}
如要在停用後啟用本機函式觸發條件,請傳送 PUT
對模擬器 /functions/enableBackgroundTriggers
端點的要求
中樞,
curl -X PUT localhost:4400/functions/enableBackgroundTriggers
結果會是列有目前狀態的 JSON 物件。
{
"enabled": true
}
模擬器 SDK 整合
本節的表格會指出用戶端支援哪些模擬器 和 Admin SDKFuture 表示已規劃但尚未支援模擬器 廣告。
用戶端 SDK 可用性
Android | Apple 平台 | 網頁 |
Firebase UI Android |
Firebase UI iOS |
Firebase UI 網頁版 |
|
---|---|---|---|---|---|---|
Realtime Database | 19.4.0 版 | 7.2.0 | 8.0.0 | 6.4.0 | 後續 | 不適用 |
Cloud Firestore | 21.6.0 版 | 7.2.0 | 8.0.0 | 6.4.0 | 後續 | 不適用 |
Authentication | 20.0.0 版 | 7.0.0 | 8.0.0 | 7.0.0 | 後續 | 4.7.2 版 |
Cloud Storage for Firebase | 20.0.0 版 | 8.0.0 | 8.4.0 | 7.0.0 | 11.0.0 | 不適用 |
Cloud Functions | 19.1.0 | 7.2.0 | 8.0.0 | 不適用 | 不適用 | 不適用 |
Hosting | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
Extensions | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
Admin SDK 可用性
節點 | Java | Python | 前往 | |
---|---|---|---|---|
Realtime Database | 8.6.0 版 | 6.10.0 | 2.18.0 版 | 後續 |
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 版 | 後續 | 後續 | 後續 |
Cloud Functions | 不適用 | 不適用 | 不適用 | 不適用 |
Hosting | 不適用 | 不適用 | 不適用 | 不適用 |
Extensions | 不適用 | 不適用 | 不適用 | 不適用 |