運用提供 C++ 的 Firebase C++ SDK 強化 C++ 遊戲 Firebase SDK 的頂端介面
完全可從 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 package name」欄位中,輸入應用程式的套件名稱。
,瞭解如何調查及移除這項存取權。(選用) 輸入其他應用程式資訊: 「應用程式暱稱」和「偵錯簽署憑證 SHA-1」。
按一下 [Register app] (註冊應用程式)。
步驟 4:新增 Firebase 設定檔
點選「Download 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.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 // ... } }
套用 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 免費 Google Cloud 服務
可用的程式庫
如要進一步瞭解 C++ Firebase 程式庫,請前往 參考說明文件和我們的開放原始碼 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、makefiles Visual Studio 等),您可以使用這個指令碼自動產生 Android 字串 資源。
ProGuard
許多 Android 建構系統都使用 ProGuard,適用於 在發布模式下,縮減應用程式大小並保護 Java 原始碼。
如果您使用 ProGuard,則必須在 libs/android/*.pro
中新增檔案
對應你在 ProGuard 中使用的 Firebase C++ 程式庫
此外還會從 0 自動調整資源配置
您完全不必調整資源調度設定
以 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++ 程式庫都需要
Google Play 服務
用戶端的 Android 裝置。如果 Firebase C++ 程式庫傳回
kInitResultFailedMissingDependency
敬上
因此代表應用程式無法在
用戶端裝置 (表示裝置需要更新、重新啟用,而權限
等)。發生以下情況時,才能使用 Firebase 程式庫
用戶端裝置錯誤。
您可以在用戶端裝置上找到無法使用 Google Play 服務的原因
並嘗試修正該錯誤),方法是使用
google_play_services/availability.h
。
下表列出用戶端是否需要使用 Google Play 服務 每項支援的 Firebase 產品
Firebase C++ 程式庫 | 用戶端裝置需要使用 Google Play 服務嗎? |
---|---|
AdMob | 非必要 (通常) |
Analytics | 非必要 |
Authentication | 必填 |
Cloud Firestore | 必填 |
Cloud Functions | 必填 |
Cloud Messaging | 必填 |
Cloud Storage | 必填 |
Dynamic Links | 必填 |
Realtime Database | 必填 |
Remote Config | 必填 |
「AdMob」和 Google Play 服務
Android 版 Google Mobile Ads 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
。
設定電腦工作流程 (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
這個桌面設定檔含有您輸入的 C++ 專案 ID Firebase 控制台設定工作流程。前往 瞭解 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 包含電腦工作流程支援 且能透過 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 提供其餘的電腦版程式庫做為虛設常式 (無法運作) 方便在 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) 的程式庫版本 平台。此外,我們提供了架構,方便您使用。
請注意,已使用 Xcode 測試 macOS 程式庫 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 程式庫使用 GCC 4.8.0、GCC 7.2.0 和 Ubuntu 的 Clang 5.0。
在 Linux 上建構 C++ 電腦版應用程式時,請將 pthread
系統程式庫連結至
。詳情請參閱編譯器說明文件。如果
您才使用 GCC 5 以上版本進行建構,請定義 -D_GLIBCXX_USE_CXX11_ABI=0
。
後續步驟
探索 Firebase 應用程式範例。
準備推出應用程式:
- 設定預算 快訊 。Google Cloud.
- 監控用量與計費 資訊主頁 前往 Firebase 控制台查看專案的整體概況 以及跨多項 Firebase 服務的用量
- 查看 Firebase 發布檢查清單。