Cómo agregar Kotlin multiplataforma a un proyecto existente

Para crear un módulo multiplataforma de Kotlin (KMP) en tu proyecto de Android, usa la plantilla Kotlin Multiplatform Shared Module, disponible en Android Studio Meerkat y el complemento de Android para Gradle versión 8.8.0 y versiones posteriores.

La plantilla del módulo automatiza la creación de un módulo nuevo con la configuración mínima para las plataformas de Android y iOS.

Configura el módulo KMP compartido

Para crear un módulo KMP compartido, sigue estos pasos:

  1. Selecciona File > New > New Module.
  2. Selecciona la plantilla Kotlin Multiplatform Shared Module en el panel Templates:
Cómo crear un nuevo módulo KMP
Figura 1: Cómo crear un nuevo módulo KMP

Los campos de la plantilla son los siguientes:

  • Module name: Define el nombre del módulo de Gradle, así como el nombre del framework de iOS (se puede cambiar más adelante).
  • Nombre del paquete: Define el nombre del paquete para los archivos de este módulo.
    1. Haz clic en Finish y permite que Gradle se sincronice con el proyecto. Es posible que también se te solicite agregar los archivos de módulo creados recientemente al control de código fuente.

Una vez que se complete, la vista de proyecto de Android Studio mostrará el nuevo módulo compartido junto con un conjunto de orígenes para cada plataforma.

Vista del proyecto que muestra los nuevos módulos compartidos
Figura 2: Vista del proyecto que muestra los nuevos módulos compartidos

El asistente de módulos no agrega el módulo recién creado como dependencia a ningún módulo existente. Como siguiente paso, debes vincular el módulo compartido a uno de tus módulos de Gradle existentes de manera similar a otras dependencias de Android.

dependencies {
    ...
    implementation(project(":shared"))
}

Una vez que lo hagas, podrás acceder al código como de costumbre. Desde la app para Android, puedes acceder al código disponible en androidMain o en commonMain.

Para obtener más información sobre la estructura de proyectos multiplataforma de Kotlin, consulta los conceptos básicos de la estructura de proyectos multiplataforma de Kotlin.

Configura el módulo compartido en la app para iOS

Swift no puede usar módulos de Kotlin directamente y requiere que se produzca un framework binario compilado.

La nueva plantilla de módulo en Android Studio configura el módulo compartido para producir un framework para cada una de las arquitecturas de iOS. Puedes encontrar el siguiente código en el archivo build.gradle.kts del módulo compartido:

val xcfName = "sharedKit"

iosX64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosSimulatorArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

Consulta Estructura jerárquica del proyecto para obtener información sobre cómo definir otros tipos de arquitectura.

Para habilitar el acceso al código compartido desde el proyecto de iOS, agrega una fase de secuencia de comandos para generar el framework de Kotlin antes de compilar las fuentes de Swift:

  1. Haz clic con el botón derecho en el archivo de Android Studio y selecciona Open In y Open in Associated Application. Se abrirá la app para iOS en Xcode.
Abrir en la aplicación asociada
Figura 3. Abrir en la aplicación asociada
  1. Para abrir la configuración del proyecto, haz doble clic en el nombre del proyecto en el navegador del proyecto.
Diálogo de configuración del proyecto de Xcode
Figura 4: Diálogo de configuración del proyecto de Xcode
  1. Cambia el nombre predeterminado Run Script a Compile Kotlin Framework para identificar mejor lo que hace esta fase. Haz doble clic en el título Run Script para editarlo.
  2. Expande la fase de compilación y, en el campo de texto Shell, ingresa el siguiente código de secuencia de comandos:
Cómo agregar una nueva fase de compilación de secuencia de comandos de ejecución
Figura 5: Ejecuta la fase de compilación de la secuencia de comandos
  1. Arrastra la fase Run Script antes de la fase Compile Sources.

    Ejecuta la fase de compilación de secuencia de comandos antes de compilar las fuentes
    Figura 6: Ejecuta la fase de compilación de secuencia de comandos antes de compilar las fuentes

  2. Para compilar el proyecto en Xcode, haz clic en ⌘B o navega al menú Product y selecciona Build.

Cuando la compilación se realice correctamente, verás el siguiente ícono.

Compilación correcta que se muestra en Xcode
Figura 7: Compilación correcta

Accede al código compartido en la app para iOS

Para verificar que la app para iOS pueda acceder correctamente al código del módulo compartido, haz lo siguiente:

  1. En el proyecto de iOS, abre el archivo ContentView.swift en la siguiente ubicación: Sources/View/ContentView.swift
  2. Agrega la importación sharedKit en la parte superior del archivo.
  3. Modifica la vista de texto para incluir la información de Platform_iosKt.platform() en la cadena que se muestra de la siguiente manera:

Esta actualización verifica si la app de Fruitties puede llamar a la función platform() desde el módulo compartido, que debería mostrar "iOS" cuando se ejecuta en la plataforma de iOS.

Simulador de Xcode que ejecuta la app para iOS
Figura 8: Simulador de Xcode que ejecuta la app para iOS

Recursos adicionales

Si es la primera vez que desarrollas KMP, consulta la documentación oficial de KMP para obtener más guías. Si es la primera vez que desarrollas para iOS, consulta la documentación sobre los conceptos básicos de Swift.