將 Firebase 新增到您的 C++ 項目

使用我們的 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

  • 確保您的專案符合以下要求:

  • 設定實體設備或使用模擬器來運行您的應用程式。

    • 模擬器必須使用 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 套件名稱欄位中輸入應用程式的套件名稱。

  4. (可選)輸入其他應用程式資訊:應用程式暱稱偵錯簽章憑證 SHA-1

  5. 點擊註冊應用程式

第 4 步:新增 Firebase 設定文件

  1. 點擊下載 google-services.json以取得您的 Firebase Android 設定檔。

  2. 在 IDE 中開啟 C++ 項目,然後將設定檔新增至專案:

  3. (僅限 Gradle 建置)要在 C++ 專案中啟用 Firebase 服務,請將google-services 外掛程式新增至頂層build.gradle檔案。

    1. 新增規則以包含 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.1'  // Google Services plugin
            implementation 'com.google.android.gms:18.3.0'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. 應用 Google Services 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 產品的程式庫相依性

    啟用分析

    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
    }
    
  5. 在項目的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}")
    
  6. 同步您的應用程式以確保所有依賴項都具有必要的版本。

  7. 如果您新增了 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++ 編輯器中運行。

  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

    此桌面設定檔包含您在 Firebase 控制台設定工作流程中輸入的 C++ 專案 ID。造訪了解 Firebase 專案以了解有關設定檔的更多資訊。

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

    以下步驟作為如何將任何受支援的 Firebase 產品新增至您的 C++ 專案的範例。在此範例中,我們將逐步新增 Firebase 驗證和 Firebase 即時資料庫。

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

    2. 在專案的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}")
      
  4. 運行您的 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

下一步