إضافة Firebase إلى مشروع C++ الخاص بك

يمكنك تعزيز أداء ألعاب C++‎ باستخدام حِزم تطوير البرامج (SDK) الخاصة بلغة C++‎ من Firebase، والتي توفّر واجهة C++‎ بالإضافة إلى حِزم تطوير البرامج (SDK) من Firebase.

يمكنك الوصول إلى Firebase بالكامل من رمز C++ بدون الحاجة إلى كتابة أي رمز برمجي أصلي خاص بالمنصة. تترجم حزمة تطوير البرامج (SDK) من Firebase أيضًا العديد من العبارات الخاصة باللغة التي تستخدمها Firebase إلى واجهة أكثر ألفةً لمطوّري C++.

يمكنك الاطّلاع على مزيد من المعلومات حول تعزيز أداء ألعابك باستخدام Firebase على صفحة ألعاب Firebase.

هل سبق لك إضافة Firebase إلى مشروع C++؟ تأكَّد من استخدام أحدث إصدار من Firebase C++ SDK.


المتطلبات الأساسية

  • ثبِّت أداة التعديل أو بيئة التطوير المتكاملة (IDE) المفضّلة لديك، مثل Android Studio أو IntelliJ أو VS Code.

  • احصل على حزمة تطوير البرامج (SDK) لنظام التشغيل Android.

  • تأكَّد من أنّ مشروعك يستوفي المتطلبات التالية:

  • أكمِل إعداد جهاز فعلي أو استخدِم محاكيًا لتشغيل تطبيقك.

    • يجب أن تستخدم المحاكيات صورة محاكي مع Google Play.

    • بالنسبة إلى بعض مكتبات C++، يجب توفُّر "خدمات Google Play" على جهاز العميل. راجِع القائمة في هذه الصفحة.

  • سجِّل الدخول إلى Firebase باستخدام حسابك على Google.

الخطوة 2: إنشاء مشروع Firebase

قبل أن تتمكّن من إضافة Firebase إلى مشروع C++، عليك إنشاء مشروع Firebase للربط بمشروع C++. يمكنك الانتقال إلى مقالة التعرّف على مشاريع Firebase لمعرفة المزيد عن مشاريع Firebase.

الخطوة 3: تسجيل تطبيقك في Firebase

لاستخدام Firebase في تطبيق Android، عليك تسجيل تطبيقك في مشروعك على Firebase. يُطلق على تسجيل تطبيقك غالبًا اسم "إضافة" تطبيقك إلى مشروعك.

  1. انتقِل إلى Firebase وحدة التحكّم.

  2. في وسط صفحة "نظرة عامة على المشروع"، انقر على رمز Android () أو إضافة تطبيق لبدء سير عمل الإعداد.

  3. أدخِل اسم حزمة تطبيقك في حقل اسم حزمة Android.

  4. (اختياري) أدخِل معلومات التطبيق الأخرى: الاسم المختصر للتطبيق وشهادة توقيع تصحيح الأخطاء SHA-1.

  5. انقر على تسجيل التطبيق.

الخطوة 4: إضافة ملف إعداد Firebase

  1. انقر على تنزيل ملف google-services.json للحصول على ملف إعداد Firebase Android.

  2. افتح مشروع C++ في بيئة تطوير متكاملة (IDE)، ثم أضِف ملف الإعداد إلى مشروعك:

  3. (إصدارات Gradle فقط) لتفعيل خدمات Firebase في مشروع C++، أضِف مكوّن google-services الإضافي إلى ملف build.gradle ذي المستوى الأعلى.

    1. أضِف قواعد لتضمين المكوّن الإضافي في "خدمات Google" لأداة Gradle. تأكَّد من توفّر مستودع 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.3'  // Google Services plugin
            implementation 'com.google.android.gms:18.7.2'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. طبِّق المكوّن الإضافي في "خدمات Google" لنظام Gradle:

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
        android {
          // ...
        }
      
  4. لقد انتهيت من مهام الإعداد في وحدة تحكّم Firebase. يمكنك الانتقال إلى إضافة حِزم تطوير البرامج (SDK) للغة C++ في Firebase أدناه.

الخطوة 5: إضافة حِزم تطوير البرامج (SDK) للغة C++ في Firebase

الخطوات الواردة في هذا القسم هي مثال على كيفية إضافة منتجات Firebase المتوافقة إلى مشروع Firebase C++‎.

  1. نزِّل حزمة تطوير البرامج (SDK) Firebase C++، ثم فكّ ضغطها في مكان مناسب.

    حزمة تطوير البرامج (SDK) Firebase C++ ليست خاصة بمنصة معيّنة، ولكنها تتضمّن مكتبات خاصة بمنصات معيّنة.

  2. في ملف gradle.properties الخاص بمشروعك، حدِّد موقع حزمة SDK التي تم فك ضغطها:

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
  3. أضِف المحتوى التالي إلى ملف 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"
  4. أضِف المحتوى التالي إلى ملف 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
    }
  5. أضِف المحتوى التالي إلى ملف 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}")
  6. يمكنك مزامنة تطبيقك للتأكّد من أنّ جميع التبعيات تتضمّن الإصدارات اللازمة.

  7. إذا أضفت Analytics، شغِّل تطبيقك لإرسال عملية إثبات الملكية إلى Firebase بأنّك أتممت عملية دمج Firebase بنجاح. وإلّا، يمكنك تخطّي خطوة إثبات الملكية.

    ستعرض سجلّات جهازك عملية التحقّق من Firebase التي تشير إلى اكتمال عملية الإعداد. إذا شغّلت تطبيقك على محاكي يمكنه الوصول إلى الشبكة، سيُعلمك وحدة تحكّم Firebase بأنّ عملية ربط تطبيقك قد اكتملت.

تم الانتهاء من الإعداد. تم تسجيل تطبيق C++ وإعداده لاستخدام خدمات Firebase.

المكتبات المتاحة

يمكنك الاطّلاع على مزيد من المعلومات حول مكتبات C++ Firebase في المستندات المرجعية وفي إصدار حزمة 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 الأصلية. لمزيد من المعلومات، يُرجى الاطّلاع على الحصول على تقارير الأعطال في حزمة تطوير البرامج الأصلية (NDK) لنظام التشغيل Android.

أنظمة إنشاء مخصّصة

توفّر 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"

تتطلّب معظم مكتبات C++ في Firebase توفّر خدمات 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"

يمكن لمعظم إصدارات Google Mobile Ads حزمة تطوير البرامج (SDK) لنظام التشغيل Android أن تعمل بشكل سليم بدون "خدمات Google Play" على الجهاز العميل. ومع ذلك، إذا كنت تستخدم التبعية 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++.

  1. بالنسبة إلى مهام سير العمل على الكمبيوتر، عليك إكمال ما يلي:

    1. اضبط مشروع C++ لاستخدام CMake.
    2. إنشاء مشروع على Firebase
    3. تسجيل تطبيقك (iOS أو Android) في Firebase
    4. إضافة ملف إعداد Firebase لمنصة الأجهزة الجوّالة
  2. أنشئ نسخة متوافقة مع أجهزة الكمبيوتر من ملف إعداد 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 لمعرفة المزيد عن ملفات الإعداد.

  3. أضِف حِزم تطوير البرامج (SDK) من Firebase إلى مشروع C++.

    توضّح الخطوات أدناه مثالاً على كيفية إضافة أي منتج متوافق من منتجات Firebase إلى مشروع C++ الخاص بك. في هذا المثال، سنشرح كيفية إضافة Firebase Authentication وFirebase Realtime Database.

    1. اضبط متغيّر بيئة FIREBASE_CPP_SDK_DIR على موقع حزمة تطوير البرامج (SDK) Firebase C++ التي تم فك ضغطها.

    2. أضِف المحتوى التالي إلى ملف 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}")
  4. شغِّل تطبيق 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 جهاز كمبيوتر

تستخدم حزمة تطوير البرامج (SDK) Realtime Database لأجهزة الكمبيوتر REST للوصول إلى قاعدة البيانات، لذا عليك تحديد الفهارس التي تستخدمها مع Query::OrderByChild() على أجهزة الكمبيوتر وإلا ستتعذّر عملية الاستماع.

معلومات إضافية حول عملية الإعداد على الكمبيوتر

مكتبات Windows

في نظام التشغيل Windows، يتم توفير إصدارات المكتبة استنادًا إلى ما يلي:

  • منصة الإنشاء: وضع 32 بت (x86) مقابل وضع 64 بت (x64)
  • بيئة وقت التشغيل في نظام التشغيل Windows: Multithreaded / MT vs Multithreaded DLL /MD
  • الهدف: الإصدار مقابل تصحيح الأخطاء

يُرجى العِلم أنّه تم اختبار المكتبات التالية باستخدام Visual Studio 2015 و2017.

عند إنشاء تطبيقات C++ لسطح المكتب على Windows، اربط مكتبات Windows SDK التالية بمشروعك. للحصول على مزيد من المعلومات، يمكنك الرجوع إلى مستندات برنامج الترجمة.

مكتبة Firebase C++ العناصر التابعة لمكتبة Windows SDK
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)، يتم توفير إصدارات المكتبة لمنصة 64 بت (x86_64). تتوفّر أيضًا أُطر عمل لتسهيل الأمر عليك.

يُرجى العِلم أنّه تم اختبار مكتبات macOS باستخدام Xcode 16.2.

عند إنشاء تطبيقات C++ على أجهزة macOS، اربط ما يلي بمشروعك:

  • مكتبة نظام pthread
  • CoreFoundation إطار عمل نظام التشغيل macOS
  • Foundation إطار عمل نظام التشغيل macOS
  • Security إطار عمل نظام التشغيل macOS
  • GSS إطار عمل نظام التشغيل macOS
  • Kerberos إطار عمل نظام التشغيل macOS
  • SystemConfiguration إطار عمل نظام التشغيل 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.

الخطوات التالية