Kotlin 1.4.20: Plugin Parcelize y adiós a Kotlin Android Extensions
Antonio Leiva

Kotlin 1.4.20 ya está aquí (y si no lo tienes te llegará la actualización en breve), y tiene un cambio bastante disruptivo que afecta al desarrollo Android: las Kotlin Android Extensions están deprecadas.

Debemos empezar a plantearnos cómo migrar a las nuevas soluciones propuestas, porque es probable que en futuras versiones de Kotlin lo terminen eliminando.

¿Qué eran las Kotlin Android Extensions?

Las Kotlin Android Extensions nacieron como una solución al acceso a las vistas de los XMLs en Android aprovechando las características del lenguaje.

Durante mucho tiempo han sido una solución interesante porque son la forma más sencilla de acceder a las vistas: simplemente utilizando el id del XML, podías acceder a la vista en la clase Kotlin.

Pero esto tenía varias desventajas de las que ya he hablado en el vídeo sobre View Binding. Así que después de mucho tiempo sin ser actualizadas, finalmente han decidido deprecarlas

¿Y qué tenemos que usar ahora en su lugar?

Cuando compilamos con Kotlin 1.4.20 utilizando Kotlin Android Extensions, veremos este error:

The ‘kotlin-android-extensions’ Gradle plugin is deprecated. Please use this migration guide (https://goo.gle/kotlin-android-extensions-deprecation) to start working with View Binding (https://developer.android.com/topic/libraries/view-binding) and the ‘kotlin-parcelize’ plugin.

La realidad es que, en el momento de escribir este artículo, el primer enlace lleva al segundo, así que aún no existe ninguna guía de migración.

Ya creé un vídeo sobre cómo migrar a View Binding previendo lo que iba a pasar hace un tiempo.

Así que esta parte la tienes cubierta, pero hay otra importante que debes saber…

¿Qué pasa con Parcelize?

Parcelize era una función muy útil de las Kotlin Android Extensions que nos permitía implementar Parcelable de forma muy sencilla.

Tan solo necesitas anotar la clase con la anotación @Parcelize y el resto funciona solo:

@Parcelize
data class Movie(...) : Parcelable

Esto por suerte no desaparece, sino que se ha movido a un plugin aparte. Para migrar, tienes que seguir los siguientes pasos:

Sustituye el plugin por kotlin-parcelize

Necesitas sustituir kotlin-android-extensions por kotlin-parcelize:

plugins {
    ...
    id 'kotlin-parcelize'
}

Sustituye el import de Parcelize

El import usado para la anotación cambia, y también hay que sustituirlo

En vez de usar:

import kotlinx.android.parcel.Parcelize

Usaremos:

import kotlinx.parcelize.Parcelize

Compila, y verás que ya todo funciona correctamente y sin warnings.

El método recomendado es View Binding

Como hemos hablado, y hasta que Jetpack Compose se imponga definitivamente, la forma recomendada para recuperar las vistas en Android desde un XML a día de hoy es ViewBinding.

Así que si no lo has hecho todavía te recomiendo que le eches un ojo al vídeo sobre cómo empezar a usar View Binding.

Quizá también te interese…

Kotlin 1.5.0 : Las 5 novedades que puedes empezar a usar hoy

Kotlin 1.5.0 : Las 5 novedades que puedes empezar a usar hoy

Kotlin 1.5.0 ya está aquí, y como siempre trae una serie de novedades que te van a interesar muchísimo. Cabe destacar que a partir de ahora, de acuerdo las nuevas versiones de Kotlin se lanzarán cada 6 meses, independientemente de las nuevas funcionalidades que...

¿Qué es Kotlin y para qué sirve?

¿Qué es Kotlin y para qué sirve?

Kotlin es un lenguaje de programación de código abierto creado por JetBrains que se ha popularizado gracias a que se puede utilizar para programar aplicaciones Android. Pero si has llegado hasta aquí pensando que Kotlin solo se puede usar en Android, lo que te voy a...

2 formas de recolectar Flows en la UI que SÍ funcionan

2 formas de recolectar Flows en la UI que SÍ funcionan

En la serie de artículos sobre Programación Reactiva con Flow hemos visto muchos conceptos, y hemos aprendido cómo aplicarlos al desarrollo Android. Pero hay algo que no hemos hecho del todo bien. Esto es la recolección de Flows desde la Activity (o el Fragment, en...

0 comentarios

Enviar un comentario

Los datos personales que proporciones a través de este formulario quedarán registrados en un fichero de Antonio Leiva Gordillo, con el fin de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento de la parte interesada. Si no se acepta, no podrás comentar en este blog. Los datos que proporciona solo se utilizan para evitar el correo no deseado y no se usarán para nada más. Puede ejercer los derechos de acceso, rectificación, cancelación y oposición en contacto@devexperto.com.

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Acepto la política de privacidad *