משפרים את משחקי 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.
חשוב לוודא שהפרויקט עומד בדרישות הבאות:
מטרגטת לרמת API 21 (Lollipop) ומעלה
משתמש ב-Gradle ומוגדר עם CMake
מגדירים מכשיר פיזי או משתמשים באמולטור כדי להריץ את האפליקציה.
נכנסים ל-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++ בסביבת פיתוח משולבת (IDE) ומוסיפים את קובץ ההגדרות לפרויקט:
גרסאות build של Gradle – מוסיפים את קובץ ההגדרות לאותה ספרייה שבה נמצא קובץ
build.gradle
ברמה העליונה.מערכות בנייה אחרות – אפשר לעיין בקטע מערכות בנייה בהתאמה אישית שבהמשך כדי ליצור משאבי מחרוזות של Android.
(ב-Gradle builds בלבד) כדי להפעיל שירותי Firebase בפרויקט C++, מוסיפים את התוסף google-services לקובץ
build.gradle
ברמה העליונה.מוסיפים כללים שיכללו את הפלאגין 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 // ... } }
מחילים את הפלאגין של שירותי Google ל-Gradle:
apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
סיימתם להגדיר משימות במסוף Firebase. בהמשך מוסבר איך להוסיף את Firebase C++ SDKs.
שלב 5: מוסיפים את Firebase C++ SDKs
השלבים בקטע הזה הם דוגמה לאופן ההוספה של מוצרי Firebase נתמכים לפרויקט Firebase C++.
מורידים את 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.
ספריות זמינות
מידע נוסף על ספריות 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++.
כדי להשתמש בתהליכי עבודה במחשב, צריך לבצע את הפעולות הבאות:
- מגדירים את פרויקט C++ ל-CMake.
- יצירת פרויקט Firebase
- רישום האפליקציה (iOS או Android) ב-Firebase
- הוספת קובץ תצורה של Firebase לפלטפורמה לנייד
יוצרים גרסת דסקטופ של קובץ ההגדרות של 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.
מוסיפים את Firebase SDKs לפרויקט C++.
השלבים הבאים הם דוגמה לאופן שבו מוסיפים כל מוצר נתמך של Firebase לפרויקט C++. בדוגמה הזו, נסביר איך מוסיפים את Firebase Authentication ו-Firebase Realtime Database.
מגדירים את משתנה הסביבה
FIREBASE_CPP_SDK_DIR
למיקום של Firebase SDK 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++.
ספריות זמינות (במחשב)
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
מסגרת מערכת 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
לפרויקט. מידע נוסף זמין במאמרי העזרה של הקומפיילר. אם אתם משתמשים ב-GCC 5 ואילך, צריך להגדיר את -D_GLIBCXX_USE_CXX11_ABI=0
.
השלבים הבאים
אפשר לעיין ב-SDK בקוד פתוח ב-GitHub.
הכנות להשקת האפליקציה:
- מגדירים התראות על תקציב לפרויקט במסוף Google Cloud.
- כדי לקבל תמונה כוללת של השימוש בפרויקט בכמה שירותי Firebase, אפשר לעקוב אחרי לוח הבקרה של השימוש והחיוב במסוף Firebase.
- עיון ברשימת המשימות להשקה של Firebase.