Agrega Firebase a tu proyecto de C++

Usa nuestros SDK de Firebase C++ que ofrecen una interfaz de este lenguaje en SDK de Firebase para potenciar tus juegos de C++.

Accede a Firebase de forma íntegra por medio de tu código de C++ sin la necesidad de escribir código nativo de la plataforma. Además, el SDK de Firebase toma varias expresiones específicas del lenguaje de Firebase y las traduce a una interfaz más familiar para los desarrolladores de C++.

Obtén más información para mejorar tus juegos con Firebase en nuestra página de juegos de Firebase.

¿Ya agregaste Firebase a tu proyecto de C++? Asegúrate de usar la versión más reciente del SDK de Firebase C++.


Requisitos previos

  • Instala tu editor o IDE preferido, como Android Studio, IntelliJ o VS Code.

  • Obtén el SDK de Android.

  • Asegúrate de que tu proyecto cumpla con estos requisitos:

    • Se segmenta al nivel de API 21 (Lollipop) o una versión posterior.

    • Utiliza Gradle y se configuró con CMake.

  • Configura un dispositivo físico o usa un emulador para ejecutar tu app.

    • Los emuladores deben usar una imagen de emulador que incluya Google Play.

    • Algunas bibliotecas de C++ requieren que el dispositivo cliente tenga los Servicios de Google Play. Revisa la lista que aparece en esta página.

  • Accede a Firebase con tu Cuenta de Google.

Paso 2: Crea un proyecto de Firebase

Antes de que puedas agregar Firebase a tu proyecto de C++, tendrás que crear un proyecto de Firebase para conectarlo con el de C++. Consulta la Información sobre los proyectos de Firebase para obtener más detalles sobre el tema.

Paso 3: Registra tu app con Firebase

Si quieres usar Firebase en tu app para Android, debes registrar la app con el proyecto de Firebase. El registro de tu app a menudo se conoce como “agregar” la app a tu proyecto.

  1. Ve a Firebase console.

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

  3. Ingresa el nombre del paquete de tu app en el campo Nombre del paquete de Android.

  4. Ingresa otra información de la app, como el sobrenombre y el certificado de firma SHA-1 de depuración (opcional).

  5. Haz clic en Registrar app.

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

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

  2. Abre tu proyecto de C++ en un IDE y agrega el archivo de configuración al proyecto:

  3. Solo para compilaciones de Gradle: Para habilitar los servicios de Firebase en tu proyecto de C++, agrega el complemento google‑services al archivo build.gradle de nivel superior.

    1. Agrega reglas para incluir el complemento de Gradle de los servicios de Google. Además, revisa que tengas 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.2'  // Google Services plugin
            implementation 'com.google.android.gms:18.5.0'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. Aplica el complemento de Gradle de los servicios de Google:

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
        android {
          // ...
        }
      
  4. Completaste las tareas de configuración en Firebase console. Sigue con el paso Agrega los SDK de Firebase C++ que se muestra a continuación.

Paso 5: Agrega los SDK de Firebase C++

Los pasos que se indican en esta sección son un ejemplo de cómo agregar productos de Firebase admitidos a tu proyecto de Firebase C++.

  1. Descarga el SDK de Firebase C++ y descomprímelo en la ubicación que prefieras.

    El SDK de Firebase C++ no es específico de una plataforma, pero sí contiene bibliotecas que sí lo son.

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

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
    
  3. Agrega el siguiente contenido al archivo settings.gradle de tu proyecto:

    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. Agrega el siguiente contenido en el archivo Gradle (generalmente app/build.gradle) de tu módulo (a nivel de app):
    Incluye las dependencias de bibliotecas para los productos de Firebase que quieres usar en tu app.

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

    Analytics 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. Agrega el siguiente contenido al archivo CMakeLists.txt de tu proyecto.
    Incluye las bibliotecas de los productos de Firebase que quieres usar en tu app.

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

    Analytics 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. Sincroniza tu app para garantizar que todas las dependencias tengan las versiones necesarias.

  7. Si agregaste Analytics, ejecuta tu app para enviar la verificación a Firebase de que lo integraste correctamente. De lo contrario, puedes omitir el paso de verificación.

    En los registros de tu dispositivo, se mostrará la verificación de Firebase cuando se complete la inicialización. Si ejecutas tu app en un emulador que tiene acceso a redes, Firebase console notificará que se completó la conexión de tu app.

Listo. Tu app de C++ está registrada y configurada para usar servicios de Firebase.

Bibliotecas disponibles

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

Bibliotecas disponibles para Android (con CMake)

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

Producto de Firebase 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
Analytics analytics firebase_analytics
(obligatorio) firebase_app
App Check appCheck firebase_app_check
(obligatorio) firebase_app
Authentication auth firebase_auth
(obligatorio) firebase_app
Cloud Firestore firestore firebase_firestore
(obligatorio) firebase_auth
(obligatorio) firebase_app
Cloud Functions functions firebase_functions
(obligatorio) firebase_app
Cloud Messaging messaging firebase_messaging
(recomendado) firebase_analytics
(obligatorio) firebase_app
Cloud Storage storage firebase_storage
(obligatorio) firebase_app
Dynamic Links dynamicLinks firebase_dynamic_links
(recomendado) firebase_analytics
(obligatorio) firebase_app
Realtime Database database firebase_database
(obligatorio) firebase_app
Remote Config remoteConfig firebase_remote_config
(recomendado) firebase_analytics
(obligatorio) firebase_app

Información adicional sobre la configuración para dispositivos móviles

Obtén informes de fallas del NDK

Firebase Crashlytics admite informes de fallas para apps que utilizan bibliotecas nativas de Android. Para tener más información, consulta Obtén informes de fallas del NDK de Android.

Sistemas de compilación personalizada

Firebase proporciona la secuencia de comandos generate_xml_from_google_services_json.py para convertir google-services.json en recursos .xml que puedes incluir en tu proyecto. Esta secuencia de comandos aplica la misma transformación que realiza el complemento de Servicios de Google Play para Gradle cuando se compilan aplicaciones de Android.

Si no compilas con Gradle (por ejemplo, usas ndk‑build, makefiles, Visual Studio, etc.), puedes usar esta secuencia de comandos para automatizar la generación de recursos de cadenas de Android.

ProGuard

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

Si usas ProGuard, deberás agregar los archivos en libs/android/*.pro según las bibliotecas de Firebase C++ que uses en la 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 los Servicios de Google Play

La mayoría de las bibliotecas de Firebase C++ requieren que los dispositivos Android de los clientes cuenten con los Servicios de Google Play. Si una biblioteca de Firebase C++ muestra kInitResultFailedMissingDependency en la inicialización, significa que los Servicios de Google Play no están disponibles en el dispositivo cliente (esto quiere decir que se debe actualizar, volver a activar o que se deben corregir los permisos, entre otros). No se podrá usar la biblioteca de Firebase hasta que se corrija la situación en el dispositivo cliente.

Puedes averiguar por qué los Servicios de Google Play no están disponibles en el dispositivo cliente (y tratar de corregir la situación) con las funciones de google_play_services/availability.h.

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

Biblioteca de Firebase C++ ¿Los Servicios de Google Play son obligatorios en el dispositivo cliente?
AdMob No es obligatorio (generalmente)
Analytics No obligatorio
Authentication Obligatorio
Cloud Firestore Obligatorio
Cloud Functions Obligatorio
Cloud Messaging Obligatorio
Cloud Storage Obligatorio
Dynamic Links Obligatorio
Realtime Database Obligatorio
Remote Config Obligatorio

AdMob y Servicios de 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 usas la dependencia com.google.android.gms:play-services-ads-lite, en lugar de la dependencia com.google.firebase:firebase-ads estándar antes mencionada, los Servicios de Google Play sí son necesarios.

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

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

Configura un flujo de trabajo para computadoras (versión beta)

Cuando creas un juego, suele ser más fácil probarlo en plataformas de computadoras de escritorio antes de implementarlo y probarlo en dispositivos móviles en una etapa posterior del desarrollo. Para admitir este flujo de trabajo, proporcionamos un subconjunto del SDK de Firebase C++ que se puede ejecutar en Windows, macOS, Linux y desde dentro del editor de C++.

  1. Debes completar los siguientes pasos para los flujos de trabajo en computadoras de escritorio:

    1. Configura tu proyecto de C++ para CMake.
    2. Crea un proyecto de Firebase.
    3. Registra tu app (para iOS o Android) con Firebase.
    4. Agrega un archivo de configuración de Firebase de plataformas para dispositivos móviles.
  2. Crea una versión para computadoras de escritorio del archivo de configuración de Firebase:

    • Si agregaste el archivo google-services.json de Android: Cuando ejecutas tu app, Firebase localiza este archivo para dispositivos móviles y genera automáticamente un archivo de configuración de Firebase para computadoras de escritorio (google-services-desktop.json).

    • Si agregaste el archivo GoogleService-Info.plist de iOS: Antes de ejecutar la app, debes convertir este archivo para dispositivos móviles en un archivo de configuración de Firebase para computadoras de escritorio. Para convertir el archivo, ejecuta el siguiente comando desde el mismo directorio que el archivo GoogleService-Info.plist:

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

    Este archivo de configuración para computadoras contiene el ID del proyecto de C++ que ingresaste en el flujo de trabajo de configuración de Firebase console. Consulta la Información sobre los proyectos de Firebase para obtener detalles acerca de los archivos de configuración.

  3. Agrega los SDK de Firebase al proyecto de C++.

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

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

    2. Agrega el siguiente contenido al archivo CMakeLists.txt de tu proyecto, incluidas las bibliotecas de los productos de Firebase que deseas 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. Ejecuta la app de C++.

Bibliotecas disponibles (para computadoras de escritorio)

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

Producto de Firebase Referencias de la biblioteca (con CMake)
App Check firebase_app_check
(obligatorio) firebase_app
Authentication firebase_auth
(obligatorio) firebase_app
Cloud Firestore firebase_firestore
firebase_auth
firebase_app
Cloud Functions firebase_functions
(obligatorio) firebase_app
Cloud Storage firebase_storage
(obligatorio) firebase_app
Realtime Database firebase_database
(obligatorio) firebase_app
Remote Config firebase_remote_config
(obligatorio) firebase_app

Las bibliotecas de escritorio restantes son implementaciones auxiliares (no funcionales) que Firebase proporciona para realizar compilaciones para Windows, macOS y Linux. Por lo tanto, no es necesario que compiles código de manera condicional orientado a la versión para computadoras de escritorio.

Computadoras para Realtime Database

El SDK de Realtime Database para computadoras de escritorio usa REST para acceder a tu base de datos, por lo que debes declarar los índices que usas con Query::OrderByChild() en computadoras. De lo contrario, los objetos de escucha no funcionarán.

Información adicional para la configuración en computadoras de escritorio

Bibliotecas de Windows

En Windows, las versiones de las bibliotecas se proporcionan en función de los siguientes aspectos:

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

Ten en cuenta que las bibliotecas que se indican a continuación se probaron con Visual Studio 2015 y 2017.

Cuando compiles apps para computadoras de escritorio de C++ en Windows, vincula las siguientes bibliotecas de los SDK de Windows con tu proyecto. Consulta la documentación del compilador para obtener más información.

Biblioteca de Firebase C++ Dependencias de la biblioteca de SDK de Windows
App Check advapi32, ws2_32, crypt32
Authentication advapi32, ws2_32, crypt32
Cloud Firestore advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32
Cloud Functions advapi32, ws2_32, crypt32, rpcrt4, ole32
Cloud Storage advapi32, ws2_32, crypt32
Realtime Database advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Remote Config advapi32, ws2_32, crypt32, rpcrt4, ole32

Bibliotecas de macOS

En macOS (Darwin), se proporcionan las versiones de biblioteca para la plataforma de 64 bits (x86_64). También se proporcionan los frameworks para facilitar tu trabajo.

Ten en cuenta que las bibliotecas de macOS se probaron con Xcode 13.3.1.

Cuando compiles apps de escritorio de C++ en macOS, vincula los siguientes elementos a tu proyecto:

  • Biblioteca del sistema pthread
  • Framework del sistema de macOS de CoreFoundation
  • Framework del sistema de macOS de Foundation
  • Framework del sistema de macOS de Security
  • Framework del sistema de macOS de GSS
  • Framework del sistema de macOS de Kerberos
  • Framework del sistema de macOS de SystemConfiguration

Consulta la documentación del compilador para obtener más información.

Bibliotecas de Linux

En el caso de Linux, se proporcionan las versiones de biblioteca para las plataformas de 32 bits (i386) y 64 bits (x86_64).

Recuerda que las bibliotecas de Linux se probaron con GCC 4.8.0, GCC 7.2.0 y Clang 5.0 en Ubuntu.

Cuando compiles apps de escritorio de C++ en Linux, vincula la biblioteca del sistema pthread con tu proyecto. Consulta la documentación del compilador para obtener más información. Define -D_GLIBCXX_USE_CXX11_ABI=0 para compilar con GCC 5 o una versión más reciente.

Próximos pasos