El complemento Gradle ‘kotlin-android-extensions’ está obsoleto

5 minutos de lectura

con Gradle versión 6.2 y Android studio versión 4.0.1, tengo el mensaje de desaprobación para el Kotlin-android-extention. cualquier cuerpo tiene alguna idea de cómo solucionarlo.

  • Hola Ali Kotlin-android-extension ha quedado en desuso, deberías considerar usar view binding, checkout blog para una explicación detallada y anti-patrones al respecto encuadernación

    – Chetan Gupta

    24 de diciembre de 2020 a las 11:35

  • Hola @ChetanGupta, gracias por tu comentario. si tienes razón Simplemente me gustó la respuesta y está funcionando bien para mí.

    – Ali Shatergholi

    25 de diciembre de 2020 a las 13:52

  • sigue este documento – developer.android.com/topic/libraries/view-binding/migration

    – Ranjithkumar

    3 abr a las 22:10

Está en desuso Base en el documento de google

Kotlin Android Extensions está en desuso, lo que significa que ya no se admite el uso de elementos sintéticos de Kotlin para vincular vistas.

para aquellos que se preguntan qué synthetic es. Debería decir una forma simple de acceder a la identificación de la vista de la interfaz de usuario con kotlin, que fue posible agregando 'kotlin-android-extensions' en Gradle.

  • Si su aplicación usa Parcelable, puede usar 'kotlin-parcelize' en vez de 'kotlin-android-extensions'.
  • Si su aplicación usa materiales sintéticos de Kotlin para vincular vistas, use esta guía para migrar a Jetpack Ver Encuadernación o El enlace de datos.

  • ¿Sabe si hay alguna fecha límite en la que sea absolutamente necesario reemplazar los sintéticos en su código?

    – natansalda

    23 de agosto de 2021 a las 10:32

  • @natansalda no encontré ningún día específico para eso. se basa principalmente en su versión de estudio de Android.

    – Ali Shatergholi

    24 de agosto de 2021 a las 6:49


  • Para mí: desde abril de 2022, esta extensión ha dejado de funcionar.

    – IRREAL

    17 de mayo a las 10:47

avatar de usuario
Amir raza

Está en desuso ahora

  • Remover 'Kotlin-android-extention' del complemento. (Usado para la forma sintética de kotlin de acceder a los elementos de la interfaz de usuario)

  • Agregue a continuación para usar view binding forma de acceder al elemento de la interfaz de usuario

    android {
       ...
       buildFeatures {
           viewBinding true
       }
    }
    
  • Si su aplicación contiene Parcelablepor favor añadir 'kotlin-parcelize' en el complemento para usar una forma simple de crear parcelables simplemente agregando @Parcelize anotación a clase

Puedes ver el directriz de Google con respecto a esta actualización.

avatar de usuario
friki tanmoy

Como “kotlin-android-extensions” está en desuso, ahora es mejor usar el enlace de vista.

Para esto, primero habilite el enlace de visualización en el archivo build.gradle escribiendo esta línea de códigos en el bloque de Android.

buildFeatures {
    viewBinding true
} 

luego en el archivo de actividad para usar las funciones de enlace de vista

primero declare una variable global para enlazar como

private lateinit var binding:ActivityMainBinding

Aquí ActivityMainBinding es una clase generada automáticamente

luego escribe estos códigos en el método OnCreate()

binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

En mi opinión, usar este complemento es aún mejor que los métodos introducidos, solo debemos prestar atención a las ID. Porque con el complemento Android Kotlin Extensions Gradle lanzado en 2017 llegó Kotlin Synthetics. Para cada archivo de diseño, Kotlin Synthetics crea una clase generada automáticamente que contiene su vista, tan simple como eso. Solo tiene que importar este complemento en su archivo Gradle, y ya está todo listo para consultar directamente las variables de referencia de la vista. Llama a findViewById internamente solo una vez y luego lo almacena en caché. Esto fue tan conveniente y tan divertido de usar, entonces, ¿por qué está en desuso? Analicémoslo. Pros Sin código repetitivo: solo configúrelo una vez en su archivo Gradle y estará listo para comenzar. Kotlin Synthetics generará automáticamente una clase lista para que la uses. Seguridad de tipo: todas las vistas se seleccionan de su archivo de diseño con el tipo conocido. Contras Seguridad nula parcial: generalmente es nula segura ya que todas sus vistas deben estar presentes en el archivo de diseño para que se genere. Pero, ¿qué sucede si tiene varios archivos de diseño basados ​​en configuraciones donde algunas vistas están presentes en algunos archivos de diseño y faltan en algunos? Aquí debe verificar manualmente si hay nulo. Contamina el espacio de nombres: puede tener el mismo ID de vista en diferentes diseños, y puede importar accidentalmente una vista de algún otro diseño, que luego en el tiempo de ejecución generará NullPointerException. Solo Kotlin: Kotlin Synthetics solo se puede usar con Kotlin. No son compatibles con Java. Todavía hay proyectos que están escritos en Java y es posible que aún no se hayan migrado completamente a Kotlin y, por lo tanto, es posible que Kotlin Synthetics no sea una forma consistente de obtener ViewIds en su proyecto. Debido a estos problemas, Kotlin Synthetics ahora está obsoleto.

Ahora depende de usted decidir si aún desea usar este complemento como yo si desea corregir la advertencia obsoleta, debe evitar usar el método obsoleto.😊

Las respuestas anteriores son correctas, pero cuando elimine ‘kotlin-android-extensions’ de su proyecto, no será posible acceder a las propiedades de vista usando la forma sintética de kotlin, por lo que debe migrar para usar el enlace de vista, siga esta guía de Google para migrar para ver el enlace: Enlace

Google proporciona una nueva forma de enlace de vista en lugar de ‘kotlin-android-extensions’. Agregar los siguientes complementos en build.gradle del módulo de la aplicación.

    android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Como ya se indicó, Kotlin Synthetics está obsoleto y debe reemplazarse por View Binding. En mi caso, quería introducir View Binding y migrar gradualmente de Kotlin Synthetics. Es posible tener ambos en un proyecto, solo debe recordar no actualizar la versión de Kotlin: tuve un error de compilación con 4.1.21por lo que necesitaba bajar de categoría a 1.4.10.

Recuerde también eliminar las importaciones de Kotlin Synthetics de una clase (generalmente actividad/fragmento), que se migró a través de View Binding.

¿Ha sido útil esta solución?