Agrega Firebase a tu proyecto C++

Mejora tus juegos de C++ con nuestros SDK de Firebase C++, que proporcionan una interfaz de C++ además de los SDK de Firebase.

Accede a Firebase completamente desde tu código C++, sin tener que escribir ningún código nativo de la plataforma. El SDK de Firebase también traduce muchos modismos específicos del lenguaje utilizados por Firebase a una interfaz más familiar para los desarrolladores de C++.

Obtén más información sobre cómo potenciar tus juegos con Firebase en nuestra página de juegos de Firebase .

¿Ya agregaste Firebase a tu proyecto C++? Asegúrate de estar usando la última versión del SDK de Firebase C++ .

Requisitos previos

  • Instale su editor o IDE preferido, como Android Studio, IntelliJ o VS Code.

  • Obtenga el SDK de Android .

  • Asegúrese de que su proyecto cumpla con estos requisitos:

  • Configure un dispositivo físico o use un emulador para ejecutar su aplicación.

    • Los emuladores deben utilizar una imagen de emulador con Google Play.

    • Para algunas bibliotecas de C++, se requieren los servicios de Google Play en el dispositivo cliente; revise la lista en esta página.

  • Inicie sesión en Firebase con su cuenta de Google.

Paso 2 : crea un proyecto de Firebase

Antes de poder agregar Firebase a su proyecto de C++, debe crear un proyecto de Firebase para conectarse a su proyecto de C++. Visita Comprender los proyectos de Firebase para obtener más información sobre los proyectos de Firebase.

Paso 3 : registra tu aplicación en Firebase

Para usar Firebase en su aplicación de Android, debe registrar su aplicación con su proyecto de Firebase. Registrar su aplicación a menudo se denomina "agregar" su aplicación a su proyecto.

  1. Vaya a la consola de Firebase .

  2. En el centro de la página de descripción general del proyecto, haga clic en el ícono de Android ( ) o Agregar aplicación para iniciar el flujo de trabajo de configuración.

  3. Ingrese el nombre del paquete de su aplicación en el campo de nombre del paquete de Android .

  4. (Opcional) Ingrese otra información de la aplicación: apodo de la aplicación y certificado de firma de depuración SHA-1 .

  5. Haga clic en Registrar aplicación .

Paso 4 : agregue el archivo de configuración de Firebase

  1. Haga clic en Descargar google-services.json para obtener su archivo de configuración de Firebase Android.

  2. Abra su proyecto C++ en un IDE, luego agregue su archivo de configuración a su proyecto:

  3. (Solo compilaciones de Gradle) Para habilitar los servicios de Firebase en su proyecto de C++, agregue el complemento de servicios de Google a su archivo build.gradle de nivel superior.

    1. Agregue reglas para incluir el complemento Gradle de servicios de Google. Comprueba que también tienes el repositorio Maven de 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.4.1'  // Google Services plugin
            implementation 'com.google.android.gms:18.3.0'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. Aplique el complemento Gradle de servicios de Google:

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
        android {
          // ...
        }
      
  4. Ya terminaste con las tareas de configuración en Firebase console. Continúe agregando los SDK de Firebase C++ a continuación.

Paso 5 : Agregar los SDK de Firebase C++

Los pasos de esta sección son un ejemplo de cómo agregar productos de Firebase compatibles a su proyecto de Firebase C++.

  1. Descargue el SDK de Firebase C++ y luego descomprímalo en algún lugar conveniente.

    El SDK de Firebase C++ no es específico de la plataforma, pero contiene bibliotecas específicas de la plataforma.

  2. En el archivo gradle.properties de su proyecto, especifique la ubicación del SDK descomprimido:

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
    
  3. Al archivo settings.gradle de su proyecto, agregue el siguiente contenido:

    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. Al archivo Gradle de su módulo (nivel de aplicación) (generalmente app/build.gradle ), agregue el siguiente contenido.
    Incluye las dependencias de la biblioteca para los productos de Firebase que deseas usar en tu aplicación.

    Análisis habilitado

    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
    }
    

    Análisis no habilitado

    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. Al archivo CMakeLists.txt de su proyecto, agregue el siguiente contenido.
    Incluye las bibliotecas de los productos de Firebase que quieras usar en tu aplicación.

    Análisis habilitado

    # 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}")
    

    Análisis no habilitado

    # 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. Sincronice su aplicación para asegurarse de que todas las dependencias tengan las versiones necesarias.

  7. Si agregaste Analytics, ejecuta tu aplicación para enviar una verificación a Firebase de que has integrado Firebase correctamente. De lo contrario, puedes omitir el paso de verificación.

    Los registros de su dispositivo mostrarán la verificación de Firebase de que la inicialización está completa. Si ejecutaste tu aplicación en un emulador que tiene acceso a la red, Firebase console te notifica que la conexión de tu aplicación está completa.

¡Estás listo! Su aplicación C++ está registrada y configurada para usar los servicios de Firebase.

Bibliotecas disponibles

Obtenga más información sobre las bibliotecas de C++ Firebase en la documentación de referencia y en nuestra versión del SDK de código abierto en GitHub .

Bibliotecas disponibles para Android (usando CMake)

Tenga en cuenta que las bibliotecas de C++ para plataformas Apple se enumeran en la versión de plataformas Apple (iOS+) de esta página de configuración .

Producto base de fuego Referencias de la biblioteca
( firebaseCpp.dependencies
para el archivo build.gradle )
Referencias de la biblioteca
( firebase_libs
para el archivo CMakeLists.txt )
AdMob admob firebase_admob
(obligatorio) firebase_analytics
(obligatorio) firebase_app
Analítica analytics firebase_analytics
(obligatorio) firebase_app
Verificación de aplicaciones appCheck firebase_app_check
(obligatorio) firebase_app
Autenticación auth firebase_auth
(obligatorio) firebase_app
Tienda de fuego en la nube firestore firebase_firestore
(obligatorio) firebase_auth
(obligatorio) firebase_app
Funciones de la nube functions firebase_functions
(obligatorio) firebase_app
Mensajería en la nube messaging firebase_messaging
(recomendado) firebase_analytics
(obligatorio) firebase_app
Almacenamiento en la nube storage firebase_storage
(obligatorio) firebase_app
Enlaces dinámicos dynamicLinks firebase_dynamic_links
(recomendado) firebase_analytics
(obligatorio) firebase_app
Base de datos en tiempo real database firebase_database
(obligatorio) firebase_app
Configuración remota remoteConfig firebase_remote_config
(recomendado) firebase_analytics
(obligatorio) firebase_app

Información adicional para la configuración móvil

Obtenga informes de fallos del NDK

Firebase Crashlytics admite informes de fallos para aplicaciones que utilizan bibliotecas nativas de Android. Para obtener más información, consulte Obtener informes de fallos del NDK de Android .

Sistemas de construcción personalizados

Firebase proporciona el script generate_xml_from_google_services_json.py para convertir google-services.json en recursos .xml que puedes incluir en tu proyecto. Este script aplica la misma transformación que realiza el complemento Gradle de los servicios de Google Play al crear aplicaciones de Android.

Si no compila con Gradle (por ejemplo, usa ndk-build, makefiles, Visual Studio, etc.), puede usar este script para automatizar la generación de recursos de cadenas de Android .

ProGuard

Muchos sistemas de compilación de Android utilizan ProGuard para compilaciones en modo de lanzamiento para reducir el tamaño de las aplicaciones y proteger el código fuente de Java.

Si usa ProGuard, deberá agregar los archivos en libs/android/*.pro correspondientes a las bibliotecas de Firebase C++ que está usando en su configuración de ProGuard.

Por ejemplo, con Gradle, si usas Google Analytics, tu archivo build.gradle se vería así:

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
    }
  }
}

Requisito de servicios de Google Play

La mayoría de las bibliotecas de Firebase C++ requieren que los servicios de Google Play estén en el dispositivo Android del cliente. Si una biblioteca de Firebase C++ devuelve kInitResultFailedMissingDependency en la inicialización, significa que los servicios de Google Play no están disponibles en el dispositivo cliente (lo que significa que es necesario actualizarlos, reactivarlos, arreglar los permisos, etc.). La biblioteca de Firebase no se puede utilizar hasta que se corrija la situación en el dispositivo cliente.

Puede descubrir por qué los servicios de Google Play no están disponibles en el dispositivo cliente (e intentar solucionarlo) utilizando las funciones en google_play_services/availability.h .

La siguiente tabla indica si se requieren los servicios de Google Play en un dispositivo cliente para cada producto de Firebase compatible.

Biblioteca de Firebase C++ ¿Se requieren servicios de Google Play en el dispositivo cliente?
AdMob No requerido (generalmente)
Analítica No requerido
Autenticación Requerido
Tienda de fuego en la nube Requerido
Funciones de la nube Requerido
Mensajería en la nube Requerido
Almacenamiento en la nube Requerido
Enlaces dinámicos Requerido
Base de datos en tiempo real Requerido
Configuración remota Requerido

Servicios de AdMob y Google Play

La mayoría de las versiones del SDK de anuncios de Google para móviles para Android pueden funcionar correctamente sin los servicios de Google Play en el dispositivo cliente. Sin embargo, si usas la dependencia com.google.android.gms:play-services-ads-lite , en lugar de la dependencia estándar com.google.firebase:firebase-ads mencionada anteriormente, se requieren los servicios de Google Play .

La inicialización de AdMob solo devolverá kInitResultFailedMissingDependency cuando se cumplan las dos condiciones siguientes:

  • Los servicios de Google Play no están disponibles en el dispositivo cliente.
  • Estás utilizando com.google.android.gms:play-services-ads-lite .

Configurar un flujo de trabajo de escritorio ( beta )

Cuando estás creando un juego, a menudo es mucho más fácil probarlo primero en plataformas de escritorio y luego implementarlo y probarlo en dispositivos móviles más adelante en el desarrollo. Para respaldar este flujo de trabajo, proporcionamos un subconjunto de SDK de Firebase C++ que se pueden ejecutar en Windows, macOS, Linux y desde el editor de C++.

  1. Para flujos de trabajo de escritorio, debe completar lo siguiente:

    1. Configure su proyecto C++ para CMake.
    2. Crear un proyecto de Firebase
    3. Registre su aplicación (iOS o Android) con Firebase
    4. Agregar un archivo de configuración de Firebase para plataforma móvil
  2. Cree una versión de escritorio del archivo de configuración de Firebase:

    • Si agregó el archivo google-services.json de Android : cuando ejecuta su aplicación, Firebase localiza este archivo móvil y luego genera automáticamente un archivo de configuración de Firebase de escritorio ( google-services-desktop.json ).

    • Si agregó el archivo iOS GoogleService-Info.plist : antes de ejecutar su aplicación, debe convertir este archivo móvil en un archivo de configuración de Firebase de escritorio . Para convertir el archivo, ejecute el siguiente comando desde el mismo directorio que su archivo GoogleService-Info.plist :

      generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist

    Este archivo de configuración de escritorio contiene el ID del proyecto C++ que ingresaste en el flujo de trabajo de configuración de Firebase console. Visite Comprender los proyectos de Firebase para obtener más información sobre los archivos de configuración.

  3. Agrega los SDK de Firebase a tu proyecto de C++.

    Los pasos a continuación sirven como ejemplo de cómo agregar cualquier producto Firebase compatible a su proyecto C++. En este ejemplo, explicamos cómo agregar Firebase Authentication y Firebase Realtime Database.

    1. Configure su variable de entorno FIREBASE_CPP_SDK_DIR en la ubicación del SDK de Firebase C++ descomprimido.

    2. Al archivo CMakeLists.txt de su proyecto, agregue el siguiente contenido, incluidas las bibliotecas para los productos de Firebase que desea usar. Por ejemplo, para usar Firebase Authentication y 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. Ejecute su aplicación C++.

Bibliotecas disponibles (escritorio)

El SDK de Firebase C++ incluye compatibilidad con el flujo de trabajo de escritorio para un subconjunto de funciones, lo que permite usar ciertas partes de Firebase en compilaciones de escritorio independientes en Windows, macOS y Linux.

Producto base de fuego Referencias de biblioteca (usando CMake)
Verificación de aplicaciones firebase_app_check
(obligatorio) firebase_app
Autenticación firebase_auth
(obligatorio) firebase_app
Tienda de fuego en la nube firebase_firestore
firebase_auth
firebase_app
Funciones de la nube firebase_functions
(obligatorio) firebase_app
Almacenamiento en la nube firebase_storage
(obligatorio) firebase_app
Base de datos en tiempo real firebase_database
(obligatorio) firebase_app
Configuración remota firebase_remote_config
(obligatorio) firebase_app

Firebase proporciona las bibliotecas de escritorio restantes como implementaciones auxiliares (no funcionales) para mayor comodidad al compilar para Windows, macOS y Linux. Por lo tanto, no es necesario compilar código condicionalmente para apuntar al escritorio.

Escritorio de base de datos en tiempo real

El SDK de Realtime Database para escritorio usa REST para acceder a su base de datos, por lo que debe declarar los índices que usa con Query::OrderByChild() en el escritorio o sus oyentes fallarán.

Información adicional para la configuración del escritorio

bibliotecas de windows

Para Windows, las versiones de la biblioteca se proporcionan según lo siguiente:

  • Plataforma de compilación: modo de 32 bits (x86) frente a 64 bits (x64)
  • Entorno de ejecución de Windows: multiproceso/MT frente a DLL/MD multiproceso
  • Objetivo: lanzamiento versus depuración

Tenga en cuenta que las siguientes bibliotecas se probaron con Visual Studio 2015 y 2017.

Al crear aplicaciones de escritorio C++ en Windows, vincule las siguientes bibliotecas del SDK de Windows a su proyecto. Consulte la documentación de su compilador para obtener más información.

Biblioteca de Firebase C++ Dependencias de la biblioteca del SDK de Windows
Verificación de aplicaciones advapi32, ws2_32, crypt32
Autenticación advapi32, ws2_32, crypt32
Tienda de fuego en la nube advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32
Funciones de la nube advapi32, ws2_32, crypt32, rpcrt4, ole32
Almacenamiento en la nube advapi32, ws2_32, crypt32
Base de datos en tiempo real advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Configuración remota advapi32, ws2_32, crypt32, rpcrt4, ole32

bibliotecas macos

Para macOS (Darwin), se proporcionan versiones de biblioteca para la plataforma de 64 bits (x86_64). También se proporcionan marcos para su conveniencia.

Tenga en cuenta que las bibliotecas de macOS se han probado con Xcode 13.3.1.

Al crear aplicaciones de escritorio C++ en macOS, vincule lo siguiente a su proyecto:

  • biblioteca del sistema pthread
  • Marco del sistema CoreFoundation macOS
  • Marco Foundation del sistema macOS
  • Marco Security del sistema macOS
  • Marco del sistema GSS macOS
  • Marco del sistema Kerberos macOS
  • SystemConfiguration del sistema macOS

Consulte la documentación de su compilador para obtener más información.

bibliotecas de linux

Para Linux, se proporcionan versiones de la biblioteca para plataformas de 32 bits (i386) y 64 bits (x86_64).

Tenga en cuenta que las bibliotecas de Linux se probaron utilizando GCC 4.8.0, GCC 7.2.0 y Clang 5.0 en Ubuntu.

Al crear aplicaciones de escritorio C++ en Linux, vincule la biblioteca del sistema pthread a su proyecto. Consulte la documentación de su compilador para obtener más información. Si está compilando con GCC 5 o posterior, defina -D_GLIBCXX_USE_CXX11_ABI=0 .

Próximos pasos