Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

Улучшите свои игры на C ++ с помощью наших пакетов SDK Firebase C ++, которые предоставляют интерфейс C ++ поверх Firebase для iOS и Android.

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

Узнать более подробную информацию о включении в ваши игры с Firebase на нашей странице Firebase игры .

Уже добавили Firebase в свой проект C ++? Убедитесь , что вы используете последнюю версию ++ SDK Firebase C .

Предпосылки

  • Установите предпочтительный редактор или IDE, например Android Studio, IntelliJ или VS Code.

  • Получение Android SDK .

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

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

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

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

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

Шаг 2: Создание проекта Firebase

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

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

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

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

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

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

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

  5. Выберите Зарегистрировать приложение.

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

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

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

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

    1. Добавьте правила, чтобы включить плагин 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.3.10'  // Google Services plugin
            implementation 'com.google.android.gms:17.6.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. Продолжить Добавить SDKs Firebase C ++ ниже.

Шаг 5: Добавить SDKs 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. Если вы добавили Google Analytics, запустите приложение, чтобы отправить в Firebase подтверждение того, что вы успешно интегрировали Firebase. В противном случае вы можете пропустить этап проверки.

    В журналах вашего устройства будет отображаться проверка Firebase, что инициализация завершена. Если вы запустили приложение на эмуляторе , который имеет доступ к сети, то Firebase консоль уведомляет вас , что ваше соединение приложения завершено.

Все готово! Ваше приложение C ++ зарегистрировано и настроено для использования служб Firebase.

Доступные библиотеки

Подробнее о библиотеках C ++ Firebase в справочной документации и в нашем с открытым исходным кодом SDK выпуска на GitHub .

Доступные библиотеки для Android ( с использованием CMake)

Обратите внимание , что C ++ библиотеки для прошивки перечислена на версии IOS этой страницы настройки .

Продукт Firebase Библиотечные ссылки
( firebaseCpp.dependencies
для build.gradle файла)
Библиотечные ссылки
( firebase_libs
для CMakeLists.txt файла)
AdMob admob firebase_admob
(обязательно) firebase_analytics
(обязательно) firebase_app
Аналитика analytics firebase_analytics
(обязательно) firebase_app
Аутентификация auth firebase_auth
(обязательно) firebase_app
Cloud 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 (например, вы используете НКА-сборку, мейкфайлы, 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 ++ требуют службы Play Google , чтобы быть на Android устройстве клиента. Если A Firebase C ++ библиотека возвращает kInitResultFailedMissingDependency по инициализации, это означает , что услуги в Google Play не доступна на клиентском устройстве ( это означает , что она должна быть обновлена, возобновлена, разрешения фиксированной и т.д.). Библиотеку Firebase нельзя использовать, пока ситуация на клиентском устройстве не будет исправлена.

Вы можете узнать, почему услуги в Google Play недоступна на клиентском устройстве (и попытаться исправить его), используя функции в google_play_services/availability.h .

В следующей таблице указано, требуются ли сервисы Google Play на клиентском устройстве для каждого поддерживаемого продукта Firebase.

Библиотека Firebase C ++ На клиентском устройстве требуются сервисы Google Play?
AdMob Не требуется ( как правило)
Аналитика Не требуется
Аутентификация Необходимый
Cloud 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 .

Настройка рабочего стола рабочего процесса (бета - версия)

Когда вы создаете игру, часто намного проще сначала протестировать ее на настольных платформах, а затем развернуть и протестировать на мобильных устройствах позже в процессе разработки. Для поддержки этого рабочего процесса, мы обеспечиваем подмножество SDKs в 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. Визит Понимать Firebase Проекты более узнать о файлах конфигурации.

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

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

    1. Установите FIREBASE_CPP_SDK_DIR переменную окружения в расположение распакованного Firebase C ++ SDK.

    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_auth
(обязательно) firebase_app
Cloud 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 для рабочего стола использует 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
Cloud 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 12.

При создании настольных приложений на 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 .

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