הוספת 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 () או על הוספת אפליקציה כדי להפעיל את תהליך ההגדרה.

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

  4. (אופציונלי) מזינים פרטים נוספים על האפליקציה: כינוי לאפליקציה ואישור חתימה לניפוי באגים SHA-1.

  5. לוחצים על רישום האפליקציה.

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

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

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

  3. (ב-Gradle builds בלבד) כדי להפעיל שירותי Firebase בפרויקט C++, מוסיפים את התוסף google-services לקובץ build.gradle ברמה העליונה.

    1. מוסיפים כללים שיכללו את הפלאגין Google Services 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. בהמשך מוסבר איך להוסיף את Firebase C++ SDKs.

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

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

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

    ערכת ה-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++‎ לפלטפורמות של אפל מפורטות בגרסה של דף ההגדרה הזה שמתייחסת לפלטפורמות של אפל (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 Services כשבונים אפליקציות ל-Android.

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

ProGuard

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

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

לדוגמה, אם משתמשים ב-Gradle, הקובץ build.gradle ייראה כך:Google Analytics

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 של הלקוח. אם ספריית C++‎ של Firebase מחזירה את הערך kInitResultFailedMissingDependency במהלך האתחול, המשמעות היא ששירותי Google Play לא זמינים במכשיר הלקוח (כלומר, צריך לעדכן או להפעיל מחדש את השירותים, לתקן את ההרשאות וכו'). אי אפשר להשתמש בספריית Firebase עד שמתקנים את הבעיה במכשיר הלקוח.

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

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

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

AdMob ו-Google Play Services

רוב הגרסאות של Google Mobile Ads SDK ל-Android יכולות לפעול כראוי בלי Google Play Services במכשיר הלקוח. עם זאת, אם אתם משתמשים בתלות com.google.android.gms:play-services-ads-lite במקום בתלות הרגילה com.google.firebase:firebase-ads שמופיעה למעלה, נדרש Google Play Services.

הפונקציה AdMob תחזיר את הערך kInitResultFailedMissingDependency רק אם מתקיימים שני התנאים הבאים:

  • ‫Google Play Services לא זמין במכשיר הלקוח.
  • אתם משתמשים ב-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:

    • אם הוספתם את קובץ Android‏ google-services.json – כשמריצים את האפליקציה, 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. מוסיפים את 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 מחשב

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

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

ספריות Windows

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

  • פלטפורמת ה-build: מצב 32 ביט (x86) לעומת מצב 64 ביט (x64)
  • סביבת זמן ריצה של Windows: Multithreaded / MT לעומת Multithreaded DLL /MD
  • יעד: גרסת Release לעומת גרסת Debug

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

השלבים הבאים