Migra para usar las APIs de extensiones de Kotlin (KTX) en los módulos principales

Firebase está aumentando su compromiso con Kotlin, y estamos trabajando para modernizar nuestro ecosistema de Android para que Kotlin sea más accesible y fácil de usar con Firebase.

Para lograr esta modernización, haremos algunos cambios en nuestros SDK de Firebase para Android. En esta página, se describe información importante sobre este cambio, incluida la siguiente:


Más información para migrar tu app

¿Qué cambiará?

Se agregaron las APIs de extensiones de Kotlin (KTX) a sus respectivos módulos principales. Por ejemplo, todas las APIs de firebase-perf-ktx se agregaron a firebase-perf en el paquete com.google.firebase.perf.

Este cambio significa que los desarrolladores de Kotlin ahora pueden depender de los módulos principales en lugar de los módulos de KTX (cuando usen la Firebase BoM v32.5.0 o una versión posterior, o las versiones del módulo principal que se indican en la BoM v32.5.0 o una versión posterior).

Como parte de este cambio, las APIs de extensiones de Kotlin (KTX) en cada módulo de KTX ahora están obsoletas. A partir de septiembre de 2024, ya no lanzaremos módulos de KTX y, en esa fecha, también quitaremos las bibliotecas de KTX de la Firebase Android BoM.

¿Por qué haremos este cambio?

Firebase está comprometido con un ecosistema centrado en Kotlin para los desarrolladores de Android. Esta modernización del empaquetado proporciona las siguientes ventajas:

  • Administración de dependencias simplificada: Ahora solo necesitas depender de un solo módulo, lo que elimina la necesidad de cambiar entre el módulo principal y las extensiones de Kotlin, o de depender de ambos.

  • Compatibilidad mejorada con Kotlin: Ahora todos nuestros SDK de Firebase para Android brindarán una mejor compatibilidad con Kotlin. Incluiremos todas las funciones nuevas compatibles con Kotlin directamente en nuestros módulos principales.

Fechas importantes de este cambio

En octubre de 2023

Las APIs de extensiones de Kotlin (KTX) se agregaron a sus respectivos módulos principales, lo que significa que ahora puedes usar las APIs de KTX directamente desde los módulos principales cuando uses la Firebase BoM v32.5.0 o una versión posterior, o las versiones del módulo principal que se indican en la BoM v32.5.0 y versiones posteriores.

Al mismo tiempo, las APIs de extensión de Kotlin (KTX) en los módulos KTX dejaron de estar disponibles (consulta las notas de la versión en las que se describe este cambio). Durante la fase de baja, las APIs obsoletas en los módulos de KTX seguirán funcionando y se mantendrán.

A partir de septiembre de 2024

Dejaremos de lanzar versiones nuevas de los módulos de KTX y quitaremos esos módulos de la Firebase BoM.

Las versiones anteriores de un módulo de KTX o la BoM seguirán funcionando, pero pasarán al fin del mantenimiento. Esto significa que dejaremos de agregar correcciones de errores, cambios retrocompatibles y funciones nuevas a los módulos de KTX. En cambio, todo el desarrollo futuro de Firebase en Android se realizará en los módulos principales (tanto para Java como Kotlin).

Cómo realizar la migración para usar las APIs de KTX desde los módulos principales

Si usas las APIs de extensiones de Kotlin (KTX), realiza las siguientes actualizaciones en tu app para comenzar a usar las APIs desde los módulos principales en lugar de los módulos de KTX.

  1. Revisa tus dependencias de Gradle para que dependan del módulo principal en lugar del módulo de KTX. Por ejemplo, si usas la Firebase Android BoM (recomendado):

    BEFORE

    dependencies {
      // ...
    
      // Import the Firebase BoM
      implementation(platform("com.google.firebase:firebase-bom:33.6.0"))
    
      // Using KTX libraries for Authentication and Cloud Firestore
      implementation("com.google.firebase:firebase-auth-ktx")
      implementation("com.google.firebase:firebase-firestore-ktx")
    }

    AFTER

    dependencies {
      // ...
    
      // Import the Firebase BoM as usual
      // Make sure to use Firebase BoM v32.5.0 or higher
      implementation(platform("com.google.firebase:firebase-bom:33.6.0"))
    
      // No need to use the KTX libraries, everything is now in the main module
      implementation("com.google.firebase:firebase-auth")
      implementation("com.google.firebase:firebase-firestore")
    }


  2. Actualiza tu código para reemplazar todos los casos de APIs de KTX por las APIs reubicadas en el módulo principal en el paquete com.google.firebase.

    BEFORE

    import com.google.firebase.auth.ktx.auth
    import com.google.firebase.firestore.ktx.firestore
    import com.google.firebase.firestore.ktx.toObject
    import com.google.firebase.ktx.Firebase

    AFTER

    import com.google.firebase.auth.auth
    import com.google.firebase.firestore.firestore
    import com.google.firebase.firestore.toObject
    import com.google.firebase.Firebase