يمكنك تحسين أداء ألعاب C++ باستخدام حِزم تطوير البرامج (SDK) لـ Firebase C++ التي توفّر واجهة C++ على حِزم تطوير البرامج (SDK) لـ Firebase.
يمكنك الوصول إلى Firebase بالكامل من رمز C++ البرمجي، بدون الحاجة إلى كتابة أي رمز برمجي تابع للنظام الأساسي. تُترجم حزمة تطوير البرامج (SDK) لمنصّة Firebase أيضًا العديد من عبارات برمجة الخاصة بلغة معيّنة والتي تستخدمها Firebase إلى واجهة أكثر شيوعًا لمطوّري C++.
يمكنك الاطّلاع على مزيد من المعلومات عن تحسين أداء ألعابك باستخدام Firebase على صفحة ألعاب Firebase.
هل سبق لك إضافة Firebase إلى مشروع C++؟ تأكَّد من استخدام أحدث إصدار من حزمة Firebase C++ SDK.
المتطلبات الأساسية
ثبِّت المحرِّر أو بيئة التطوير المتكاملة المفضّلة لديك، مثل Android Studio أو IntelliJ أو VS Code.
تأكَّد من أنّ مشروعك يستوفي المتطلبات التالية:
استهداف المستوى 21 من واجهة برمجة التطبيقات (Lollipop) أو إصدار أحدث
يستخدم Gradle ويتم ضبطه باستخدام CMake
يمكنك إعداد جهاز فعلي أو استخدام محاكي لتشغيل تطبيقك.
يجب أن تستخدم البرامج المحاكية صورة محاكي مع Google Play.
بالنسبة إلى بعض مكتبات C++، تكون "خدمات Google Play" مطلوبة على جهاز العميل، لذا راجِع هذه المحاولة في هذه الصفحة.
سجِّل الدخول إلى Firebase باستخدام حسابك على Google.
الخطوة 2: إنشاء مشروع على Firebase
قبل أن تتمكّن من إضافة Firebase إلى مشروع C++، عليك إنشاء مشروع Firebase للربط بمشروع C++. انتقِل إلى مقالة فهم مشاريع Firebase للاطّلاع على مزيد من المعلومات عن مشاريع Firebase.
الخطوة 3: تسجيل تطبيقك في Firebase
لاستخدام Firebase في تطبيق Android، عليك تسجيل تطبيقك في مشروعك على Firebase. غالبًا ما يُشار إلى عملية تسجيل تطبيقك باسم "إضافة" تطبيقك إلى مشروعك.
انتقِل إلى وحدة تحكّم Firebase.
في وسط صفحة النظرة العامة على المشروع، انقر على رمز Android (
) أو إضافة تطبيق لبدء سير عمل الإعداد.أدخِل اسم حزمة تطبيقك في حقل اسم حزمة Android.
(اختياري) أدخِل معلومات التطبيق الأخرى: اسم التطبيق المعرِّف وشهادة توقيع تصحيح الأخطاء بتنسيق SHA-1.
انقر على تسجيل التطبيق.
الخطوة 4: إضافة ملف إعدادات Firebase
انقر على تنزيل google-services.json للحصول على ملف إعدادات Firebase لنظام Android.
افتح مشروع C++ في بيئة تطوير متكاملة، ثم أضِف ملف الضبط إلى مشروعك:
عمليات إنشاء Gradle: أضِف ملف الإعدادات إلى الدليل نفسه الذي يتضمّنملف
build.gradle
على مستوى القمة.أنظمة الإنشاء الأخرى: اطّلِع على أنظمة الإنشاء المخصّصة أدناه لإنشاء موارد سلاسل Android.
(عمليات إنشاء Gradle فقط) لتفعيل خدمات Firebase في مشروعك المكتوب بلغة C++، أضِف مكوّن google-services المكوّن إلى ملف
build.gradle
من المستوى الأعلى.أضِف قواعد لتضمين المكوّن الإضافي لـ Gradle في "خدمات Google". تأكَّد أيضًا من توفّر مستودع Maven من Google.
buildscript { repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository } dependencies { // ... // Add the following lines: classpath 'com.google.gms:google-services:4.4.2' // Google Services plugin implementation 'com.google.android.gms:18.5.0' } } allprojects { // ... repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository // ... } }
طبِّق المكوّن الإضافي لـ Google Services Gradle:
apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
اكتملت مهام الإعداد في وحدة تحكّم Firebase. تابِع إلى إضافة حِزم تطوير البرامج (SDK) لمنصّة Firebase C++ أدناه.
الخطوة 5: إضافة حِزم تطوير البرامج (SDK) لمنصّة Firebase C++
تقدّم الخطوات الواردة في هذا القسم مثالاً على كيفية إضافة منتجات Firebase المتوافقة إلى مشروع Firebase C++.
نزِّل حزمة SDK لنظام التشغيل Firebase C++، ثم فك ضغط حزمة SDK في مكان مناسب.
لا تقتصر حزمة SDK Firebase C++ على منصة معيّنة، ولكنها تحتوي على مكتبات مخصّصة للمنصة.
في ملف
gradle.properties
الخاص بمشروعك، حدِّد موقع حزمة SDK المفكَّكة:systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
أضِف المحتوى التالي إلى ملف
settings.gradle
في مشروعك:def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir') gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir" includeBuild "$firebase_cpp_sdk_dir"
أضِف المحتوى التالي إلى ملف Gradle للوحدة (على مستوى التطبيق) (عادةً
app/build.gradle
).
أدرِج العناصر الاعتمادية للمكتبة لمنتجات Firebase التي تريد استخدامها في تطبيقك.تم تفعيل Analytics
android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } # Add the dependencies for the Firebase products you want to use in your app # For example, to use Analytics, Firebase Authentication, and Firebase Realtime Database apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { analytics auth database }
لم يتم تفعيل Analytics
android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } # Add the dependencies for the Firebase products you want to use in your app # For example, to use Firebase Authentication and Firebase Realtime Database apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { auth database }
أضِف المحتوى التالي إلى ملف
CMakeLists.txt
في مشروعك.
أدرِج المكتبات لمنتجات Firebase التي تريد استخدامها في تطبيقك.تم تفعيل Analytics
# Add Firebase libraries to the target using the function from the SDK. add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) # The Firebase C++ library `firebase_app` is required, # and it must always be listed last. # Add the Firebase SDKs for the products you want to use in your app # For example, to use Analytics, Firebase Authentication, and Firebase Realtime Database set(firebase_libs firebase_analytics firebase_auth firebase_database firebase_app ) target_link_libraries(${target_name} "${firebase_libs}")
لم يتم تفعيل Analytics
# Add Firebase libraries to the target using the function from the SDK. add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) # The Firebase C++ library `firebase_app` is required, # and it must always be listed last. # Add the Firebase SDKs for the products you want to use in your app # For example, to use Firebase Authentication and Firebase Realtime Database set(firebase_libs firebase_auth firebase_database firebase_app ) target_link_libraries(${target_name} "${firebase_libs}")
مزامنة تطبيقك للتأكّد من توفّر الإصدارات اللازمة لجميع التبعيات
إذا أضفت Analytics، شغِّل تطبيقك لإرسال إثبات إلى Firebase بأنّك دمجت Firebase بنجاح. بخلاف ذلك، يمكنك تخطّي خطوة إثبات الهوية.
ستعرض سجلات جهازك عملية إثبات ملكية Firebase التي اكتملت عملية الإعداد. إذا شغّلت تطبيقك على محاكي يتيح الوصول إلى الشبكة، تُعلمك وحدة تحكّم Firebase بإكمال عملية ربط التطبيق.
اكتملت عملية الإعداد. أن يكون تطبيقك المكتوب بلغة C++ مسجَّلاً ومُعدًّا لاستخدام خدمات Firebase
المكتبات المتاحة
يمكنك الاطّلاع على مزيد من المعلومات حول مكتبات Firebase لـ C++ في المستندات المرجعية وفي إصدار حِزم تطوير البرامج (SDK) المفتوحة المصدر على GitHub.
المكتبات المتاحة لنظام التشغيل Android (باستخدام CMake)
يُرجى العلم أنّ مكتبات C++ لأنظمة التشغيل من Apple مُدرَجة في إصدار أنظمة التشغيل من Apple (iOS والإصدارات الأحدث) من صفحة الإعداد هذه.
منتج Firebase | مراجع المكتبة ( firebaseCpp.dependencies لملف build.gradle ) |
مراجع المكتبة ( firebase_libs لملف CMakeLists.txt ) |
---|---|---|
AdMob | admob |
firebase_admob (مطلوبة) firebase_analytics (مطلوبة) firebase_app
|
Analytics | analytics |
firebase_analytics (مطلوبة) firebase_app
|
App Check | appCheck |
firebase_app_check (مطلوبة) firebase_app
|
Authentication | auth |
firebase_auth (مطلوبة) firebase_app
|
Cloud Firestore | firestore |
firebase_firestore (مطلوبة) firebase_auth (مطلوبة) firebase_app
|
Cloud Functions | functions |
firebase_functions (مطلوبة) firebase_app
|
Cloud Messaging | messaging |
firebase_messaging (مُقترَح) firebase_analytics (مطلوب) firebase_app
|
Cloud Storage | storage |
firebase_storage (مطلوبة) firebase_app
|
Dynamic Links | dynamicLinks |
firebase_dynamic_links (مُقترَح) firebase_analytics (مطلوب) firebase_app
|
Realtime Database | database |
firebase_database (مطلوبة) firebase_app
|
Remote Config | remoteConfig |
firebase_remote_config (مُقترَح) firebase_analytics (مطلوبة) firebase_app
|
معلومات إضافية حول إعداد الأجهزة الجوّالة
الحصول على تقارير أعطال NDK
Firebase Crashlytics يتيح الإبلاغ عن الأعطال في التطبيقات التي تستخدم مكتبات Android التلقائية. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة الحصول على تقارير الأعطال في Android NDK.
أنظمة الإنشاء المخصّصة
توفّر Firebase النص البرمجي generate_xml_from_google_services_json.py
لتحويل google-services.json
إلى موارد .xml
يمكنك تضمينها في
مشروعك. يطبّق هذا النص البرمجي عملية التحويل نفسها التي ينفّذها المكوّن الإضافي Gradle لخدمات Google Play عند إنشاء تطبيقات Android.
إذا كنت لا تُنشئ باستخدام Gradle (على سبيل المثال، كنت تستخدم ndk-build وملفات makefile وVisual Studio وما إلى ذلك)، يمكنك استخدام هذا النص البرمجي لأتمتة إنشاء موارد سلسلتَي Android.
ProGuard
تستخدم العديد من أنظمة إنشاء التطبيقات لنظام التشغيل Android أداة ProGuard لإنشاء الإصدارات في وضع الإصدار لتصغير أحجام التطبيقات وحماية رمز مصدر Java.
إذا كنت تستخدم ProGuard، عليك إضافة الملفات في libs/android/*.pro
التي تتوافق مع مكتبات Firebase C++ التي تستخدمها في إعدادات ProGuard.
على سبيل المثال، باستخدام Gradle، إذا كنت تستخدم Google Analytics،
سيبدو ملف build.gradle
على النحو التالي:
android { // ... buildTypes { release { minifyEnabled true proguardFile getDefaultProguardFile('your-project-proguard-config.txt') proguardFile file(project.ext.your_local_firebase_sdk_dir + "/libs/android/app.pro") proguardFile file(project.ext.your_local_firebase_sdk_dir + "/libs/android/analytics.pro") // ... and so on, for each Firebase C++ library that you're using } } }
متطلبات "خدمات Google Play"
تتطلّب معظم مكتبات Firebase C++ تثبيت
خدمات Google Play
على جهاز Android الخاص بالعميل. إذا كانت مكتبة Firebase C++ تعرض القيمة
kInitResultFailedMissingDependency
عند الإعداد، يعني ذلك أنّ "خدمات Google Play" غير متاحة على
جهاز العميل (ما يعني أنّه يجب تحديثها أو إعادة تفعيلها أو تصحيح الأذونات وغيرها). لا يمكن استخدام مكتبة Firebase إلى أن يتم تصحيح المشكلة على
جهاز العميل.
يمكنك معرفة سبب عدم توفّر "خدمات Google Play" على جهاز العميل
(ومحاولة حلّ المشكلة) باستخدام الدوالّ في
google_play_services/availability.h
.
يسرد الجدول التالي ما إذا كانت "خدمات Google Play" مطلوبة على جهاز العميل لكل منتج من منتجات Firebase المتوافقة.
مكتبة Firebase C++ | هل يجب توفُّر "خدمات Google Play" على جهاز العميل؟ |
---|---|
AdMob | غير مطلوب (عادةً) |
Analytics | غير مطلوبة |
Authentication | مطلوب |
Cloud Firestore | مطلوب |
Cloud Functions | مطلوب |
Cloud Messaging | مطلوب |
Cloud Storage | مطلوب |
Dynamic Links | مطلوب |
Realtime Database | مطلوب |
Remote Config | مطلوب |
AdMob و"خدمات Google Play"
يمكن أن تعمل معظم إصدارات حزمة تطوير البرامج (SDK) لنظام التشغيل Android بشكل سليم
بدون "خدمات Google Play" على جهاز العميل.Google Mobile Ads ومع ذلك، إذا كنت تستخدم تبعية com.google.android.gms:play-services-ads-lite
بدلاً من تبعية com.google.firebase:firebase-ads
العادية المدرَجة أعلاه، يجب تثبيت "خدمات Google Play".
لن تؤدي عملية إعداد AdMob إلى عرض kInitResultFailedMissingDependency
إلا عندما يكون كلا الشرطَين التاليَين صحيحَين:
- "خدمات Google Play" غير متاحة على جهاز العميل.
- إذا كنت تستخدم
com.google.android.gms:play-services-ads-lite
إعداد سير عمل على الكمبيوتر المكتبي (إصدار تجريبي)
عند إنشاء لعبة، غالبًا ما يكون من الأسهل اختبارها على منصات الكمبيوتر المكتبي أولاً، ثم نشرها واختبارها على الأجهزة الجوّالة في مرحلة التطوير اللاحقة. لدعم سير العمل هذا، نوفّر مجموعة فرعية من حِزم SDK الخاصة بـ Firebase C++ والتي يمكن تشغيلها على Windows وmacOS وLinux ومن داخل محرِّر C++.
بالنسبة إلى سير العمل على أجهزة الكمبيوتر المكتبي، عليك إكمال ما يلي:
- اضبط مشروع C++ ليكون متوافقًا مع CMake.
- إنشاء مشروع على Firebase
- تسجيل تطبيقك (iOS أو Android) في Firebase
- إضافة ملف إعدادات Firebase لمنصّة الأجهزة الجوّالة
أنشئ إصدارًا مخصّصًا لأجهزة الكمبيوتر المكتبي من ملف إعدادات Firebase:
في حال إضافة ملف
google-services.json
لنظام التشغيل Android: عند تشغيل تطبيقك، ترصد Firebase موقع هذا الملف المتوافق مع الأجهزة الجوّالة، ثم تنشئ تلقائيًا ملف إعدادات لأجهزة الكمبيوتر المكتبي في Firebase (google-services-desktop.json
).في حال إضافة ملف
GoogleService-Info.plist
لنظام التشغيل iOS: قبل تشغيل تطبيقك، عليك تحويل هذا الملف المخصّص للأجهزة الجوّالة إلى ملف إعدادات لأجهزة الكمبيوتر في Firebase. لتحويل الملف، نفِّذ الأمر التالي من الدليل نفسه الذي يتضمّن ملفGoogleService-Info.plist
:generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist
يحتوي ملف الإعدادات هذا المخصّص للكمبيوتر المكتبي على معرّف مشروع C++ الذي أدخلته في سير عمل إعداد وحدة تحكّم Firebase. انتقِل إلى مقالة فهم مشاريع Firebase للاطّلاع على مزيد من المعلومات عن ملفات الإعداد.
أضِف حِزم تطوير البرامج (SDK) لمنصّة Firebase إلى مشروع C++.
تقدّم الخطوات أدناه مثالاً على كيفية إضافة أي منتج متوافق من Firebase إلى مشروعك المكتوب بلغة C++. في هذا المثال، سنشرح كيفية إضافة Firebase Authentication وFirebase Realtime Database.
اضبط متغيّر البيئة
FIREBASE_CPP_SDK_DIR
على الموقع الجغرافي لحزمة SDK غير المضغوطة من Firebase C++.أضِف المحتوى التالي إلى ملف
CMakeLists.txt
في مشروعك، بما في ذلك المكتبات لمنتجات Firebase التي تريد استخدامها. على سبيل المثال، لاستخدام Firebase Authentication وFirebase Realtime Database:# Add Firebase libraries to the target using the function from the SDK. add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) # The Firebase C++ library `firebase_app` is required, # and it must always be listed last. # Add the Firebase SDKs for the products you want to use in your app # For example, to use Firebase Authentication and Firebase Realtime Database set(firebase_libs firebase_auth firebase_database firebase_app) target_link_libraries(${target_name} "${firebase_libs}")
شغِّل تطبيق C++.
المكتبات المتاحة (أجهزة الكمبيوتر المكتبي)
تتضمّن حزمة تطوير البرامج (SDK) لمنصّة Firebase C++ دعم سير العمل على أجهزة الكمبيوتر المكتبي لمجموعة فرعية من الميزات، ما يتيح استخدام أجزاء معيّنة من Firebase في إصدارات مستقلة لأجهزة الكمبيوتر المكتبي على نظام التشغيل Windows وmacOS وLinux.
منتج Firebase | مراجع المكتبة (باستخدام CMake) |
---|---|
App Check |
firebase_app_check (مطلوبة) firebase_app
|
Authentication |
firebase_auth (مطلوبة) firebase_app
|
Cloud Firestore |
firebase_firestore firebase_auth firebase_app
|
Cloud Functions |
firebase_functions (مطلوبة) firebase_app
|
Cloud Storage |
firebase_storage (مطلوبة) firebase_app
|
Realtime Database |
firebase_database (مطلوبة) firebase_app
|
Remote Config |
firebase_remote_config (مطلوبة) firebase_app
|
توفّر Firebase مكتبات أجهزة الكمبيوتر المكتبي المتبقية كعمليات تنفيذ مقتضبة (غير وظيفية) للتيسير عند الإنشاء لنظام التشغيل Windows وmacOS وLinux. لذلك، لا تحتاج إلى تجميع الرمز بشكل مشروط لاستهداف أجهزة الكمبيوتر المكتبي.
Realtime Database الكمبيوتر المكتبي
تستخدم حزمة Realtime Database SDK لأجهزة الكمبيوتر المكتبي واجهة برمجة التطبيقات REST للوصول إلى قاعدة بياناتك، لذا عليك
الإفصاح عن الفهارس التي
تستخدمها مع Query::OrderByChild()
على أجهزة الكمبيوتر المكتبي وإلا لن تعمل أدوات الاستماع.
معلومات إضافية حول إعداد الكمبيوتر المكتبي
مكتبات Windows
بالنسبة إلى نظام التشغيل Windows، يتم توفير إصدارات المكتبة استنادًا إلى ما يلي:
- منصة الإنشاء: وضع 32 بت (x86) مقابل وضع 64 بت (x64)
- بيئة التشغيل في Windows: تطبيقات متعددة المعالجة / MT مقارنةً بمكتبات DLL متعددة المعالجة /MD
- الاستهداف: الإصدار العادي مقابل الإصدار التجريبي
يُرجى العِلم أنّه تم اختبار المكتبات التالية باستخدام Visual Studio 2015 و2017.
عند إنشاء تطبيقات سطح المكتب المكتوبة بلغة C++ على نظام التشغيل Windows، عليك ربط مكتبات حزمة تطوير البرامج (SDK) التالية لنظام التشغيل Windows بمشروعك. يمكنك الرجوع إلى مستندات المُجمِّع للحصول على مزيد من المعلومات.
مكتبة Firebase C++ | العناصر التابعة لمكتبة حزمة تطوير البرامج (SDK) لنظام التشغيل Windows |
---|---|
App Check | advapi32, ws2_32, crypt32 |
Authentication | advapi32, ws2_32, crypt32 |
Cloud Firestore | advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32 |
Cloud Functions | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
Cloud Storage | advapi32, ws2_32, crypt32 |
Realtime Database | advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv |
Remote Config | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
مكتبات نظام التشغيل macOS
بالنسبة إلى نظام التشغيل macOS (Darwin)، يتم توفير إصدارات المكتبة للنظام الأساسي (x86_64) بسعة 64 بت. نوفّر أيضًا إطارات عمل لتسهيل الأمر عليك.
يُرجى العِلم أنّه تم اختبار مكتبات macOS باستخدام Xcode 13.3.1.
عند إنشاء تطبيقات C++ للكمبيوتر المكتبي على نظام التشغيل macOS، عليك ربط ما يلي بمشروعك:
- مكتبة نظام
pthread
CoreFoundation
إطار عمل نظام التشغيل macOSFoundation
إطار عمل نظام التشغيل macOSSecurity
إطار عمل نظام التشغيل macOSGSS
إطار عمل نظام التشغيل macOSKerberos
إطار عمل نظام التشغيل macOSSystemConfiguration
إطار عمل نظام التشغيل macOS
يمكنك الرجوع إلى مستندات المُجمِّع للحصول على مزيد من المعلومات.
مكتبات Linux
بالنسبة إلى نظام التشغيل Linux، يتم توفير إصدارات المكتبة لأنظمة التشغيل المتوافقة مع 32 بت (i386) و64 بت (x86_64).
يُرجى العِلم أنّه تم اختبار مكتبات Linux باستخدام GCC 4.8.0 وGCC 7.2.0 و Clang 5.0 على Ubuntu.
عند إنشاء تطبيقات سطح المكتب المكتوبة بلغة C++ على نظام التشغيل Linux، عليك ربط مكتبة النظام pthread
بمشروعك. يمكنك الرجوع إلى مستندات المُجمِّع للحصول على مزيد من المعلومات. إذا
كنت بصدد إنشاء التطبيق باستخدام الإصدار 5 من GCC أو إصدار أحدث، حدِّد -D_GLIBCXX_USE_CXX11_ABI=0
.
الخطوات التالية
اطّلِع على عيّنات من تطبيقات Firebase.
تجهيز تطبيقك للإطلاق:
- إعداد تنبيهات بشأن الميزانية لمشروعك في وحدة تحكّم Google Cloud
- يمكنك مراقبة لوحة بيانات الاستخدام والفوترة في وحدة تحكّم Firebase للحصول على نظرة عامة على استخدام مشروعك على مستوى خدمات Firebase المتعددة.
- راجِع قائمة التحقّق من إطلاق Firebase.