¿Cómo se configura una construcción multiplataforma de Kotlin?

Me gustaría build el mismo código fuente de kotlin en javascript y java (android). ¿Hay una forma estándar de lograr esto?

  1. Crea un proyecto en IntelliJ. Seleccione un proyecto de Gradle y luego Java (y cualquier otra cosa que desee)

Nuevo menú del proyecto IntelliJ

  1. Cree 3 nuevos modules de Gradle: common , android-specific js-specific . Asegúrese de que se agreguen como module a su module principal

Agregar un nuevo módulo

Agregar una nueva parte del módulo 2

  1. Presiona siguiente, luego termina (y repite para android-specific y js-specific )
  2. Elimine settings.gradle de common , y los otros 2 modules ya que no los va a necesitar
  3. Asegúrese de que estos 3 nuevos modules se agreguen a la settings.gradle principal del module "principal". Debería verse más y less así:

     rootProject.name = 'parent' include ':common' include ':android-specific' include ':js-specific' 
  4. Edite la dependencia del module common (file build.gradle , línea 24 para ) de org.jetbrains.kotlin:kotlin-stdlib-jre8 a org.jetbrains.kotlin:kotlin-stdlib por lo que no es específico de la plataforma.
  5. Si realmente quiere asegurarse de haber hecho todo correctamente, vaya a Ver -> Herramientas de Windows -> Gradle

Ver -> Herramientas de Windows -> Gradle

  1. Debería ver el menu de Gradle y debería verse así

Cómo debería verse

La configuration de Gradle también debería funcionar sin IntelliJ (o Android Studio) pero no lo probé

El soporte oficial multiplataforma para Kotlin aún no se ha lanzado. Si desea mantenerse al día sobre él, recomiendo seguir el canal #multiplatform en Kotlin Slack .

  • Property getter tipeado en Supertipo en lugar de Implementación en Kotlin
  • Cómo verificar si los datos se insertan en la database de la sala
  • Spring Boot: Boot Run no puede agregar addResources = true
  • Kotlin - generate toString () para una class que no sea de datos
  • Conversión de código de Java a Kotlin en Android Studio
  • ¿Por qué Kotlin lanza IllegalArgumentException cuando usa Proxy?
  • Cómo get Flowable <List <Foo >> del object 'Bar' con relaciones de uno a muchos 'Foo' usando el reino y Rxjava
  • TimeZone no muestra
  • Cómo establecer pivotes dynamics para girar la animation
  • La instancia de la class Kotlin no es correcta
  • ¿Cómo usar setter como obj.value = "" cuando el setter tiene valor devuelto?