Cómo configurar tu entorno (multiplataforma de Kotlin)

Kotlin multiplataforma (KMP) permite compartir el código Kotlin en diferentes plataformas. Antes de comenzar a compilar apps con KMP, deberás configurar tu entorno como se describe en este documento. También puedes consultar la documentación oficial de JetBrains.

Instala o actualiza las herramientas necesarias

  • Instala o actualiza a la versión estable más reciente de Android Studio.
  • Actualiza el complemento de Kotlin que se incluye con Android Studio a la versión más reciente para evitar problemas de compatibilidad.
  • (Opcional) Para el desarrollo de iOS, instala Xcode para compilar la IU y agregar código Swift o Objective-C según sea necesario.

Crea un proyecto multiplataforma de Kotlin

Puedes usar el asistente multiplataforma de Kotlin de JetBrains para crear un proyecto de KMP nuevo. Asegúrate de elegir la opción Do not share UI para mantener la IU nativa.

Estructura del proyecto

Los proyectos de KMP siguen una estructura similar a la de los proyectos de Android.

Un proyecto KMP contiene módulos específicos de la plataforma junto con un módulo compartido. Agrega tu código específico de la plataforma al módulo relevante. Por ejemplo, agrega la IU de tu app para Android en el módulo androidApp y la IU de tu app para iOS en iosApp. Cualquier código que quieras compartir entre plataformas se coloca en el módulo compartido.

El módulo compartido usa Gradle como el sistema de compilación, al igual que el resto del proyecto. Puedes declarar dependencias comunes y específicas de la plataforma con conjuntos de orígenes. Por ejemplo, si tu app usa Ktor para la creación de redes, debes agregar una dependencia de OkHttp para Android y una dependencia de Darwin para iOS. Ten en cuenta que algunas bibliotecas solo requieren dependencias comunes y no necesitan dependencias específicas de la plataforma.

sourceSets {
   commonMain.dependencies {
       //put your multiplatform dependencies here
       //...
       implementation(libs.ktor.client.core)
       implementation(libs.ktor.client.content.negotiation)
       implementation(libs.ktor.serialization.kotlinx.json)
       //...
   }
   androidMain.dependencies {
       implementation(libs.ktor.client.okhttp)
   }
   iosMain.dependencies {
       implementation(libs.ktor.client.darwin)
   }
}

Cuando agregues una biblioteca nueva al módulo compartido de tu app, asegúrate de verificar las dependencias requeridas para cada plataforma.