Улучшите свои игры на 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.
Убедитесь, что ваш проект соответствует следующим требованиям:
Целевой уровень API – 23 (Marshmallow) или выше.
Использует Gradle и настроен с помощью CMake
Настройте физическое устройство или используйте эмулятор для запуска приложения.
Войдите в Firebase, используя свой аккаунт Google.
Шаг 2. Создайте проект Firebase
Прежде чем добавить Firebase в проект C++, создайте проект Firebase, который будет связан с проектом C++. Подробнее о проектах Firebase…
Шаг 3. Зарегистрируйте приложение в Firebase
Чтобы использовать Firebase в приложении Android, зарегистрируйте его в проекте Firebase. Регистрацию приложения часто называют добавлением приложения в проект.
Откройте консоль Firebase.
На странице Project Overview (Обзор проекта) нажмите на значок Android () или Добавить приложение. Будет запущен мастер настройки.
Введите название пакета приложения в поле Название пакета Android.
(Необязательно.) Введите псевдоним приложения – внутренний идентификатор, который будет виден только вам в консоли Firebase.
Нажмите Register app (Зарегистрировать приложение).
Шаг 4. Добавьте файл конфигурации Firebase
Нажмите Скачать google-services.json, чтобы получить файл конфигурации Firebase для Android.
Откройте проект C++ в интегрированной среде разработки и добавьте в него файл конфигурации:
Сборки Gradle – добавьте файл конфигурации в тот же каталог, что и файл
build.gradleверхнего уровня.Другие системы сборки. Чтобы создать строковые ресурсы Android, ознакомьтесь с разделом Специальные системы сборки ниже.
(Только для сборок Gradle.) Чтобы включить сервисы Firebase в проекте C++, добавьте плагин Gradle для сервисов Google в файл
build.gradleверхнего уровня.Добавьте правила, чтобы включить плагин 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 // ... } }Примените плагин Gradle для сервисов Google:
apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google services Gradle plugin android { // ... }
Вы выполнили все задачи по настройке в консоли Firebase. Перейдите к разделу Добавление Firebase C++ SDK ниже.
Шаг 5. Добавьте Firebase C++ SDK
В этом разделе приведен пример того, как добавить поддерживаемые продукты Firebase в проект Firebase C++.
Скачайте Firebase C++ SDK и распакуйте его в удобном месте.
SDK Firebase C++ не предназначен для какой-либо определенной платформы, но содержит библиотеки для разных платформ.
В файле
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 завершена. Если вы запустили приложение на эмуляторе с доступом к сети, в консоли 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++.
Для рабочих процессов на компьютере необходимо выполнить следующие действия:
Создайте версию файла конфигурации 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.
Добавьте в проект C++ пакеты SDK Firebase.
Ниже приведены инструкции по добавлению любого поддерживаемого продукта Firebase в проект C++. В этом примере мы добавим свойства Firebase Authentication и Firebase Realtime Database.
Задайте для переменной среды
FIREBASE_CPP_SDK_DIRпуть к местоположению распакованного SDK Firebase C++.Добавьте в файл
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.
При создании приложений для ПК с 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Системный фреймворк macOSFoundationСистемный фреймворк macOSSecurityСистемный фреймворк macOSGSSСистемный фреймворк macOSKerberosСистемный фреймворк macOSSystemConfigurationСистемный фреймворк 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.
Дальнейшие действия
Изучите примеры приложений Firebase.
Подготовьтесь к запуску приложения:
- Настройте оповещения о бюджете для своего проекта в консоли Google Cloud.
- Отслеживайте панель управления "Использование и оплата" в консоли Firebase, чтобы получать общую информацию об использовании проекта в разных сервисах Firebase.
- Изучите контрольный список запуска Firebase.