Migrar a Kotlin 2.0 un proyecto Android o Multiplatform [Paso a Paso]

A
Antonio Leiva
2 min lectura
Play

Para migrar un proyecto Android a Kotlin 2.0, necesitamos hacer las siguientes modificaciones:

1. Actualizar la versión de Kotlin en el catálogo de versiones

En libs.versions.toml, cambiar la versión de Kotlin:

[versions]    
kotlin = "2.0.0"

2. Añadir la carpeta .kotlin a .gitignore

Ahora hay una nueva carpeta donde se añaden ficheros necesarios para el funcionamiento del compilador K2. Se llama .kotlin. y se crea en el nivel raíz del proyecto.

Para que esos ficheros no se suban al repositorio, hay que añadirlo al .gitignore:

/.kotlin

2. Configurar el nuevo compilador de Compose

Desde la versión 2.0 de Kotlin, el compilador de Jetpack Compose está incluido como un plugin más del propio Kotlin.

De esta forma, no tenemos que preocuparnos por mantener la versión del compilador alineada con la de Kotlin.

A cambio, tenemos que añadir explícitamente el uso de este plugin.

En libs.versions.toml:

[plugins]
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }

En el build.gradle del proyecto:

plugins {  
    ...
    alias(libs.plugins.compose.compiler) apply false  
}

Y en el build.gradle de cada módulo que lo necesite:

plugins {  
    ...
    alias(libs.plugins.compose.compiler)  
}

Esto implica eliminar el bloque de composeOptions:

composeOptions {  
    kotlinCompilerExtensionVersion = "1.5.11"  
}

El nuevo compilador además tiene un DSL de configuración más sencillo. De esta forma, no es necesario añadir argumentos de compilación como hacíamos antes para temas como el strongSkippingMode, o los informes de los que hablábamos en [[Domina las recomposiciones en Jetpack Compose]]:

composeCompiler {  
    enableStrongSkippingMode = true  
}

3. Actualizar el plugin de KSP

Si lo estás usando en tu proyecto, necesitas actualizar para la nueva versión de Kotlin:

[versions]
ksp = "2.0.0-1.0.21"

[plugins]
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }