Расширьте возможности своих игр на C++ с помощью наших пакетов Firebase C++ SDK, которые предоставляют интерфейс C++ поверх Firebase SDK.
Доступ к Firebase осуществляется полностью из вашего кода на C++, без необходимости написания нативного кода для платформы. Firebase SDK также преобразует многие специфические для языка идиомы, используемые Firebase, в интерфейс, более привычный для разработчиков на C++.
Дополнительную информацию о том, как улучшить ваши игры с помощью Firebase, можно найти на нашей странице игр Firebase .
Уже добавили Firebase в свой проект C++? Убедитесь, что вы используете последнюю версию Firebase C++ SDK .
Предпосылки
- Установите предпочитаемый вами редактор или IDE, например Android Studio, IntelliJ или VS Code. 
- Получите Android SDK . 
- Убедитесь, что ваш проект соответствует следующим требованиям: - Целевой уровень API 23 (Marshmallow) или выше 
- Использует Gradle и настраивается с помощью CMake 
 
- Настройте физическое устройство или используйте эмулятор для запуска вашего приложения. 
- Войдите в Firebase, используя свою учетную запись Google. 
Шаг 2 : Создайте проект Firebase
Прежде чем добавить Firebase в свой проект C++, необходимо создать проект Firebase для подключения к нему. Подробнее о проектах Firebase можно узнать в разделе «Понимание проектов Firebase».
Шаг 3 : Зарегистрируйте свое приложение в Firebase
Чтобы использовать Firebase в вашем приложении для Android, вам необходимо зарегистрировать его в проекте Firebase. Регистрация приложения часто называется «добавлением» приложения в проект.
- Перейдите в консоль Firebase . 
- В центре страницы обзора проекта нажмите значок Android ( ) или «Добавить приложение» , чтобы запустить рабочий процесс настройки. 
- Введите имя пакета вашего приложения в поле «Имя пакета Android» . - Имя пакета уникально идентифицирует ваше приложение на устройстве и в магазине Google Play. 
- Имя пакета часто называют идентификатором приложения . 
- Найдите имя пакета вашего приложения в файле Gradle вашего модуля (уровня приложения), обычно это - app/build.gradle(пример имени пакета:- com.yourcompany.yourproject).
- Имейте в виду, что значение имени пакета чувствительно к регистру, и его нельзя изменить для этого приложения Firebase Android после его регистрации в вашем проекте Firebase. 
 
- (Необязательно) Введите псевдоним приложения — внутренний удобный идентификатор, который виден только вам в консоли Firebase . 
- Нажмите «Зарегистрировать приложение» . 
Шаг 4 : Добавьте файл конфигурации Firebase
- Нажмите «Загрузить google-services.json» , чтобы получить файл конфигурации Firebase Android. - Файл конфигурации Firebase содержит уникальные, но не секретные идентификаторы вашего проекта и приложения. Подробнее об этом файле конфигурации см. в статье «Подробнее о проектах Firebase» . 
- Вы можете снова загрузить файл конфигурации Firebase в любое время. 
- Убедитесь, что к имени файла конфигурации не добавлены дополнительные символы, например - (2).
 
- Откройте свой проект C++ в IDE, затем добавьте файл конфигурации в свой проект: - Сборки Gradle — добавьте файл конфигурации в тот же каталог, что и файл - build.gradleверхнего уровня.
- Другие системы сборки — см. раздел Пользовательские системы сборки ниже, чтобы создать строковые ресурсы Android . 
 
- (Только для сборок Gradle) Чтобы включить службы Firebase в вашем проекте C++, добавьте плагин google-services в файл - build.gradleверхнего уровня.- Добавьте правила для включения плагина Google Services Gradle. Также убедитесь, что у вас есть репозиторий Maven от Google. - 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.4.4' // Google Services plugin implementation 'com.google.android.gms:18.9.0' } } allprojects { // ... repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository // ... } }
- Примените плагин Google Services Gradle: - apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
 
- Настройка задач в консоли Firebase завершена. Перейдите к разделу «Добавление Firebase C++ SDK» ниже. 
Шаг 5 : Добавьте Firebase C++ SDK
Действия, описанные в этом разделе, представляют собой пример добавления поддерживаемых продуктов Firebase в ваш проект Firebase C++.
- Загрузите Firebase C++ SDK , затем распакуйте SDK в удобное место. - Firebase C++ SDK не привязан к конкретной платформе, но содержит библиотеки, специфичные для данной платформы. 
- В файле - gradle.propertiesвашего проекта укажите расположение распакованного SDK:- systemProp.firebase_cpp_sdk.dir=full-path-to-SDK 
- В файл - 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" 
- В файл 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 } 
- Добавьте в файл - 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}") 
- Синхронизируйте свое приложение, чтобы убедиться, что все зависимости имеют необходимые версии. 
- Если вы добавили Analytics , запустите приложение, чтобы отправить в Firebase подтверждение успешной интеграции. В противном случае вы можете пропустить этап проверки. - В журналах вашего устройства отобразится подтверждение Firebase о завершении инициализации. Если вы запустили приложение на эмуляторе с доступом к сети, консоль Firebase уведомит вас о завершении подключения приложения. 
Всё готово! Ваше приложение C++ зарегистрировано и настроено для использования сервисов Firebase.
Доступные библиотеки
Подробнее о библиотеках C++ Firebase можно узнать в справочной документации и в нашем выпуске SDK с открытым исходным кодом на GitHub .
Доступные библиотеки для Android (используя CMake)
Обратите внимание, что библиотеки C++ для платформ Apple перечислены в версии этой страницы настройки для платформ Apple (iOS+) .
| Продукт Firebase | Библиотечные ссылки ( firebaseCpp.dependenciesдля файла build.gradle) | Библиотечные ссылки ( firebase_libsдля файла CMakeLists.txt) | 
|---|---|---|
| AdMob | admob | firebase_admob(обязательно) firebase_analytics(обязательно) firebase_app | 
| 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 | 
| Dynamic Links | dynamicLinks | firebase_dynamic_links(рекомендуется) firebase_analytics(обязательно) firebase_app | 
| Realtime Database | database | firebase_database(обязательно) firebase_app | 
| Remote Config | remoteConfig | firebase_remote_config(рекомендуется) 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 .
ПроГард
Многие системы сборки Android используют ProGuard для сборок в режиме Release, чтобы уменьшить размеры приложений и защитить исходный код 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++ требуется наличие сервисов Google Play на клиентском устройстве Android. Если библиотека Firebase C++ возвращает kInitResultFailedMissingDependency при инициализации, это означает, что сервисы Google Play недоступны на клиентском устройстве (то есть её необходимо обновить, повторно активировать, исправить разрешения и т. д.). Библиотеку Firebase нельзя использовать, пока проблема на клиентском устройстве не будет устранена.
 Узнать, почему сервисы Google Play недоступны на клиентском устройстве (и попытаться это исправить), можно с помощью функций в google_play_services/availability.h .
В следующей таблице указано, требуются ли сервисы Google Play на клиентском устройстве для каждого поддерживаемого продукта Firebase.
| Библиотека Firebase C++ | Требуются ли сервисы Google Play на клиентском устройстве? | 
|---|---|
| AdMob | Не требуется (обычно) | 
| Analytics | Не требуется | 
| Authentication | Необходимый | 
| Cloud Firestore | Необходимый | 
| Cloud Functions | Необходимый | 
| Cloud Messaging | Необходимый | 
| Cloud Storage | Необходимый | 
| Dynamic Links | Необходимый | 
| Realtime Database | Необходимый | 
| Remote Config | Необходимый | 
Сервисы AdMob и Google Play
 Большинство версий Google Mobile Ads SDK для Android могут работать без сервисов 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++.
- Для рабочих процессов на настольном компьютере вам необходимо выполнить следующее: - Настройте свой проект C++ для CMake.
- Создать проект Firebase
- Зарегистрируйте свое приложение (iOS или Android) в Firebase
- Добавьте файл конфигурации Firebase для мобильной платформы
 
- Создайте настольную версию файла конфигурации Firebase: - Если вы добавили файл Android - google-services.json— при запуске вашего приложения Firebase находит этот мобильный файл, а затем автоматически генерирует файл конфигурации Firebase для настольного компьютера (- google-services-desktop.json).
- Если вы добавили файл - GoogleService-Info.plistдля iOS , перед запуском приложения необходимо преобразовать этот мобильный файл в файл конфигурации Firebase для настольного компьютера . Для этого выполните следующую команду из того же каталога, где находится файл- GoogleService-Info.plist:- generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist 
 - Этот файл конфигурации рабочего стола содержит идентификатор проекта C++, который вы ввели в процессе настройки консоли Firebase . Подробнее о файлах конфигурации см. в разделе «Понимание проектов Firebase» . 
- Добавьте Firebase SDK в свой проект C++. - Приведённые ниже шаги служат примером добавления любого поддерживаемого продукта Firebase в ваш проект C++. В этом примере мы рассмотрим добавление Firebase Authentication и Firebase Realtime Database . - Задайте переменную среды - FIREBASE_CPP_SDK_DIRв соответствии с расположением распакованного Firebase C++ SDK.
- Добавьте в файл - 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}") 
 
- Запустите приложение 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_firestorefirebase_authfirebase_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.
При разработке настольных приложений 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 16.2.
При создании настольных приложений C++ на macOS свяжите со своим проектом следующее:
-  системная библиотека pthread
-  Системная платформа CoreFoundationmacOS
-  Фреймворк системы FoundationmacOS
-  Системная структура SecuritymacOS
-  Системная платформа GSSmacOS
-  Системная платформа KerberosmacOS
-  Системная структура macOS SystemConfiguration
Более подробную информацию можно найти в документации к вашему компилятору.
Библиотеки 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 .
Следующие шаги
- Изучите примеры приложений Firebase . 
- Изучите открытый исходный код SDK на GitHub . 
- Подготовьтесь к запуску вашего приложения: - Настройте оповещения о бюджете для вашего проекта в консоли Google Cloud .
- Отслеживайте панель использования и выставления счетов в консоли Firebase , чтобы получить общую картину использования вашего проекта в различных службах Firebase.
- Ознакомьтесь с контрольным списком запуска Firebase .