Усильте свои игры на C++ с помощью наших SDK Firebase C++, которые предоставляют интерфейс 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 19 (KitKat) или выше.
Использует Gradle и настроен с помощью CMake
Настройте физическое устройство или используйте эмулятор для запуска приложения.
Войдите в Firebase , используя свою учетную запись Google.
Шаг 2. Создайте проект Firebase.
Прежде чем вы сможете добавить Firebase в свой проект C++, вам необходимо создать проект Firebase для подключения к вашему проекту C++. Посетите страницу Understand Firebase Projects , чтобы узнать больше о проектах Firebase.
Шаг 3. Зарегистрируйте свое приложение в Firebase.
Чтобы использовать Firebase в своем приложении для Android, вам необходимо зарегистрировать свое приложение в проекте Firebase. Регистрация вашего приложения часто называется «добавлением» вашего приложения в ваш проект.
Перейдите в консоль Firebase .
В центре страницы обзора проекта щелкните значок Android (
) или «Добавить приложение» , чтобы запустить рабочий процесс установки.Введите имя пакета вашего приложения в поле имени пакета Android .
Имя пакета однозначно идентифицирует ваше приложение на устройстве и в магазине Google Play.
Имя пакета часто называют идентификатором приложения .
Найдите имя пакета вашего приложения в файле Gradle вашего модуля (уровня приложения), обычно
app/build.gradle
(пример имени пакета:com.yourcompany.yourproject
).Имейте в виду, что значение имени пакета чувствительно к регистру, и его нельзя изменить для этого приложения Firebase для Android после его регистрации в вашем проекте Firebase.
(Необязательно) Введите другую информацию о приложении: псевдоним приложения и сертификат подписи отладки SHA-1 .
Псевдоним приложения . Внутренний удобный идентификатор, который виден только вам в консоли Firebase.
Сертификат подписи отладки SHA-1 : хэш SHA-1 требуется для аутентификации Firebase (при использовании входа через Google или номера телефона ) и динамических ссылок Firebase .
Щелкните Зарегистрировать приложение .
Шаг 4. Добавьте файл конфигурации Firebase.
Нажмите Загрузить google-services.json , чтобы получить файл конфигурации Firebase Android.
Файл конфигурации Firebase содержит уникальные, но не секретные идентификаторы вашего проекта. Чтобы узнать больше об этом конфигурационном файле, посетите страницу Understand Firebase Projects .
Вы можете снова загрузить файл конфигурации Firebase в любое время.
Убедитесь, что к имени файла конфигурации не добавляются дополнительные символы, например
(2)
.
Откройте свой проект C++ в среде IDE, затем добавьте файл конфигурации в свой проект:
Сборки Gradle — добавьте файл конфигурации в тот же каталог, что и файл
build.gradle
верхнего уровня.Другие системы сборки — см. раздел Пользовательские системы сборки ниже, чтобы сгенерировать строковые ресурсы Android .
(Только сборки Gradle) Чтобы включить службы Firebase в проекте C++, добавьте подключаемый модуль google-services в файл
build.gradle
верхнего уровня.Добавьте правила, чтобы включить подключаемый модуль 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.15' // Google Services plugin implementation 'com.google.android.gms:18.2.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. Продолжайте добавлять SDK Firebase C++ ниже.
Шаг 5. Добавьте SDK Firebase C++.
Шаги, описанные в этом разделе, являются примером того, как добавить поддерживаемые продукты Firebase в ваш проект Firebase C++.
Загрузите Firebase C++ SDK , затем разархивируйте 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, которые вы хотите использовать в своем приложении.Аналитика включена
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 }
В файл
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}")
Синхронизируйте свое приложение, чтобы убедиться, что все зависимости имеют необходимые версии.
Если вы добавили Analytics, запустите свое приложение, чтобы отправить в Firebase подтверждение того, что вы успешно интегрировали 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 | firebase_analytics (обязательно) firebase_app |
Проверка приложения | appCheck | firebase_app_check (обязательно) 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.py
для преобразования google-services.json
в ресурсы .xml
, которые вы можете включить в свой проект. Этот сценарий применяет то же преобразование, которое плагин Gradle сервисов Google Play выполняет при создании приложений для Android.
Если вы не используете Gradle для сборки (например, используете ndk-build, makefiles, Visual Studio и т. д.), вы можете использовать этот скрипт для автоматизации генерации строковых ресурсов Android .
Прогард
Многие системы сборки 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++ требуется, чтобы сервисы Google Play находились на клиентском устройстве Android. Если библиотека Firebase C++ возвращает kInitResultFailedMissingDependency
при инициализации, это означает, что службы Google Play недоступны на клиентском устройстве (это означает, что его необходимо обновить, повторно активировать, исправить разрешения и т. д.). Библиотеку Firebase нельзя использовать, пока не будет исправлена ситуация на клиентском устройстве.
Узнать, почему сервисы Google Play недоступны на клиентском устройстве (и попытаться это исправить), можно с помощью функций в google_play_services/availability.h
.
В следующей таблице указано, требуются ли сервисы Google Play на клиентском устройстве для каждого поддерживаемого продукта Firebase.
Библиотека Firebase C++ | Требуются ли сервисы Google Play на клиентском устройстве? |
---|---|
AdMob | Не требуется (обычно) |
Аналитика | Не требуется |
Аутентификация | Необходимый |
Облако Firestore | Необходимый |
Облачные функции | Необходимый |
Облачный обмен сообщениями | Необходимый |
Облачное хранилище | Необходимый |
Динамические ссылки | Необходимый |
База данных реального времени | Необходимый |
Удаленная конфигурация | Необходимый |
Сервисы 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
.
Настройка рабочего процесса на рабочем столе ( бета-версия )
Когда вы создаете игру, часто гораздо проще сначала протестировать ее на настольных платформах, а затем развертывать и тестировать на мобильных устройствах позже в процессе разработки. Для поддержки этого рабочего процесса мы предоставляем подмножество SDK Firebase C++ , которые можно запускать в Windows, macOS, Linux и в редакторе C++.
Для настольных рабочих процессов необходимо выполнить следующее:
- Настройте свой проект C++ для CMake.
- Создайте проект Firebase
- Зарегистрируйте свое приложение (iOS или Android) в Firebase.
- Добавьте файл конфигурации Firebase для мобильной платформы.
Создайте настольную версию файла конфигурации 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
Этот файл конфигурации рабочего стола содержит идентификатор проекта C++, который вы ввели в рабочем процессе настройки консоли Firebase. Посетите страницу Understand Firebase Projects , чтобы узнать больше о файлах конфигурации.
Добавьте Firebase SDK в свой проект C++.
Приведенные ниже шаги служат примером того, как добавить любой поддерживаемый продукт Firebase в ваш проект C++. В этом примере мы рассмотрим добавление аутентификации Firebase и базы данных Firebase Realtime.
Задайте для переменной среды
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) |
---|---|
Проверка приложения | firebase_app_check (обязательно) firebase_app |
Аутентификация | 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 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 |
---|---|
Проверка приложения | advapi32, ws2_32, crypt32 |
Аутентификация | 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.
При создании настольных приложений 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
.
Следующие шаги
Ознакомьтесь с примерами приложений Firebase .
Изучите SDK с открытым исходным кодом на GitHub .
Подготовьтесь к запуску вашего приложения:
- Настройте оповещения о бюджете для своего проекта в Google Cloud Console.
- Следите за панелью управления «Использование и выставление счетов» в консоли Firebase, чтобы получить общую картину использования вашего проекта в нескольких сервисах Firebase.
- Ознакомьтесь с контрольным списком запуска Firebase .