Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

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

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

Полностью получайте доступ к Firebase из вашего кода C ++, без необходимости писать собственный код платформы. SDK Firebase также переводит многие языковые идиомы, используемые 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.4'  // Google Services plugin
            implementation 'com.google.android.gms:17.5.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. Укажите местоположение распакованного SDK в файле gradle.properties вашего проекта:

    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 ):

    android.defaultConfig.externalNativeBuild.cmake {
      arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
    }
    
    apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
    firebaseCpp.dependencies {
      analytics
    }
    
  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 перечислены в версии для iOS на этой странице установки .

Продукт Firebase Ссылки на библиотеки (с использованием CMake)
AdMob firebase_admob
(обязательно) firebase_analytics
(обязательно) firebase_app
Аналитика firebase_analytics
(обязательно) firebase_app
Аутентификация firebase_auth
(обязательно) firebase_app
Cloud Firestore (альфа) firebase_firestore
(обязательно) firebase_app
(обязательно) firebase_auth
Облачные функции firebase_functions
(обязательно) firebase_app
Обмен сообщениями в облаке firebase_messaging
(рекомендуется) firebase_analytics
(обязательно) firebase_app
Облачное хранилище firebase_storage
(обязательно) firebase_app
Динамические ссылки firebase_dynamic_links
(рекомендуется) firebase_analytics
(обязательно) firebase_app
База данных в реальном времени firebase_database
(обязательно) firebase_app
Удаленная конфигурация 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 .

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 ++ требуют, чтобы сервисы Google Play были на клиентском устройстве Android. Если библиотека 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 только если kInitResultFailedMissingDependency оба следующих 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. Добавьте SDK Firebase в свой проект C ++.

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

    1. Задайте в FIREBASE_CPP_SDK_DIR среды 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 ++.

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

Пакет SDK Firebase C ++ включает поддержку рабочего процесса рабочего стола для подмножества функций, позволяя использовать определенные части 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. Следовательно, вам не нужно условно компилировать код для рабочего стола.

Рабочий стол базы данных в реальном времени

Пакет 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
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 10.3.0.

При создании настольных приложений 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 системную библиотеку pthread со своим проектом. Обратитесь к документации вашего компилятора для получения дополнительной информации. Если вы строите с GCC 5 или новее, определите -D_GLIBCXX_USE_CXX11_ABI=0 .

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