使用 Firebase C++ SDK,透過 Firebase SDK 上的 C++ 介面,提升 C++ 遊戲的效能。
完全透過 C++ 程式碼存取 Firebase,不必編寫任何平台原生程式碼。Firebase SDK 也會將 Firebase 使用的許多語言專屬慣用語,轉換為 C++ 開發人員較為熟悉的介面。
如要進一步瞭解如何運用 Firebase 提升遊戲效能,請前往我們的 Firebase 遊戲頁面。
已將 Firebase 新增至 C++ 專案?確認您使用的是最新版 Firebase C++ SDK。
事前準備
安裝偏好的編輯器或 IDE,例如 Android Studio、IntelliJ 或 VS Code。
取得 Android SDK。
請確認專案符合下列規定:
以 API 級別 21 (Lollipop) 以上版本為目標版本
使用 Gradle,並透過 CMake 設定
設定實體裝置或使用模擬器執行應用程式。
使用 Google 帳戶登入 Firebase。
步驟 2:建立 Firebase 專案
將 Firebase 新增至 C++ 專案前,請先建立要連結至該 C++ 專案的 Firebase 專案。如要進一步瞭解 Firebase 專案,請參閱「瞭解 Firebase 專案」一文。
步驟 3:向 Firebase 註冊應用程式
如要在 Android 應用程式中使用 Firebase,請向 Firebase 專案註冊應用程式。註冊應用程式通常稱為「將應用程式新增至專案」。
前往 Firebase 控制台。
在專案總覽頁面中間,按一下「Android」圖示 (
) 或「新增應用程式」,啟動設定工作流程。在「Android 套件名稱」欄位中,輸入應用程式的套件名稱。
(選用) 輸入其他應用程式資訊:「應用程式暱稱」和「偵錯簽署憑證 SHA-1」。
按一下 [Register app] (註冊應用程式)。
步驟 4:新增 Firebase 設定檔
按一下「下載 google-services.json」,取得 Firebase Android 設定檔。
在 IDE 中開啟 C++ 專案,然後將設定檔新增至專案:
Gradle 建構作業 - 將設定檔新增至頂層
build.gradle
檔案所在的目錄。其他建構系統 - 請參閱下方的「自訂建構系統」,產生 Android 字串資源。
(僅限 Gradle 建構作業) 如要在 C++ 專案中啟用 Firebase 服務,請將 google-services 外掛程式新增至頂層
build.gradle
檔案。新增規則,加入 Google 服務 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.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++ 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 產品加入程式庫依附元件。已啟用 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 程式庫,請參閱參考說明文件和 GitHub 上的開放原始碼 SDK 版本。
適用於 Android 的程式庫 (使用 CMake)
請注意,Apple 平台的 C++ 程式庫會列在這個設定頁面的 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 錯誤報告」。
自訂建構系統
Firebase 提供 generate_xml_from_google_services_json.py
腳本,可將 google-services.json
轉換為 .xml
資源,並納入專案中。這個指令碼會套用與 Google Play 服務 Gradle 外掛程式建構 Android 應用程式時相同的轉換。
如果您不是使用 Gradle 建構 (例如使用 ndk-build、makefile、Visual Studio 等),可以運用這個指令碼自動產生 Android 字串資源。
ProGuard
許多 Android 建構系統會在發布模式中使用 ProGuard 建構版本,以縮減應用程式大小並保護 Java 原始碼。
如果您使用 ProGuard,請在 ProGuard 設定中,加入 libs/android/*.pro
內與您使用的 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 | 不需要 (通常) |
Analytics | 非必要 |
Authentication | 必填 |
Cloud Firestore | 必填 |
Cloud Functions | 必填 |
Cloud Messaging | 必填 |
Cloud Storage | 必填 |
Dynamic Links | 必填 |
Realtime Database | 必填 |
Remote Config | 必填 |
AdMob 和 Google Play 服務
在用戶端裝置上沒有 Google Play 服務的情況下,大多數版本的 Google Mobile AdsAndroid 專用 SDK 都能正常運作。不過,如果您使用 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
。
設定電腦工作流程 (Beta 版)
建立遊戲時,通常先在電腦平台測試遊戲會比較容易,然後再於開發後期部署及測試行動裝置。為支援這項工作流程,我們提供部分 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 Authentication 和 Firebase Realtime Database。
將
FIREBASE_CPP_SDK_DIR
環境變數設為解壓縮 Firebase C++ SDK 的位置。在專案的
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 支援桌面工作流程,可讓您在 Windows、macOS 和 Linux 的獨立桌面版本中使用部分 Firebase 功能。
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 會提供其餘的桌面程式庫做為虛設 (非功能性) 實作項目,方便您為 Windows、macOS 和 Linux 建構應用程式。因此,您不需要有條件地編譯程式碼,即可指定桌面裝置。
Realtime Database 電腦
電腦版 Realtime Database 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 程式庫依附元件 |
---|---|
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 16.2 測試。
在 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
。
後續步驟
探索 Firebase 應用程式範例。
準備發布應用程式:
- 在 Google Cloud 控制台中,為專案設定預算快訊。
- 在 Firebase 控制台中監控「用量和帳單」資訊主頁,全面掌握專案在多項 Firebase 服務中的用量。
- 詳閱 Firebase 發布檢查清單。