將 Firebase 新增至您的 C++ 專案

運用提供 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 Play 搭配使用模擬器映像檔。

    • 對部分 C++ 程式庫而言,用戶端需要 Google Play 服務 裝置;查看 清單

  • 使用 Google 帳戶登入 Firebase 讓他們使用服務帳戶

步驟 2:建立 Firebase 專案

將 Firebase 新增至 C++ 專案前,請先建立 Firebase 連線至 C++ 專案。前往 如要進一步瞭解 Firebase 專案,請參閱這篇文章 Firebase 專案。

步驟 3:向 Firebase 註冊應用程式

如要在 Android 應用程式中使用 Firebase,您必須向 Firebase 專案。註冊應用程式通常稱為「新增」將應用程式 專案。

  1. 前往 Firebase 控制台

  2. 按一下專案總覽頁面中央的「Android」圖示 ()。 或「新增應用程式」啟動設定工作流程。

  3. 在「Android package name」欄位中,輸入應用程式的套件名稱。

    ,瞭解如何調查及移除這項存取權。
  4. (選用) 輸入其他應用程式資訊: 「應用程式暱稱」和「偵錯簽署憑證 SHA-1」

  5. 按一下 [Register app] (註冊應用程式)

步驟 4:新增 Firebase 設定檔

  1. 點選「Download google-services.json」,取得 Firebase Android 設定檔。

  2. 在 IDE 中開啟 C++ 專案,然後將設定檔加入專案中:

  3. (僅限 Gradle 版本) 如要在 C++ 專案中啟用 Firebase 服務, 新增 google-services 外掛程式 新增到頂層 build.gradle 檔案

    1. 新增規則,納入 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
            // ...
          }
        }
      
    2. 套用 Google 服務 Gradle 外掛程式:

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
        android {
          // ...
        }
      
  4. 您已完成 Firebase 控制台中的工作設定。前往 請在下方新增 Firebase C++ SDK

步驟 5:新增 Firebase C++ SDK

本節中的步驟舉例說明,如何新增支援的 Firebase 產品 Firebase C++ 專案。

  1. 下載 Firebase C++ SDK,然後將 SDK 解壓縮。

    Firebase C++ SDK 不限於特定平台,但包含 特定平台專用的程式庫

  2. 在專案的 gradle.properties 檔案中,指定 解壓縮的 SDK:

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
    
  3. 在專案的 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"
    
  4. 加入模組 (應用程式層級) 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
    }
    
  5. 在專案的 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}")
    
  6. 同步應用程式,確保所有依附元件都有必要的版本。

  7. 如已新增「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++ 編輯器中。

  1. 如要採用電腦工作流程,您必須完成下列步驟:

    1. 為 CMake 設定 C++ 專案。
    2. 建立 Firebase 專案
    3. 使用 Firebase 註冊應用程式 (iOS 或 Android)
    4. 新增行動平台 Firebase 設定檔
  2. 建立 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 專案 ,進一步瞭解設定檔。

  3. 將 Firebase SDK 新增至您的 C++ 專案。

    下列步驟只是示範, 支援的 Firebase 產品 C++ 專案中的資源。本例會逐步說明如何 《Firebase Authentication》和《Firebase Realtime Database》。

    1. FIREBASE_CPP_SDK_DIR 環境變數設為 解壓縮後的 Firebase C++ SDK

    2. 在專案的 CMakeLists.txt 檔案中,新增以下內容: 包括以下項目的程式庫 要使用的 Firebase 產品舉例來說 Firebase AuthenticationFirebase 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}")
      
  4. 執行 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

後續步驟