Catch up on highlights from Firebase at Google I/O 2023. Learn more

Добавьте Firebase в свой проект C++

Усильте свои игры на 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 .

  • Убедитесь, что ваш проект соответствует следующим требованиям:

  • Настройте физическое устройство или используйте эмулятор для запуска приложения.

    • Эмуляторы должны использовать образ эмулятора с Google Play.

    • Для некоторых библиотек C++ на клиентском устройстве требуются службы Google Play; просмотрите список на этой странице.

  • Войдите в Firebase , используя свою учетную запись Google.

Шаг 2. Создайте проект Firebase.

Прежде чем вы сможете добавить Firebase в свой проект C++, вам необходимо создать проект Firebase для подключения к вашему проекту C++. Посетите страницу Understand Firebase Projects , чтобы узнать больше о проектах Firebase.

Шаг 3. Зарегистрируйте свое приложение в Firebase.

Чтобы использовать Firebase в своем приложении для Android, вам необходимо зарегистрировать свое приложение в проекте Firebase. Регистрация вашего приложения часто называется «добавлением» вашего приложения в ваш проект.

  1. Перейдите в консоль Firebase .

  2. В центре страницы обзора проекта щелкните значок Android ( ) или «Добавить приложение» , чтобы запустить рабочий процесс установки.

  3. Введите имя пакета вашего приложения в поле имени пакета Android .

  4. (Необязательно) Введите другую информацию о приложении: псевдоним приложения и сертификат подписи отладки SHA-1 .

  5. Щелкните Зарегистрировать приложение .

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

  1. Нажмите Загрузить google-services.json , чтобы получить файл конфигурации Firebase Android.

  2. Откройте свой проект C++ в среде IDE, затем добавьте файл конфигурации в свой проект:

  3. (Только сборки Gradle) Чтобы включить службы Firebase в проекте C++, добавьте подключаемый модуль google-services в файл build.gradle верхнего уровня.

    1. Добавьте правила, чтобы включить подключаемый модуль 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
            // ...
          }
        }
      
    2. Примените плагин Google Services Gradle:

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
        android {
          // ...
        }
      
  4. Вы закончили настройку задач в консоли Firebase. Продолжайте добавлять SDK Firebase C++ ниже.

Шаг 5. Добавьте SDK Firebase C++.

Шаги, описанные в этом разделе, являются примером того, как добавить поддерживаемые продукты Firebase в ваш проект Firebase C++.

  1. Загрузите Firebase C++ SDK , затем разархивируйте 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, которые вы хотите использовать в своем приложении.

    Аналитика включена

    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
    }
    
  5. В файл 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}")
    
  6. Синхронизируйте свое приложение, чтобы убедиться, что все зависимости имеют необходимые версии.

  7. Если вы добавили 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++.

  1. Для настольных рабочих процессов необходимо выполнить следующее:

    1. Настройте свой проект C++ для CMake.
    2. Создайте проект Firebase
    3. Зарегистрируйте свое приложение (iOS или Android) в Firebase.
    4. Добавьте файл конфигурации Firebase для мобильной платформы.
  2. Создайте настольную версию файла конфигурации 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 , чтобы узнать больше о файлах конфигурации.

  3. Добавьте Firebase SDK в свой проект C++.

    Приведенные ниже шаги служат примером того, как добавить любой поддерживаемый продукт Firebase в ваш проект C++. В этом примере мы рассмотрим добавление аутентификации Firebase и базы данных Firebase Realtime.

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

Доступные библиотеки (рабочий стол)

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 .

Следующие шаги