將 Firebase 添加到您的 C++ 項目
使用我們的 Firebase C++ SDK 為您的 C++ 遊戲提供動力,該 SDK 在 Firebase 之上為 iOS 和 Android 提供 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 Android 應用註冊到您的 Firebase 項目後無法更改它。
(可選)輸入其他應用信息:應用暱稱和調試簽名證書 SHA-1 。
應用暱稱:僅在 Firebase 控制台中對您可見的內部便利標識符
調試簽名證書 SHA-1 :Firebase 身份驗證(使用Google 登錄或電話號碼登錄時)和Firebase 動態鏈接需要SHA-1 哈希。
點擊註冊應用。
第 4 步:添加 Firebase 配置文件
單擊下載 google-services.json以獲取您的 Firebase Android 配置文件。
Firebase 配置文件包含項目的唯一但非秘密標識符。要了解有關此配置文件的更多信息,請訪問了解 Firebase 項目。
您可以隨時再次下載Firebase 配置文件。
確保配置文件名沒有附加其他字符,例如
(2)
。
在 IDE 中打開 C++ 項目,然後將配置文件添加到項目中:
Gradle builds — 將您的配置文件添加到與頂級
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.3.12' // Google Services plugin implementation 'com.google.android.gms:18.1.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)
請注意,適用於 iOS 的 C++ 庫列在此設置頁面的 iOS 版本中。
Firebase 產品 | 圖書館參考資料 ( firebaseCpp.dependencies 對於 build.gradle 文件) | 圖書館參考資料 ( firebase_libs 對於 CMakeLists.txt 文件) |
---|---|---|
AdMob | admob | firebase_admob (必需) firebase_analytics (必需) firebase_app |
分析 | analytics | firebase_analytics (必需) firebase_app |
驗證 | auth | firebase_auth (必需) firebase_app |
雲防火牆 | 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、makefiles、Visual Studio 等),則可以使用此腳本自動生成Android String Resources 。
ProGuard
許多 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 | 不需要(通常) |
分析 | 不需要 |
驗證 | 必需的 |
雲防火牆 | 必需的 |
雲函數 | 必需的 |
雲消息傳遞 | 必需的 |
雲儲存 | 必需的 |
動態鏈接 | 必需的 |
實時數據庫 | 必需的 |
遠程配置 | 必需的 |
AdMob 和 Google Play 服務
大多數版本的適用於 Android 的 Google 移動廣告 SDK 都可以在客戶端設備上沒有 Google Play 服務的情況下正常工作。但是,如果您使用的是com.google.android.gms:play-services-ads-lite
依賴項,而不是上面列出的標準com.google.firebase:firebase-ads
依賴項,則需要 Google Play 服務。
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_auth (必需) firebase_app |
雲防火牆 | 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 vs 多線程 DLL/MD
- 目標:發布與調試
請注意,以下庫是使用 Visual Studio 2015 和 2017 測試的。
在 Windows 上構建 C++ 桌面應用程序時,將以下 Windows SDK 庫鏈接到您的項目。有關更多信息,請參閱您的編譯器文檔。
Firebase C++ 庫 | Windows SDK 庫依賴項 |
---|---|
驗證 | advapi32, ws2_32, crypt32 |
雲防火牆 | 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 啟動清單。