Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

将 Firebase 添加到您的 C++ 项目

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

使用我们的 Firebase C++ SDK 为您的 C++ 游戏提供动力,这些 SDK 在适用于 iOS 和 Android 的 Firebase 之上提供了一个 C++ 接口。

完全从您的 C++ 代码访问 Firebase,无需编写任何平台原生代码。 Firebase SDK 还将 Firebase 使用的许多特定语言的习语翻译成 C++ 开发人员更熟悉的界面。

在我们的Firebase 游戏页面上找到有关使用 Firebase 为您的游戏提供动力的更多信息。

已经将 Firebase 添加到您的 C++ 项目?确保您使用的是最新版本的Firebase C++ SDK

先决条件

  • 安装您喜欢的编辑器或 IDE,例如 Android Studio、IntelliJ 或 VS Code。

  • 获取安卓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 程序包名称字段中输入您的应用程序的程序包名称。

  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 服务 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 版本中

火力地堡产品图书馆参考资料
( 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 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

混淆器

许多 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 服务

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 上的独立桌面构建中使用。

火力地堡产品库引用(使用 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
云端 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

下一步