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

אתם יכולים לשפר את משחקי C++ שלכם בעזרת ערכות ה-SDK של Firebase C++ שמספקות תג C++ מעל ערכות ה-SDK של Firebase.

גישה ל-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. לוחצים על Download google-services.json כדי להוריד את Firebase ל-Android קובץ תצורה.

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

  3. (Gradle גרסאות build בלבד) כדי להפעיל את שירותי 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.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
            // ...
          }
        }
      
    2. מחילים את הפלאגין של Google Services Gradle:

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
        android {
          // ...
        }
      
  4. סיימת להגדיר את המשימות במסוף Firebase. המשך אל מוסיפים ערכות SDK של Firebase C++ למטה.

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

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

  1. מורידים את Firebase C++ SDK ומחלצים את קובץ ה-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++ לפלטפורמות של 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.

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

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

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

ProGuard

הרבה מערכות ה-build של Android משתמשות ProGuard לגרסאות build מצב שחרור כדי לכווץ את גודל האפליקציות ולהגן על קוד המקור של Java.

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

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

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

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

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

AdMob ו-Google Play Services

רוב הגרסאות של SDK Google Mobile Ads ל-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.

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

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

Realtime Database במחשב

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

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

ספריות Windows

ב-Windows, גרסאות של ספריות זמינות על סמך התנאים הבאים:

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

שימו לב שהספריות הבאות נבדקו באמצעות Visual Studio בשנים 2015 ו-2017.

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

ספריית C++‎ של Firebase יחסי תלות של ספריות 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 13.3.1.

כשאתם מפתחים אפליקציות של C++ למחשב ב-macOS, עליכם לקשר את הפריטים הבאים לפרויקט:

  • ספריית המערכת pthread
  • CoreFoundation מסגרת המערכת של macOS
  • מסגרת מערכת של macOS של Foundation
  • Security מסגרת המערכת של macOS
  • GSS מסגרת המערכת של macOS
  • Kerberos מסגרת המערכת של macOS
  • SystemConfiguration מסגרת המערכת של macOS

למידע נוסף, אפשר לעיין בתיעוד של המהדר (compiler).

ספריות 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.

השלבים הבאים