Migración a Kotlin incorporado para autores de complementos
Migrar complementos de Flutter para usar Kotlin incorporado.
Esta guía describe los pasos de migración específicamente para autores de complementos.
Actualizar el archivo Gradle
#Los siguientes pasos asumen que puedes actualizar el SDK de Flutter mínimo de tu complemento a la versión 3.44. Si no puedes actualizar el SDK de Flutter mínimo a la 3.44, sigue las instrucciones para soportar versiones de Flutter anteriores a la 3.44.
Primero, busca el complemento kotlin-android
(o el complemento org.jetbrains.kotlin.android).
Es probable que se encuentre en el bloque plugins del archivo
<plugin-project>/build.gradle o el archivo <plugin-project>/build.gradle.kts.
Si utilizas la sintaxis apply heredada,
se ubicará en el archivo <plugin-project>/build.gradle basado en Groovy,
ya que esta sintaxis no es compatible con el DSL de Kotlin.
Los siguientes ejemplos demuestran cómo migrar un complemento de Flutter:
Before:
plugins {
id("com.android.library")
id("kotlin-android")
// ...
}
android {
// ...
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
// ...
}
// ...
A continuación, elimina el complemento kotlin-android y el bloque kotlinOptions:
plugins {
id("com.android.library")
id("kotlin-android")
// ...
}
android {
// ...
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
// ...
}
Añade el bloque DSL kotlin.compilerOptions{} con lo siguiente:
kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}
Así es como probablemente quedará el archivo:
After:
plugins {
id("com.android.library")
// ...
}
android {
// ...
}
kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}
// ...
Before:
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
// ...
android {
// ...
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
// ...
}
// ...
A continuación, elimina el complemento kotlin-android y el bloque kotlinOptions:
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
...
android {
// ...
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
// ...
}
Añade el bloque DSL kotlin.compilerOptions{} con lo siguiente:
kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}
Así es como probablemente quedará el archivo:
After:
apply plugin: 'com.android.library'
// ...
android {
// ...
}
kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}
// ...
Actualizar el archivo pubspec.yaml del complemento
#
El uso del bloque DSL kotlin.compilerOptions {} requiere
una versión mínima de Kotlin Gradle Plugin (KGP) de 2.0.0.
A partir de Flutter 3.44, la versión mínima requerida de KGP es 2.0.0.
Para garantizar que las aplicaciones que usan tu complemento puedan migrar de manera segura a Kotlin incorporado,
debes requerir una versión mínima de Flutter de 3.44 para esta versión del complemento.
Dado que estás actualizando la versión mínima de Flutter, también debes actualizar la versión mínima de Dart asociada.
Actualiza la versión mínima de Flutter y la versión mínima de Dart:
...
environment:
sdk: ^<previous-dart-minimum>
sdk: ^3.12.0
flutter: ">=<previous-flutter-minimum>"
flutter: ">=3.44.0"
...
Así es como probablemente quedará el archivo:
# ...
environment:
sdk: ^3.12.0
flutter: ">=3.44.0"
# ...
Soportar versiones de Flutter anteriores a la 3.44
#Si actualizaste el SDK de Flutter mínimo de tu complemento a la versión 3.44,
omite esta sección y procede a
actualizar el CHANGELOG.md del complemento.
Si no puedes actualizar el SDK de Flutter mínimo de tu complemento a la versión 3.44, debes
realizar los siguientes cambios en <plugin-project>/android/build.gradle
o
<plugin-project>/android/build.gradle.kts para
admitir aplicaciones en versiones de AGP inferiores a la 9 y versiones 9 o posteriores.
Before:
plugins {
id("com.android.library")
id("kotlin-android")
// ...
}
android {
// ...
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
// ...
}
// ...
A continuación, elimina el complemento kotlin-android y el bloque kotlinOptions:
plugins {
id("com.android.library")
id("kotlin-android")
// ...
}
android {
// ...
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
// ...
}
Añade una comprobación para aplicar el Kotlin Gradle Plugin únicamente cuando la versión del Android Gradle Plugin de la aplicación sea inferior a la versión 9.
val agpMajor = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.substringBefore('.').toInt()
if (agpMajor < 9) {
apply(plugin = "org.jetbrains.kotlin.android")
}
Añade la configuración de compilerOptions utilizando la extensión del proyecto:
project.extensions.configure(org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension::class.java) {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}
Así es como probablemente quedará el archivo:
After:
plugins {
id("com.android.library")
// ...
}
val agpMajor = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.substringBefore('.').toInt()
if (agpMajor < 9) {
apply(plugin = "org.jetbrains.kotlin.android")
}
android {
// ...
}
project.extensions.configure(org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension::class.java) {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}
// ...
Before:
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
android {
// ...
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
// ...
}
// ...
A continuación, elimina el complemento kotlin-android y el bloque kotlinOptions:
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
android {
// ...
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
// ...
}
Añade una comprobación para aplicar el Kotlin Gradle Plugin únicamente cuando la versión del Android Gradle Plugin de la aplicación sea inferior a la versión 9.
def agpMajor = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0] as int
if (agpMajor < 9) {
apply plugin: 'kotlin-android'
}
Añade el bloque DSL kotlin.compilerOptions{} con lo siguiente:
kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}
Así es como probablemente quedará el archivo:
After:
apply plugin: 'com.android.library'
def agpMajor = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0] as int
if (agpMajor < 9) {
apply plugin: 'kotlin-android'
}
android {
// ...
}
kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}
// ...
Actualizar el historial de cambios (changelog) del complemento
#Incluye tus cambios en el archivo CHANGELOG.md de
la versión del complemento recién lanzada:
## <new-plugin-release-version>
- Updates the minimum supported SDK version to Flutter 3.44/Dart 3.12.
- Migrates to built-in Kotlin.
...
Validar
#Ejecuta flutter run o flutter build apk para
confirmar que la aplicación de ejemplo de tu complemento se compila y se inicia
en un dispositivo Android o emulador conectado.
Si la aplicación de ejemplo de tu complemento también aplica KGP, entonces también tendrás que migrar la aplicación de ejemplo. Para migrar tu aplicación de ejemplo, sigue la guía de migración para desarrolladores de aplicaciones.
A menos que se indique lo contrario, la documentación en este sitio refleja Flutter 3.44.0. Página actualizada por última vez el 2026-07-08. Ver código fuente oreportar un problema.