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 Jetbrain.

Instala o actualiza las herramientas necesarias

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

Cómo crear 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 No compartir la IU para mantener la IU nativa.

Estructura del proyecto

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

Un proyecto de KMP contiene módulos específicos de la plataforma junto con un módulo compartido. Agrega el código específico de tu plataforma al módulo correspondiente. 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 las plataformas va en el módulo compartido.

El módulo compartido usa Gradle como 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 las herramientas 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 necesarias para cada plataforma.