يمكن تثبيت "حزمة أدوات المحاكاة المحلية من Firebase" وإعدادها وبيئات الاختبار والنماذج الأوّلية، أي شيء بدءًا من جلسات النماذج الأوّلية لمرة واحدة إلى وسير عمل الدمج المستمر على مستوى الإنتاج.
تثبيت "مجموعة أدوات المحاكاة المحلية"
قبل تثبيت مجموعة المحاكيات، ستحتاج إلى ما يلي:
لتثبيت "حزمة المحاكي"، يُرجى اتّباع الخطوات التالية:
- ثبِّت واجهة سطر الأوامر Firebase.
في حال لم يسبق لك تثبيت واجهة سطر الأوامر في Firebase
تثبيته الآن.
ستحتاج إلى الإصدار 8.14.0 أو إصدار أحدث من واجهة سطر الأوامر لاستخدام "مجموعة أدوات المحاكاة". يمكنك
يمكنك التحقّق من الإصدار الذي ثبَّته باستخدام الأمر التالي:
firebase --version
- يُرجى إعداد دليل العمل الحالي، إذا لم يسبق لك إجراء ذلك.
كمشروع في Firebase، باتباع المطالبات التي تظهر على الشاشة لتحديد
المنتجات المراد استخدامها:
firebase init
- ابدأ إعداد "مجموعة أدوات المحاكاة". يؤدي هذا الأمر إلى بدء معالج تهيئة
تتيح لك اختيار أدوات المحاكاة التي تهمّك، وتنزيل المحاكي المقابل
والملفات الثنائية وتعيين منافذ المحاكي إذا لم تكن القيم الافتراضية مناسبة.
firebase init emulators
وبعد تثبيت المحاكي، لا يتم إجراء أي عمليات بحث عن التحديثات أو ستحدث عمليات التنزيل التلقائية إلى أن يتم تحديث إصدار واجهة سطر الأوامر في Firebase.
إعداد "مجموعة أدوات المحاكاة"
يمكنك اختياريًا ضبط إعدادات المحاكيات منافذ الشبكة ومسار "الأمان"
تعريفات القواعد في ملف 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 |
إعدادات رقم تعريف المشروع
وبناءً على كيفية استدعاء المحاكاة، يمكنك تشغيل مثيلات متعددة من الذي يستخدم أرقام تعريف مختلفة لمشروع Firebase أو مثيلات مُحاكيات متعددة لمعرّف مشروع معين. وفي هذه الحالات، يتم تشغيل مثيلات المحاكي في بيئة منفصلة.
من المفيد بشكل عام تعيين رقم تعريف مشروع واحد لجميع أدوات المحاكاة والاستدعاءات، وبالتالي فإن Emulator Suite UI، والمحاكيات المختلفة للمنتجات، وجميع فإن تشغيل مثيلات محددة من محاكي معين يمكن أن يتصل بشكل صحيح بجميع الحالات.
يتم إصدار تحذيرات بسبب "Local Emulator Suite" عند رصد عدة أرقام تعريف مشروع في
بيئات العمل، على الرغم من أنه يمكنك إلغاء هذا السلوك من خلال تعيين
تم إدخال مفتاح singleProjectMode
للوصول إلى false
في firebase.json
.
يمكنك مراجعة بيانات أرقام تعريف المشروع بحثًا عن حالات عدم التطابق في:
- المشروع التلقائي في سطر الأوامر: بشكل افتراضي، سيتضمن معرف المشروع
عند بدء التشغيل من المشروع المحدد باستخدام
firebase init
أوfirebase use
لعرض قائمة المشاريع (ومعرفة المشروع الذي تم اختياره) استخدامfirebase projects:list
. - اختبارات وحدة القواعد: غالبًا ما يتم تحديد رقم تعريف المشروع في الطلبات على القواعد
طريقة مكتبة اختبار الوحدات
initializeTestEnvironment
أوinitializeTestApp
. - علامة سطر الأوامر
--project
اجتياز واجهة سطر الأوامر Firebase تلغي العلامة--project
المشروع التلقائي. يجب التأكّد من أنّ قيمة تتطابق العلامة مع رقم تعريف المشروع في اختبارات الوحدات وإعداد التطبيق.
تحقَّق أيضًا من عمليات ضبط رقم تعريف المشروع الخاصة بالنظام الأساسي والتي ضبطتها أثناء ضبط أنظمة Apple الأساسية، مشاريع Android والويب.
ضبط قواعد الأمان
ستتولى أدوات المحاكاة إعداد "قواعد الأمان" من database
،
مفتاحا الإعداد firestore
وstorage
في 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"
}
}
}
تحديد خيارات Java
المحاكي Realtime Database ومحاكي Cloud Firestore وجزء من
يستند المحاكي "Cloud Storage for Firebase" إلى لغة Java التي يمكن تخصيصها
مع علامات JVM عبر متغير البيئة JAVA_TOOL_OPTIONS
.
على سبيل المثال، إذا واجهت أخطاء متعلقة بمساحة الذاكرة المؤقتة في Java، يمكنك زيادة الحد الأقصى لحجم الذاكرة في Java هو 4 غيغابايت:
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
يمكن تحديد علامات متعددة بين علامتي اقتباس مفصولة بمسافات، مثل
JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g"
ولا تؤثر العلامات إلا على الملفات المستندة إلى Java
في وحدات المحاكاة وليس لها أي تأثير في الأجزاء الأخرى من
Firebase واجهة سطر الأوامر، مثل Emulator Suite UI.
أدوات محاكاة بدء التشغيل
يمكنك بدء تشغيل المحاكيات إلى أن يتم إنهاؤها يدويًا أو تشغيلها في مدة البرنامج النصي المخصص للاختبار ثم يتم إيقافه تلقائيًا.
الطلب | الوصف | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
محاكيات:بدء | بدء المحاكيات لمنتجات Firebase التي تم إعدادها في firebase.json .
وسيستمر تشغيل عمليات المحاكاة إلى أن يتم إيقافها بشكل صريح. إجراء المكالمات
سينزّل emulators:start أدوات المحاكاة إلى ~/.cache/firebase/emulators/ في حال
فهي غير مثبتة بالفعل.
|
||||||||||||
emulatory:exec scriptpath | يمكنك تشغيل النص البرمجي على scriptpath بعد بدء محاكيات منتجات Firebase
تم إعداده في firebase.json . ستتوقف عمليات المحاكاة تلقائيًا عند
انتهى تشغيل النص البرمجي.
|
تكون الطريقة firebase emulators:exec
بشكل عام أكثر ملاءمةً
وسير عمل الدمج المستمر.
تصدير بيانات المحاكي واستيرادها
يمكنك تصدير البيانات من Authentication وCloud Firestore وRealtime Database
Cloud Storage for Firebase من الأجهزة المحاكية التي يمكن استخدامها كبيانات أساسية شائعة وقابلة للمشاركة
تعيين. يمكن استيراد مجموعات البيانات هذه باستخدام العلامة --import
، مثل
الموضحة أعلاه.
المحاكيات:تصدير export_directory |
محاكي Authentication أو Cloud Firestore أو Realtime Database أو Cloud Storage for Firebase
تصدير البيانات من Cloud Firestore أو Realtime Database أو Cloud Storage for Firebase قيد التشغيل
مثيل المحاكي. سيتم إنشاء قيمة
ويمكنك توجيه الأجهزة المحاكية إلى تصدير البيانات تلقائيًا عند إيقافها نهائيًا باستخدام
|
الدمج مع نظام CI
تشغيل صور مجموعة المحاكيات المضمّنة في الحاوية
تثبيت مجموعة أدوات المحاكاة وإعدادها مع حاويات يكون إعداد CI النموذجي أمرًا سهلاً.
هناك بعض المشاكل التي يجب أخذها في الاعتبار:
يتم تثبيت ملفات JAR وتخزينها مؤقتًا في
~/.cache/firebase/emulators/
.- قد تحتاج إلى إضافة هذا المسار إلى إعدادات ذاكرة التخزين المؤقت في CI عمليات التنزيل المتكررة.
إذا لم يكن لديك ملف
firebase.json
في المستودع، يجب إضافة وسيطة سطر الأوامر إلى الأمرemulators:start
أوemulators:exec
لتحديد المحاكيات التي يجب تشغيلها. على سبيل المثال:--only functions,firestore
إنشاء رمز مصادقة مميز (محاكي الاستضافة فقط)
في حال كانت عمليات الدمج المتواصل تعتمد على Firebase Hosting، عليك
سيحتاج إلى تسجيل الدخول باستخدام رمز مميّز لتشغيل firebase emulators:exec
. تشير رسالة الأشكال البيانية
لا تتطلب أدوات المحاكاة الأخرى تسجيل الدخول.
لإنشاء رمز مميّز، شغِّل firebase login:ci
في بيئتك المحلية. لا ينبغي تنفيذ ذلك من نظام CI. اتّبِع التعليمات للمصادقة. ستحتاج إلى تنفيذ هذه الخطوة مرة واحدة فقط لكل مشروع، لأنّ الرمز المميّز سيكون صالحًا على مستوى الإصدارات. يجب التعامل مع الرمز المميّز مثل كلمة المرور. للتأكد من إبقاءه سريًا.
إذا كانت بيئة CI الخاصة بك تسمح لك بتحديد متغيرات البيئة التي يمكن
المستخدم في النصوص البرمجية للإصدار، فما عليك سوى إنشاء متغير بيئة يسمى
FIREBASE_TOKEN
، وتكون القيمة سلسلة رمز الدخول. واجهة سطر الأوامر في Firebase
تلقائيًا متغير البيئة FIREBASE_TOKEN
أن تعمل ألعاب المحاكاة بشكل صحيح.
كحلٍ أخير، يمكنك ببساطة تضمين الرمز المميز في النص البرمجي للإصدار، ولكن
والتأكد من عدم وصول الجهات غير الموثوق بها إلى ملفاتها. لهذا البرنامج غير الثابت
يمكنك إضافة --token "YOUR_TOKEN_STRING_HERE"
إلى
الأمر firebase emulators:exec
.
استخدام واجهة برمجة التطبيقات Emulator Hub REST
عرض قائمة بمحاكيات التشغيل
لإدراج أدوات المحاكاة قيد التشغيل حاليًا، أرسِل طلب GET
إلى /emulators
.
نقطة نهاية Eulator 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
إلى
نقطة نهاية /functions/disableBackgroundTriggers
في Emulator Hub.
curl -X PUT localhost:4400/functions/disableBackgroundTriggers
وستكون النتيجة كائن JSON يوضح بالتفصيل الحالة الحالية.
{
"enabled": false
}
لتفعيل مشغِّلات الدوال المحلية بعد إيقافها، أرسِل PUT
طلب إلى نقطة النهاية /functions/enableBackgroundTriggers
في المحاكي
المحتوى الرئيسي.
curl -X PUT localhost:4400/functions/enableBackgroundTriggers
وستكون النتيجة كائن JSON يوضح بالتفصيل الحالة الحالية.
{
"enabled": true
}
عمليات دمج حزمة تطوير البرامج (SDK) للمحاكي
تشير الجداول الواردة في هذا القسم إلى أدوات المحاكاة التي يتيح العميل استخدامها SDK للمشرف. يعني المستقبل أنّه تم التخطيط لتوفير المحاكي ولكن ليس بعد. المتوفرة.
مدى توفّر حزمة تطوير البرامج (SDK) للعميل
Android | أنظمة Apple الأساسية | الويب |
واجهة مستخدم Firebase Android |
واجهة مستخدم Firebase iOS |
واجهة مستخدم Firebase الويب |
|
---|---|---|---|---|---|---|
Realtime Database | 19.4 | 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 | غير متاح | غير متاح | غير متاح | غير متاح | غير متاح | لا ينطبق |
مدى توفُّر حزمة تطوير البرامج (SDK) للمشرف
العقدة | Java | Python | انتقال | |
---|---|---|---|---|
Realtime Database | 8.6.0 | 6.10.0 | 2.18 | صيغة المستقبل |
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 | غير متاح | غير متاح | غير متاح | لا ينطبق |