Как добавить Firebase в проект 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. В центре обзорной страницы проекта нажмите на значок Android или Add app (Добавить приложение). Будет запущен мастер настройки.

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

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

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

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

  1. Нажмите Download google-services.json (Скачать 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.1'
          }
        }
      
        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 появится уведомление о том, что подключение приложения выполнено.

Готово! Приложение C++ зарегистрировано и настроено для использования сервисов Firebase.

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

Дополнительную информацию о библиотеках Firebase на C++ можно найти в справочной документации и в нашем SDK с открытым исходным кодом на GitHub.

Доступные библиотеки для 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, make-файлами, 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. Добавьте Firebase SDK в проект C++.

    Ниже описано, как добавить в проект C++ любой поддерживаемый продукт Firebase. В этом примере мы добавим 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++.

Доступные библиотеки (компьютеры)

SDK Firebase C++ включает поддержку рабочих процессов на компьютерах для некоторых функций, что позволяет использовать определенные части 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 (компьютеры)

SDK Realtime Database для компьютеров использует REST для доступа к базе данных, поэтому вам необходимо объявить индексы, которые вы используете с Query::OrderByChild() на компьютере, иначе ваши прослушиватели не будут работать.

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

Библиотеки Windows

Для Windows версии библиотек предоставляются на основе следующих данных:

  • Платформа сборки: 32-разрядная (x86) или 64-разрядная (x64) версия.
  • Среда выполнения Windows: Multithreaded / MT или Multithreaded DLL /MD
  • Цель: Release или Debug

Обратите внимание, что перечисленные ниже библиотеки были протестированы с помощью Visual Studio 2015 и 2017.

При создании компьютерных приложений на C++ в Windows свяжите с проектом следующие библиотеки 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.

При создании компьютерных приложений на C++ в macOS свяжите с проектом следующее:

  • 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.

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

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