Улучшите свои игры на C++ с помощью наших SDK Firebase C++, которые предоставляют интерфейс C++ поверх SDK Firebase.
Получите доступ к Firebase полностью из вашего кода C++ без необходимости писать собственный код платформы. Firebase SDK также переводит многие языковые идиомы, используемые Firebase, в интерфейс, более знакомый разработчикам C++.
Дополнительну�� информацию о том, как улучшить свои игры с помощью Firebase, можно найти на нашей странице игр Firebase .
Вы уже добавили Firebase в свой проект на C++? Убедитесь, что вы используете последнюю версию Firebase C++ SDK .
Предварительные условия
Установите предпочитаемый вами редактор или интегрированную среду разработки, например Android Studio, IntelliJ или VS Code.
Получите Android SDK .
Убедитесь, что ваш проект соответствует этим требованиям:
Целевой уровень API 19 (KitKat) или выше.
Использует Gradle и настроен с помощью CMake.
Настройте физическое устройство или используйте эмулятор для запуска приложения.
Войдите в Firebase, используя свою учетную запись Google.
Шаг 2. Создайте проект Firebase.
Прежде чем вы сможете добавить Firebase в свой проект C++, вам необходимо создать проект Firebase для подключения к вашему проекту C++. Посетите раздел «Понимание проектов Firebase», чтобы узнать больше о проектах Firebase.
Шаг 3. Зарегистрируйте свое приложение в Firebase.
Чтобы использовать Firebase в своем приложении для Android, вам необходимо зарегистрировать свое приложение в проекте Firebase. Регистрация вашего приложения часто называется «добавлением» вашего приложения в проект.
Перейдите в консоль Firebase .
В центре страницы обзора проекта щелкните значок Android (
) или «Добавить приложение» , чтобы запустить рабочий процесс установки.Введите имя пакета вашего приложения в поле имени пакета Android .
(Необязательно) Введите другую информацию о приложении: псевдоним приложения и сертификат подписи отладки SHA-1 .
Нажмите Зарегистрировать приложение .
Шаг 4. Добавьте файл конфигурации Firebase.
Нажмите «Загрузить google-services.json» , чтобы получить файл конфигурации Firebase Android.
Откройте проект 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.4.2' // Google Services plugin implementation 'com.google.android.gms:18.5.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 в удобное место.
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 о завершении инициализации. Если вы запустили свое приложение на эмуляторе, имеющем доступ к сети, консоль 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 для сборок в режиме выпуска, чтобы уменьшить размеры приложений и защитить исходный код 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
).Если вы добавили файл iOS
GoogleService-Info.plist
— перед запуском приложения вам необходимо преобразовать этот мобильный файл в файл конфигурации 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_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: многопоточный/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 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 .
- Отслеживайте панель «Использование и выставление счетов» в консоли Firebase , чтобы получить общую картину использования вашего проекта в нескольких сервисах Firebase.
- Ознакомьтесь с контрольным списком запуска Firebase .