Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

將 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

  • 確保您的項目滿足以下要求:

  • 設置物理設備或使用模擬器來運行您的應用程序。

    • 模擬器必須在 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.3.14'  // 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
            // ...
          }
        }
      
    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)

請注意,適用於 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.pygoogle-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++ 編輯器中運行。

  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_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

下一步