Как добавить Firebase в проект C++

Улучшите свои игры на C++ с помощью Firebase C++ SDK, который предоставляет интерфейс C++ поверх Firebase SDK.

Получите доступ к Firebase полностью из кода C++, не написав ни одной строки кода для платформы. Firebase SDK также переводит многие идиомы, используемые в Firebase, на более привычный для разработчиков C++ интерфейс.

Подробнее о том, как использовать Firebase в играх, можно узнать на странице Firebase для игр.

Вы уже добавили Firebase в проект C++? Убедитесь, что вы используете последнюю версию Firebase C++ SDK.


Требования

  • Установите предпочитаемый редактор или интегрированную среду разработки, например Android Studio, IntelliJ или VS Code.

  • Получите Android SDK.

  • Убедитесь, что ваш проект соответствует следующим требованиям:

  • Настройте физическое устройство или используйте эмулятор для запуска приложения.

    • Эмуляторы должны использовать образ эмулятора с Google Play.

    • Для некоторых библиотек C++ на клиентском устройстве требуются сервисы Google Play. Ознакомьтесь с списком на этой странице.

  • Войдите в Firebase, используя свой аккаунт Google.

Шаг 2. Создайте проект Firebase

Прежде чем добавить Firebase в проект C++, создайте проект Firebase, который будет связан с проектом C++. Подробнее о проектах Firebase…

Шаг 3. Зарегистрируйте приложение в Firebase

Чтобы использовать Firebase в приложении Android, зарегистрируйте его в проекте Firebase. Регистрацию приложения часто называют добавлением приложения в проект.

  1. Откройте консоль Firebase.

  2. На странице Project Overview (Обзор проекта) нажмите на значок Android () или Добавить приложение. Будет запущен мастер настройки.

  3. Введите название пакета приложения в поле Название пакета Android.

  4. (Необязательно.) Введите псевдоним приложения – внутренний идентификатор, который будет виден только вам в консоли Firebase.

  5. Нажмите Register app (Зарегистрировать приложение).

Шаг 4. Добавьте файл конфигурации Firebase

  1. Нажмите Скачать google-services.json, чтобы получить файл конфигурации Firebase для Android.

  2. Откройте проект C++ в интегрированной среде разработки и добавьте в него файл конфигурации:

  3. (Только для сборок Gradle.) Чтобы включить сервисы Firebase в проекте C++, добавьте плагин Gradle для сервисов Google в файл build.gradle верхнего уровня.

    1. Добавьте правила, чтобы включить плагин Gradle для сервисов Google. Также убедитесь, что у вас есть репозиторий 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.5.0'  // Google services Gradle plugin
            implementation 'com.google.android.gms:18.11.0'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. Примените плагин Gradle для сервисов Google:

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google services Gradle plugin
      
        android {
          // ...
        }
      
  4. Вы выполнили все задачи по настройке в консоли Firebase. Перейдите к разделу Добавление Firebase C++ SDK ниже.

Шаг 5. Добавьте Firebase C++ SDK

В этом разделе приведен пример того, как добавить поддерживаемые продукты Firebase в проект Firebase C++.

  1. Скачайте Firebase C++ SDK и распакуйте его в удобном месте.

    SDK Firebase C++ не предназначен для какой-либо определенной платформы, но содержит библиотеки для разных платформ.

  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.

Доступные библиотеки

Подробнее о библиотеках Firebase для C++ можно узнать из справочной документации и в репозитории GitHub, где опубликован SDK с открытым исходным кодом.

Доступные библиотеки для Android (с использованием CMake)

Обратите внимание, что библиотеки C++ для платформ Apple перечислены на версии этой страницы для платформ Apple (iOS и более поздних).

Продукт Firebase Ссылки на библиотеки
(firebaseCpp.dependencies
для файла build.gradle)
Ссылки на библиотеки
(firebase_libs
для файла CMakeLists.txt)
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
Realtime Database database firebase_database
(обязательно) firebase_app
Remote Config remoteConfig firebase_remote_config
(рекомендуется) firebase_analytics
(обязательно) firebase_app
УСТАРЕВШИЕ ИЛИ НЕПОДДЕРЖИВАЕМЫЕ БИБЛИОТЕКИ
Dynamic Links dynamicLinks firebase_dynamic_links
(рекомендуется) firebase_analytics
(обязательно) firebase_app

Дополнительная информация о настройке на мобильном устройстве

Как получать отчеты о сбоях NDK

Firebase Crashlytics поддерживает отчеты о сбоях для приложений, использующих нативные библиотеки Android. Подробнее о том, как получать отчеты о сбоях Android NDK…

Специальные системы сборки

Firebase предоставляет скрипт generate_xml_from_google_services_json.py для преобразования ресурсов google-services.json в ресурсы .xml, которые можно включить в проект. Этот скрипт применяет то же преобразование, что и плагин Gradle для сервисов Google Play при сборке приложений Android.

Если вы не используете Gradle (например, применяете ndk-build, makefiles, Visual Studio и т. д.), этот скрипт поможет вам автоматизировать создание строковых ресурсов Android.

ProGuard

Многие системы сборки Android используют ProGuard для сборки в режиме выпуска, чтобы уменьшить размер приложения и защитить исходный код Java.

Если вы используете ProGuard, вам нужно добавить файлы в libs/android/*.pro, соответствующие библиотекам Firebase C++, которые вы используете в конфигурации ProGuard.

Например, если вы используете 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 недоступны на клиентском устройстве, и попытаться устранить проблему, используя функции в google_play_services/availability.h.

В таблице ниже указано, требуется ли на клиентском устройстве сервис Google Play для каждого поддерживаемого продукта Firebase.

Библиотека Firebase для C++ Требуются ли сервисы Google Play на клиентском устройстве?
Analytics Необязательно
Authentication Обязательно
Cloud Firestore Обязательно
Cloud Functions Обязательно
Cloud Messaging Обязательно
Cloud Storage Обязательно
Dynamic Links Обязательно
Realtime Database Обязательно
Remote Config Обязательно

Как настроить рабочий процесс на компьютере (бета)

При разработке игр часто удобнее сначала тестировать их на компьютерах, а затем развертывать и тестировать на мобильных устройствах. Чтобы поддерживать этот рабочий процесс, мы предоставляем подмножество SDK Firebase C++, которые можно запускать в Windows, macOS, Linux и в редакторе C++.

  1. Для рабочих процессов на компьютере необходимо выполнить следующие действия:

    1. Настройте проект C++ для CMake.
    2. Как создать проект Firebase
    3. Как зарегистрировать приложение (для iOS или Android) в Firebase
    4. Как добавить файл конфигурации Firebase для мобильной платформы
  2. Создайте версию файла конфигурации Firebase для компьютера:

    • Если вы добавили файл google-services.json для Android, при запуске приложения 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++, который вы указали в процессе настройки консоли Firebase. Чтобы узнать больше о файлах конфигурации, прочитайте статью Проекты Firebase.

  3. Добавьте в проект C++ пакеты SDK Firebase.

    Ниже приведены инструкции по добавлению любого поддерживаемого продукта Firebase в проект C++. В этом примере мы добавим свойства Firebase Authentication и Firebase Realtime Database.

    1. Задайте для переменной среды FIREBASE_CPP_SDK_DIR путь к местоположению распакованного SDK Firebase C++.

    2. Добавьте в файл CMakeLists.txt проекта следующий контент, включая библиотеки для продуктов Firebase, которые вы хотите использовать. Например, чтобы использовать свойства Firebase Authentication и Firebase 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). Для вашего удобства также предоставляются фреймворки.

Обратите внимание, что библиотеки macOS были протестированы с помощью Xcode 26.2.

При создании приложений для 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 и Clang 5.0 на Ubuntu.

При создании приложений для Linux на языке C++ свяжите системную библиотеку pthread со своим проектом. Дополнительную информацию можно найти в документации к компилятору. Если вы используете GCC 5 или более позднюю версию, определите -D_GLIBCXX_USE_CXX11_ABI=0.

Дальнейшие действия