Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Agrega Firebase a tu proyecto de C++

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Potencia tus juegos de C++ con nuestros SDK de Firebase C++ que proporcionan una interfaz de C++ además de Firebase para iOS y Android.

Acceda a Firebase completamente desde su código C++, sin tener que escribir ningún código nativo de la plataforma. El SDK de Firebase también traduce muchas expresiones idiomáticas específicas que utiliza Firebase en 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 agregó Firebase a su proyecto de C++? Asegúrate de estar usando la versión más reciente 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úrate de que tu proyecto cumpla con estos requisitos:

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

    • Los emuladores deben usar 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++. Visite Comprender los proyectos de Firebase para obtener más información sobre los proyectos de Firebase.

Paso 3 : Registre su aplicación con 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. Ve 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 Google Services. Verifique que también tenga 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.3.14'  // Google Services plugin
            implementation 'com.google.android.gms:18.1.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 Google Services:

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
        android {
          // ...
        }
      
  4. Ha terminado con las tareas de configuración en la consola de Firebase. Continúe con Agregar SDK de Firebase C++ a continuación.

Paso 5 : Agregar SDK de Firebase C++

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

  1. Descarga el SDK de Firebase C++ y luego descomprímelo 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. A su archivo Gradle de módulo (nivel de aplicación) (generalmente app/build.gradle ), agregue el siguiente contenido.
    Incluya las dependencias de la biblioteca para los productos de Firebase que desea usar en su 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.
    Incluya las bibliotecas de los productos de Firebase que desea usar en su 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 agregó Analytics, ejecute su aplicación para enviar una verificación a Firebase de que integró Firebase correctamente. De lo contrario, puede omitir el paso de verificación.

    Los registros de su dispositivo mostrarán la verificación de Firebase de que se completó la inicialización. Si ejecutó su aplicación en un emulador que tiene acceso a la red, la consola Firebase le notifica que la conexión de su 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 SDK de código abierto en GitHub .

Bibliotecas disponibles para Android (usando CMake)

Tenga en cuenta que las bibliotecas de C++ para iOS se enumeran en la versión de 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
Autenticación auth firebase_auth
(obligatorio) firebase_app
Tienda de fuego en la nube firestore firebase_firestore
(obligatorio) firebase_auth
(obligatorio) firebase_app
Funciones en 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

Obtener informes de fallos del NDK

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

Sistemas de construcción personalizados

Firebase proporciona la secuencia de comandos generate_xml_from_google_services_json.py para convertir google-services.json en recursos .xml que puede incluir en su proyecto. Esta secuencia de comandos aplica la misma transformación que realiza el complemento de Gradle de los servicios de Google Play al compilar 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 Android String Resources .

ProGuard

Muchos sistemas de compilación de Android usan 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 usa Google Analytics, su 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 los 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 debe actualizarse, reactivarse, corregir los permisos, etc.). La biblioteca de Firebase no se puede usar hasta que se corrija la situación en el dispositivo cliente.

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

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

Biblioteca Firebase C++ ¿Se requieren los servicios de Google Play en el dispositivo del cliente?
AdMob No requerido (normalmente)
Analítica No requerido
Autenticación Requerido
Tienda de fuego en la nube Requerido
Funciones en 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 Google Mobile Ads para Android pueden funcionar correctamente sin los servicios de Google Play en el dispositivo cliente. Sin embargo, si usa 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á utilizando com.google.android.gms:play-services-ads-lite .

Configurar un flujo de trabajo de escritorio ( beta )

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

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

    1. Configure su proyecto de 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 plataformas móviles
  2. Cree una versión de escritorio del archivo de configuración de Firebase:

    • Si agregó el archivo google-services.json Android : cuando ejecuta su aplicación, Firebase ubica este archivo móvil y luego genera automáticamente un archivo de configuración de Firebase para 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 para 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 de C++ que ingresaste en el flujo de trabajo de configuración de la consola de Firebase. 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 de Firebase compatible a su proyecto de C++. En este ejemplo, explicamos cómo agregar Firebase Authentication y Firebase Realtime Database.

    1. Establezca 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 soporte de flujo de trabajo de escritorio para un subconjunto de características, lo que permite que ciertas partes de Firebase se usen en compilaciones de escritorio independientes en Windows, macOS y Linux.

producto base de fuego Referencias de biblioteca (usando CMake)
Autenticación firebase_auth
(obligatorio) firebase_app
Tienda de fuego en la nube firebase_firestore
firebase_auth
firebase_app
Funciones en 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 necesita compilar código de forma condicional 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 de escritorio

Bibliotecas de Windows

Para Windows, las versiones de la biblioteca se proporcionan en función de lo siguiente:

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

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

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

Biblioteca Firebase C++ Dependencias de la biblioteca SDK de Windows
Autenticación advapi32, ws2_32, crypt32
Tienda de fuego en la nube advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32
Funciones en 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 comodidad.

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 del sistema macOS de Foundation
  • Marco del sistema macOS Security
  • Marco del sistema GSS macOS
  • Marco del sistema Kerberos macOS
  • SystemConfiguration del sistema marco 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 biblioteca para plataformas de 32 bits (i386) y 64 bits (x86_64).

Tenga en cuenta que las bibliotecas de Linux se probaron con 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