使用我們的 Firebase C++ SDK 增強您的 C++ 遊戲,該 SDK 在 Firebase SDK 之上提供 C++ 介面。
完全從 C++ 程式碼存取 Firebase,無需編寫任何平臺本機程式碼。 Firebase SDK 也將 Firebase 使用的許多特定於語言的習慣用法轉換為 C++ 開發人員更熟悉的介面。
請造訪我們的Firebase 遊戲頁面,以了解有關使用 Firebase 增強遊戲效能的更多資訊。
已將 Firebase 新增到您的 C++ 專案中?確保您使用的是最新版本的Firebase C++ SDK 。
先決條件
安裝您喜歡的編輯器或 IDE,例如 Android Studio、IntelliJ 或 VS Code。
取得Android SDK 。
確保您的專案符合以下要求:
目標 API 等級 19 (KitKat) 或更高
使用 Gradle 並使用 CMake 配置
設定實體設備或使用模擬器來運行您的應用程式。
使用您的 Google 帳戶登入 Firebase 。
第 2 步:建立 Firebase 項目
在將 Firebase 新增至 C++ 專案之前,您需要建立一個 Firebase 專案以連接到您的 C++ 專案。請造訪了解 Firebase 專案以了解有關 Firebase 專案的更多資訊。
步驟 3 : 向 Firebase 註冊您的應用
要在 Android 應用程式中使用 Firebase,您需要向 Firebase 專案註冊您的應用程式。註冊您的應用程式通常稱為將您的應用程式「新增」到您的專案中。
轉到Firebase 控制台。
在專案概述頁面的中心,按一下Android圖示 (
) 或新增應用程式以啟動設定工作流程。在Android 套件名稱欄位中輸入應用程式的套件名稱。
程式包名稱唯一標識您的應用程式在裝置上和 Google Play 商店中的位置。
套件名稱通常稱為應用程式 ID 。
在模組(應用程式層級)Gradle 檔案中尋找應用程式的套件名稱,通常
app/build.gradle
(範例套件名稱:com.yourcompany.yourproject
)。請注意,程式包名稱值會區分大小寫,並且在向您的 Firebase 專案註冊後,無法變更此 Firebase Android 應用程式的套件名稱值。
(可選)輸入其他應用程式資訊:應用程式暱稱和偵錯簽章憑證 SHA-1 。
套用暱稱:內部便捷標識符,僅您在 Firebase 控制台中可見
偵錯簽章憑證 SHA-1 :Firebase 驗證(使用Google 登入或電話號碼登入時)和Firebase 動態連結需要SHA-1 雜湊。
點擊註冊應用程式。
第 4 步:新增 Firebase 設定文件
點擊下載 google-services.json以取得您的 Firebase Android 設定檔。
Firebase 設定檔包含您的專案的唯一但非秘密的識別碼。要了解有關此設定檔的更多信息,請訪問了解 Firebase 專案。
您可以隨時再次下載Firebase 設定檔。
確保設定檔名未附加其他字符,例如
(2)
。
在 IDE 中開啟 C++ 項目,然後將設定檔新增至專案:
Gradle 建置 — 將您的設定檔新增至與頂級
build.gradle
檔案相同的目錄中。其他建置系統 - 請參閱下方的自訂建置系統來產生Android 字串資源。
(僅限 Gradle 建置)要在 C++ 專案中啟用 Firebase 服務,請將google-services 外掛程式新增至頂層
build.gradle
檔案。新增規則以包含 Google Services Gradle 插件。檢查您是否也有 Google 的 Maven 儲存庫。
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.0' // Google Services plugin implementation 'com.google.android.gms:18.2.0' } } allprojects { // ... repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository // ... } }
應用 Google Services Gradle 插件:
apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
您已完成 Firebase 控制台中的設定任務。繼續在下面加入 Firebase C++ SDK 。
第 5 步:新增 Firebase C++ SDK
本部分中的步驟是如何將受支援的 Firebase 產品新增至 Firebase C++ 專案的範例。
下載Firebase C++ SDK ,然後將 SDK 解壓縮到方便的位置。
Firebase C++ SDK 不特定於平台,但它包含特定於平台的程式庫。
在專案的
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 產品的程式庫相依性。啟用分析
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 }
未啟用分析
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 產品的程式庫。啟用分析
# 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}")
未啟用分析
# 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 服務。
可用的庫
請參閱參考文件和GitHub上的開源 SDK 版本,以了解有關 C++ Firebase 程式庫的更多資訊。
適用於 Android 的可用函式庫(使用 CMake)
請注意,此設定頁面的 Apple 平台 (iOS+) 版本中列出了適用於 Apple 平台的 C++ 程式庫。
Firebase 產品 | 圖書館參考資料 ( firebaseCpp.dependencies 對於 build.gradle 檔案) | 圖書館參考資料 ( firebase_libs 對於 CMakeLists.txt 檔案) |
---|---|---|
AdMob | admob | firebase_admob (必需) firebase_analytics (必需) firebase_app |
分析 | analytics | firebase_analytics (必需) firebase_app |
應用程式檢查 | appCheck | firebase_app_check (必需) firebase_app |
驗證 | auth | firebase_auth (必需) firebase_app |
雲端Firestore | firestore | firebase_firestore (必需) firebase_auth (必需) firebase_app |
雲端功能 | functions | firebase_functions (必需) firebase_app |
雲端訊息傳遞 | messaging | firebase_messaging (建議) firebase_analytics (必需) firebase_app |
雲端儲存 | storage | firebase_storage (必需) firebase_app |
動態連結 | dynamicLinks | firebase_dynamic_links (建議) firebase_analytics (必需) firebase_app |
即時資料庫 | database | firebase_database (必需) firebase_app |
遠端配置 | 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
資源。此腳本應用程式與 Google Play 服務 Gradle 插件在建立 Android 應用程式時執行的相同轉換。
如果您不使用 Gradle 進行建置(例如,您使用 ndk-build、makefile、Visual Studio 等),則可以使用此腳本自動產生Android String Resources 。
混淆衛士
許多 Android 構建系統使用ProGuard在發布模式下進行構建,以縮小應用程式大小並保護 Java 原始程式碼。
如果您使用 ProGuard,則需要在libs/android/*.pro
中新增與您在 ProGuard 設定中使用的 Firebase C++ 程式庫相對應的檔案。
例如,對於 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 服務需求
大多數 Firebase C++ 程式庫要求客戶端的 Android 裝置上安裝Google Play 服務。如果 Firebase C++ 程式庫在初始化時傳回kInitResultFailedMissingDependency
,則表示 Google Play 服務在用戶端裝置上不可用(表示需要更新、重新啟用、修復權限等)。在用戶端裝置上的情況修正之前,無法使用 Firebase 程式庫。
您可以使用google_play_services/availability.h
中的函數找出 Google Play 服務在客戶端裝置上不可用的原因(並嘗試修復它)。
下表列出了每種支援的 Firebase 產品的用戶端裝置上是否需要 Google Play 服務。
Firebase C++ 函式庫 | 用戶端裝置需要 Google Play 服務嗎? |
---|---|
AdMob | 不需要(通常) |
分析 | 不需要 |
驗證 | 必需的 |
雲端Firestore | 必需的 |
雲端功能 | 必需的 |
雲端訊息傳遞 | 必需的 |
雲端儲存 | 必需的 |
動態連結 | 必需的 |
即時資料庫 | 必需的 |
遠端配置 | 必需的 |
AdMob 和 Google Play 服務
大多數 Android 版本的 Google 行動廣告 SDK 都可以在客戶端裝置上沒有 Google Play 服務的情況下正常運作。但是,如果您使用com.google.android.gms:play-services-ads-lite
依賴項,而不是上面列出的標準com.google.firebase:firebase-ads
依賴項,則需要 Google Play 服務。
只有當以下兩個條件均為 true 時,AdMob 初始化才會傳回kInitResultFailedMissingDependency
:
- Google Play 服務在用戶端裝置上不可用。
- 您正在使用
com.google.android.gms:play-services-ads-lite
。
設定桌面工作流程(測試版)
當您創建遊戲時,首先在桌面平台上測試您的遊戲,然後在開發過程中在行動裝置上進行部署和測試通常會更容易。為了支援此工作流程,我們提供了Firebase C++ SDK 的子集,它可以在 Windows、macOS、Linux 上以及在 C++ 編輯器中運行。
對於桌面工作流程,您需要完成以下操作:
- 為 CMake 配置 C++ 專案。
- 創建 Firebase 項目
- 向 Firebase 註冊您的應用程式(iOS 或 Android)
- 新增移動平台 Firebase 設定文件
建立 Firebase 設定檔的桌面版本:
如果您新增了 Android
google-services.json
文件- 當您執行應用程式時,Firebase 會找到此行動文件,然後自動產生桌面Firebase 設定檔 (google-services-desktop.json
)。如果您新增了 iOS
GoogleService-Info.plist
檔案- 在執行應用程式之前,您需要將此行動檔案轉換為桌面Firebase 設定檔。要轉換該文件,請從GoogleService-Info.plist
文件所在的目錄中執行以下命令:generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist
此桌面設定檔包含您在 Firebase 控制台設定工作流程中輸入的 C++ 專案 ID。造訪了解 Firebase 專案以了解有關設定檔的更多資訊。
將 Firebase SDK 新增到您的 C++ 專案。
以下步驟作為如何將任何受支援的 Firebase 產品新增至您的 C++ 專案的範例。在此範例中,我們將逐步新增 Firebase 驗證和 Firebase 即時資料庫。
將
FIREBASE_CPP_SDK_DIR
環境變數設定為解壓縮後的 Firebase C++ SDK 的位置。在專案的
CMakeLists.txt
檔案中,新增以下內容,包括您要使用的 Firebase 產品的程式庫。例如,要使用 Firebase 驗證和 Firebase 即時資料庫:# 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) |
---|---|
應用程式檢查 | firebase_app_check (必需) firebase_app |
驗證 | firebase_auth (必需) firebase_app |
雲端Firestore | firebase_firestore firebase_auth firebase_app |
雲端功能 | firebase_functions (必需) firebase_app |
雲端儲存 | firebase_storage (必需) firebase_app |
即時資料庫 | firebase_database (必需) firebase_app |
遠端配置 | firebase_remote_config (必需) firebase_app |
Firebase 提供剩餘的桌面庫作為存根(非功能性)實現,以便在針對 Windows、macOS 和 Linux 進行建置時提供方便。因此,您不需要有條件地編譯程式碼以面向桌面。
即時資料庫桌面
適用於桌面的即時資料庫 SDK 使用 REST 來存取您的資料庫,因此您必須在桌面上聲明與Query::OrderByChild()
一起使用的索引,否則您的偵聽器將失敗。
有關桌面設定的附加信息
Windows 程式庫
對於 Windows,根據以下內容提供程式庫版本:
- 建構平台:32 位元 (x86) 與 64 位元 (x64) 模式
- Windows 執行時間環境:多執行緒 / MT 與多執行緒 DLL /MD
- 目標:發布與調試
請注意,以下程式庫已使用 Visual Studio 2015 和 2017 進行了測試。
在 Windows 上建立 C++ 桌面應用程式時,請將下列 Windows SDK 程式庫連結到您的專案。請參閱您的編譯器文件以取得更多資訊。
Firebase C++ 函式庫 | Windows SDK 庫依賴項 |
---|---|
應用程式檢查 | advapi32, ws2_32, crypt32 |
驗證 | advapi32, ws2_32, crypt32 |
雲端Firestore | advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32 |
雲端功能 | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
雲端儲存 | advapi32, ws2_32, crypt32 |
即時資料庫 | advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv |
遠端配置 | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
macOS 庫
對於 macOS (Darwin),提供了適用於 64 位元 (x86_64) 平台的程式庫版本。為了您的方便,也提供了框架。
請注意,macOS 庫已使用 Xcode 13.3.1 進行了測試。
在 macOS 上建立 C++ 桌面應用程式時,請將以下內容連結到您的專案:
-
pthread
系統函式庫 CoreFoundation
macOS 系統框架Foundation
macOS系統框架Security
macOS 系統框架GSS
macOS系統框架Kerberos
macOS 系統框架SystemConfiguration
macOS 系統框架
請參閱您的編譯器文件以取得更多資訊。
Linux 函式庫
對於 Linux,提供了適用於 32 位元 (i386) 和 64 位元 (x86_64) 平台的程式庫版本。
請注意,Linux 函式庫是在 Ubuntu 上使用 GCC 4.8.0、GCC 7.2.0 和 Clang 5.0 進行測試的。
在 Linux 上建立 C++ 桌面應用程式時,請將pthread
系統庫連結到您的專案。請參閱您的編譯器文件以取得更多資訊。如果您使用 GCC 5 或更高版本進行構建,請定義-D_GLIBCXX_USE_CXX11_ABI=0
。
下一步
探索GitHub 中的開源 SDK 。
準備啟動您的應用程式:
- 在 Google Cloud Console 中為您的專案設定預算提醒。
- 監控 Firebase 控制台中的使用情況和計費資訊中心,全面了解專案在多個 Firebase 服務中的使用情況。
- 查看Firebase 啟動清單。