Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

將 Firebase 添加到您的 C++ 項目

使用我們的 Firebase C++ SDK 為您的 C++ 遊戲提供動力,這些 SDK 在 Firebase 之上為 iOS 和 Android 提供 C++ 接口。

完全從您的 C++ 代碼訪問 Firebase,而無需編寫任何平台原生代碼。 Firebase SDK 還將 Firebase 使用的許多特定於語言的習慣用法轉換為 C++ 開發人員更熟悉的界面。

了解我們與火力地堡您的遊戲了電源的更多信息,火力地堡遊戲頁面

已將 Firebase 添加到您的 C++ 項目中?請確保您正在使用最新版本的的火力地堡C ++ SDK

先決條件

  • 安裝您喜歡的編輯器或 IDE,例如 Android Studio、IntelliJ 或 VS Code。

  • 獲取Android SDK中

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

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

    • 仿真器必須使用與谷歌玩模擬器圖像。

    • 對於某些 C++ 庫,客戶端設備上需要 Google Play 服務;審查名單這個頁面上。

  • 登錄到火力地堡使用您的谷歌帳戶。

第2步:創建一個火力地堡項目

在將 Firebase 添加到 C++ 項目之前,您需要創建一個 Firebase 項目以連接到您的 C++ 項目。參觀了解火力地堡項目,詳細了解項目的火力地堡。

第3步:註冊與火力地堡您的應用程序

要在您的 Android 應用中使用 Firebase,您需要向您的 Firebase 項目註冊您的應用。註冊您的應用程序通常稱為將您的應用程序“添加”到您的項目中。

  1. 轉至火力地堡控制台

  2. 在項目概述頁面的中心,點擊圖標的Android( )或添加應用程序來啟動安裝工作流程。

  3. Android包名稱字段中輸入您的應用程式套件名稱。

  4. (可選)輸入其他應用程序的信息:應用程序的暱稱調試簽名證書SHA-1。

  5. 點擊註冊應用

第4步:添加火力地堡配置文件

  1. 點擊下載谷歌,services.json獲得你的火力地堡的Android配置文件。

  2. 在 IDE 中打開您的 C++ 項目,然後將您的配置文件添加到您的項目中:

  3. (搖籃僅版本)要在C ++項目使火力地堡服務,加上谷歌的服務插件到頂層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.3.10'  // Google Services plugin
            implementation 'com.google.android.gms:17.6.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 控制台中的設置任務。繼續添加火力地堡C ++軟件開發工具包以下。

步驟5:添加火力地堡C ++的SDK

本節中的步驟是如何添加一個例子支持火力地堡的產品給您的火力地堡C ++項目。

  1. 下載火力地堡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. 為了您的模塊(應用程序級)搖籃文件(通常是app/build.gradle ),添加以下內容。
    包括依賴庫要在您的應用程序使用的火力地堡產品。

    啟用分析

    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文件,添加以下內容。
    包括要在您的應用程序使用的火力地堡產品。

    啟用分析

    # 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 驗證。如果你跑了有網絡接入的仿真應用程式後, 火力地堡控制台你,通知你的應用程序連接完成。

你都準備好了!您的 C++ 應用已註冊並配置為使用 Firebase 服務。

可用庫

了解更多關於在C ++庫火力地堡的參考文檔,並在我們的開源SDK發布的GitHub

為Android可用的庫(使用CMake的)

需要注意的是C ++的iOS庫對上市這個設置頁面的IOS版本

Firebase 產品庫參考
firebaseCpp.dependencies
build.gradle文件)
庫參考
firebase_libs
CMakeLists.txt文件)
廣告admob firebase_admob
(所需的) firebase_analytics
(所需的) firebase_app
分析analytics firebase_analytics
(所需的) 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崩潰報告

自定義構建系統

火力地堡提供腳本generate_xml_from_google_services_json.py轉換成google-services.json.xml資源,你可以在項目中包含。此腳本應用與 Google Play 服務 Gradle 插件在構建 Android 應用程序時執行的轉換相同的轉換。

如果你(例如,你可以使用NDK建造,生成文件時,Visual Studio等)不建使用搖籃,你可以使用這個腳本來自動的生成Android的字符串資源

混淆器

許多Android編譯系統使用的ProGuard用於構建在Release模式縮小應用尺寸和保護Java源代碼。

如果你使用的ProGuard,你將需要添加的文件libs/android/*.pro對應於你使用在你的ProGuard配置中的火力地堡C ++庫。

例如,搖籃,如果你使用谷歌分析,您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 服務要求

大多數火力地堡C ++庫需要谷歌播放服務是客戶端的Android設備上。如果火力地堡C ++庫回報kInitResultFailedMissingDependency在初始化,這意味著谷歌Play服務不可用的客戶端設備(這意味著它需要更新,激活,權限固定等)上。在客戶端設備上的情況得到糾正之前,無法使用 Firebase 庫。

你可以找出為什麼谷歌Play服務的客戶端設備上不可用(並嘗試修復它),在使用功能google_play_services/availability.h

下表列出了每個受支持的 Firebase 產品的客戶端設備上是否需要 Google Play 服務。

Firebase C++ 庫客戶端設備需要 Google Play 服務嗎?
廣告不是必需的(通常)
分析不需要
驗證必需的
雲防火牆必需的
雲功能必需的
雲消息必需的
雲儲存必需的
動態鏈接必需的
實時數據庫必需的
遠程配置必需的

AdMob 和 Google Play 服務

大多數版本的 Android 版 Google 移動廣告 SDK 無需客戶端設備上的 Google Play 服務即可正常運行。但是,如果您使用的com.google.android.gms:play-services-ads-lite的依賴性,而不是標準的com.google.firebase:firebase-ads依賴上面列出,要求谷歌播放服務

AdMob的初始化只會返回kInitResultFailedMissingDependency當兩個下列條件:

  • 客戶端設備上的 Google Play 服務不可用。
  • 您正在使用com.google.android.gms:play-services-ads-lite

建立一個桌面工作流程(測試版

創建遊戲時,通常先在桌面平台上測試遊戲,然後在開發過程中在移動設備上進行部署和測試通常要容易得多。為了支持這個流程,我們提供了火力地堡C ++軟件開發工具包的子集,它可以在Windows,MacOS的,Linux和從C ++中的編輯器中運行。

  1. 對於桌面工作流,您需要完成以下操作:

    1. 為 CMake 配置 C++ 項目。
    2. 創建 Firebase 項目
    3. 向 Firebase 註冊您的應用(iOS 或 Android)
    4. 添加移動平台 Firebase 配置文件
  2. 創建火力地堡配置文件的桌面版本:

    • 如果添加了Android google-services.json文件-當你運行你的應用程序,火力地堡位於該移動文件,然後自動生成一個桌面火力地堡配置文件( google-services-desktop.json )。

    • 如果添加了iOS GoogleService-Info.plist文件-在你運行你的應用程序,你需要這個移動文件轉換到桌面火力地堡的配置文件。要轉換的文件,運行在相同的目錄中的以下命令GoogleService-Info.plist文件:

      generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist

    此桌面配置文件包含您在 Firebase 控制台設置工作流程中輸入的 C++ 項目 ID。參觀了解火力地堡項目了解更多有關配置文件。

  3. 將 Firebase SDK 添加到您的 C++ 項目。

    下面的步驟用作如何添加任何一個例子支持火力地堡產品到C ++項目。在本示例中,我們將逐步添加 Firebase 身份驗證和 Firebase 實時數據庫。

    1. 您設置FIREBASE_CPP_SDK_DIR環境變量解壓的火力地堡C ++ SDK的位置。

    2. 為了您的項目CMakeLists.txt文件,添加以下內容,其中包括庫,為您要使用的火力地堡產品。例如,要使用 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++ 應用程序。

可用庫(桌面)

的火力地堡C ++ SDK包括桌面工作流支持為特徵的子集,使火力地堡的某些部分在獨立的桌面使用建立在Windows,MacOS和Linux操作系統。

Firebase 產品庫參考(使用 CMake)
驗證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 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 12 進行了測試。

在 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

下一步