הוספת Firebase לפרויקט C++

משפרים את משחקי C++ בעזרת Firebase C++ SDKs, שמספקים ממשק C++‎ על גבי Firebase SDKs.

גישה ל-Firebase באופן מלא מקוד C++‎, בלי לכתוב קוד מקורי לפלטפורמה. בנוסף, Firebase SDK מתרגם הרבה ניבים ספציפיים לשפה שבהם נעשה שימוש ב-Firebase לממשק שמוכר יותר למפתחי C++.

מידע נוסף על שיפור המשחקים באמצעות Firebase זמין בדף המשחקים של Firebase.

כבר הוספתם את Firebase לפרויקט C++‎? חשוב לוודא שאתם משתמשים בגרסה העדכנית ביותר של Firebase C++ SDK.


דרישות מוקדמות

  • מתקינים את העורך או סביבת הפיתוח המשולבת (IDE) המועדפים, כמו Android Studio,‏ IntelliJ או VS Code.

  • משיגים את Android SDK.

  • צריך לוודא שהפרויקט עומד בדרישות הבאות:

  • מגדירים מכשיר פיזי או משתמשים באמולטור כדי להריץ את האפליקציה.

    • אמולטורים צריכים להשתמש בתמונת אמולטור עם Google Play.

    • חלק מהספריות של C++ דורשות את Google Play Services במכשיר הלקוח. אפשר לעיין ברשימה בדף הזה.

  • נכנסים ל-Firebase באמצעות חשבון Google.

שלב 2: יצירת פרויקט Firebase

לפני שמוסיפים את Firebase לפרויקט C++‎, צריך ליצור פרויקט Firebase כדי לקשר אותו לפרויקט C++‎. מידע נוסף על פרויקטים ב-Firebase זמין במאמר הסבר על פרויקטים ב-Firebase.

שלב 3: רישום האפליקציה ב-Firebase

כדי להשתמש ב-Firebase באפליקציית Android, צריך לרשום את האפליקציה בפרויקט Firebase. רישום האפליקציה נקרא לעיתים קרובות "הוספה" של האפליקציה לפרויקט.

  1. עוברים אל מסוף Firebase.

  2. במרכז דף סקירת הפרויקט, לוחצים על הסמל Android () או על Add app (הוספת אפליקציה) כדי להפעיל את תהליך ההגדרה.

  3. מזינים את שם החבילה של האפליקציה בשדה שם החבילה של Android.

  4. (אופציונלי) מזינים כינוי לאפליקציה. זהו מזהה פנימי שנועד לנוחותכם וגלוי רק לכם במסוף Firebase.

  5. לוחצים על Register app (רישום האפליקציה).

שלב 4: מוסיפים את קובץ ההגדרות של Firebase

  1. לוחצים על Download google-services.json כדי להוריד את קובץ ההגדרות של Firebase ל-Android.

  2. פותחים את פרויקט C++ בסביבת פיתוח משולבת (IDE) ומוסיפים את קובץ ההגדרות לפרויקט:

  3. (ב-Gradle builds בלבד) כדי להפעיל שירותי Firebase בפרויקט C++, מוסיפים את Google services Gradle plugin לקובץ 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.5.0'  // Google services Gradle plugin
            implementation 'com.google.android.gms:18.11.0'
          }
        }
      
        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 Gradle plugin
      
        android {
          // ...
        }
      
  4. סיימתם את משימות ההגדרה במסוף Firebase. ממשיכים אל הוספת Firebase C++ SDKs בהמשך.

שלב 5: מוסיפים את Firebase C++ SDKs

השלבים בקטע הזה הם דוגמה לאופן ההוספה של מוצרי Firebase נתמכים לפרויקט Firebase C++‎.

  1. מורידים את Firebase C++ SDK ומחלצים את ה-SDK למיקום נוח.

    ערכת Firebase C++ SDK לא ספציפית לפלטפורמה, אבל היא מכילה ספריות ספציפיות לפלטפורמה.

  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++‎ לפלטפורמות של אפל מפורטות בגרסת פלטפורמות של אפל (iOS ומעלה) של דף ההגדרה הזה.

מוצר Firebase הפניות לספרייה
(firebaseCpp.dependencies
לקובץ build.gradle)
הפניות לספרייה
(firebase_libs
לקובץ CMakeLists.txt)
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
Realtime Database database firebase_database
(חובה) firebase_app
Remote Config remoteConfig firebase_remote_config
(מומלץ) firebase_analytics
(חובה) firebase_app
ספריות שהוצאו משימוש או לא נתמכות
Dynamic Links dynamicLinks firebase_dynamic_links
(מומלץ) firebase_analytics
(חובה) firebase_app

מידע נוסף על הגדרה בנייד

קבלת דוחות קריסה של NDK

‫Firebase Crashlytics תומך בדיווח על קריסות באפליקציות שמשתמשות בספריות מקוריות של Android. מידע נוסף זמין במאמר בנושא קבלת דוחות קריסה של Android NDK.

מערכות בנייה בהתאמה אישית

ב-Firebase יש סקריפט generate_xml_from_google_services_json.py להמרה של משאבי google-services.json ל-.xml שאפשר לכלול בפרויקט. הסקריפט הזה מבצע את אותה טרנספורמציה שמבצע פלאגין Google Play services Gradle כשבונים אפליקציות ל-Android.

אם אתם לא משתמשים ב-Gradle כדי לבצע build (לדוגמה, אם אתם משתמשים ב-ndk-build, ב-makefiles, ב-Visual Studio וכו'), אתם יכולים להשתמש בסקריפט הזה כדי להפוך את היצירה של משאבי מחרוזות של Android לאוטומטית.

ProGuard

הרבה מערכות בנייה של Android משתמשות ב-ProGuard לבנייה במצב Release כדי לצמצם את גודל האפליקציה ולהגן על קוד המקור של Java.

אם אתם משתמשים ב-ProGuard, תצטרכו להוסיף את הקבצים ב-libs/android/*.pro שמתאימים לספריות Firebase C++ שבהן אתם משתמשים בהגדרות של ProGuard.

לדוגמה, אם משתמשים ב-Gradle, הקובץ Google Analyticsbuild.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 Services

רוב ספריות Firebase C++‎ דורשות ש-Google Play Services יהיה במכשיר Android של הלקוח. אם ספריית Firebase C++‎ מחזירה kInitResultFailedMissingDependency במהלך ההפעלה, זה אומר ש-Google Play Services לא זמין במכשיר הלקוח (כלומר, צריך לעדכן אותו, להפעיל אותו מחדש, לתקן את ההרשאות וכו'). אי אפשר להשתמש בספריית Firebase עד שהבעיה במכשיר הלקוח תיפתר.

כדי לגלות למה Google Play Services לא זמין במכשיר הלקוח (ולנסות לפתור את הבעיה), אפשר להשתמש בפונקציות ב-google_play_services/availability.h.

בטבלה הבאה מפורט אם נדרש Google Play Services במכשיר לקוח לכל מוצר נתמך של Firebase.

ספריית Firebase C++ נדרשת חבילת Google Play Services במכשיר הלקוח?
Analytics לא חובה
Authentication חובה
Cloud Firestore חובה
Cloud Functions חובה
Cloud Messaging חובה
Cloud Storage חובה
Dynamic Links חובה
Realtime Database חובה
Remote Config חובה

הגדרת תהליך עבודה במחשב (בטא)

כשיוצרים משחק, לרוב קל יותר לבדוק אותו קודם בפלטפורמות למחשב, ואז לפרוס אותו ולבדוק אותו במכשירים ניידים בשלב מאוחר יותר של הפיתוח. כדי לתמוך בתהליך העבודה הזה, אנחנו מספקים קבוצת משנה של ערכות ה-SDK של Firebase C++ שאפשר להריץ ב-Windows, ב-macOS, ב-Linux ומתוך עורך C++‎.

  1. כדי להשתמש בתהליכי עבודה במחשב, צריך לבצע את הפעולות הבאות:

    1. מגדירים את פרויקט C++‎ ל-CMake.
    2. יצירת פרויקט Firebase
    3. רישום האפליקציה (iOS או Android) ב-Firebase
    4. הוספת קובץ תצורה של Firebase לפלטפורמה לנייד
  2. יוצרים גרסת desktop של קובץ התצורה של Firebase:

    • אם הוספתם את קובץ google-services.json של Android – כשמריצים את האפליקציה, Firebase מאתר את קובץ mobile הזה, ואז יוצר באופן אוטומטי קובץ תצורה של 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. מוסיפים את Firebase SDKs לפרויקט C++.

    השלבים הבאים הם דוגמה להוספה של כל מוצר נתמך של Firebase לפרויקט C++‎. בדוגמה הזו, אנחנו מסבירים איך להוסיף את Firebase Authentication ו-Firebase Realtime Database.

    1. מגדירים את משתנה הסביבה FIREBASE_CPP_SDK_DIR למיקום של Firebase SDK 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++.

ספריות זמינות (מחשב)

‫Firebase C++ SDK כולל תמיכה בתהליכי עבודה במחשב עבור קבוצת משנה של תכונות, ומאפשר להשתמש בחלקים מסוימים של 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 מספקת את שאר הספריות למחשב כהטמעות stub (לא פונקציונליות) לנוחות כשמפתחים ל-Windows, ל-macOS ול-Linux. לכן, אין צורך להדר קוד באופן מותנה כדי לטרגט את המחשב.

מחשב Realtime Database

‫Realtime Database SDK למחשב משתמש ב-REST כדי לגשת למסד הנתונים, ולכן צריך להצהיר על האינדקסים שבהם משתמשים עם Query::OrderByChild() במחשב, אחרת המאזינים ייכשלו.

מידע נוסף על הגדרה במחשב

ספריות Windows

ב-Windows, גרסאות הספרייה מסופקות על סמך:

  • פלטפורמת בנייה: מצב 32 ביט (x86) לעומת מצב 64 ביט (x64)
  • סביבת זמן ריצה של Windows: Multithreaded / MT לעומת 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-bit ‏ (x86_64). לנוחיותכם, אנחנו מספקים גם מסגרות.

הערה: הספריות של macOS נבדקו באמצעות Xcode 26.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 לפרויקט. מידע נוסף מופיע במאמרי העזרה של הקומפיילר. אם אתם משתמשים ב-GCC 5 ואילך, צריך להגדיר את -D_GLIBCXX_USE_CXX11_ABI=0.

השלבים הבאים