Kotlin Multiplatform és una característica poderosa de Kotlin que permet compartir codi entre diverses plataformes, com Android, iOS, web i backend. Aquesta capacitat de compartir codi ajuda a reduir la duplicació d'esforços i a mantenir la coherència en les aplicacions multiplataforma.

Objectius d'Aprenentatge

En aquesta secció, aprendràs:

  • Què és Kotlin Multiplatform i els seus avantatges.
  • Com configurar un projecte Kotlin Multiplatform.
  • Com compartir codi entre diferents plataformes.
  • Com gestionar les dependències específiques de la plataforma.
  • Exemples pràctics de codi compartit.

Què és Kotlin Multiplatform?

Kotlin Multiplatform permet escriure codi comú que es pot executar en diverses plataformes. Això inclou:

  • Android: Utilitzant Kotlin/JVM.
  • iOS: Utilitzant Kotlin/Native.
  • Web: Utilitzant Kotlin/JS.
  • Backend: Utilitzant Kotlin/JVM o Kotlin/Native.

Avantatges de Kotlin Multiplatform

  • Reutilització de Codi: Escriu una vegada, utilitza en qualsevol lloc.
  • Manteniment Simplificat: Menys codi duplicat significa menys errors i menys esforç de manteniment.
  • Consistència: Les lògiques de negoci i les regles es mantenen coherents a través de les plataformes.

Configuració d'un Projecte Kotlin Multiplatform

Passos per Configurar el Projecte

  1. Instal·la IntelliJ IDEA o Android Studio: Assegura't de tenir la darrera versió.

  2. Crea un Nou Projecte Kotlin Multiplatform:

    • Obre IntelliJ IDEA o Android Studio.
    • Selecciona "New Project".
    • Tria "Kotlin Multiplatform" com a plantilla de projecte.
  3. Configura el build.gradle.kts:

    plugins {
        kotlin("multiplatform") version "1.5.31"
    }
    
    kotlin {
        jvm()
        js {
            browser {
                testTask {
                    useKarma {
                        useChromeHeadless()
                    }
                }
            }
        }
        ios()
        sourceSets {
            val commonMain by getting {
                dependencies {
                    implementation(kotlin("stdlib-common"))
                }
            }
            val commonTest by getting {
                dependencies {
                    implementation(kotlin("test-common"))
                    implementation(kotlin("test-annotations-common"))
                }
            }
            val jvmMain by getting
            val jvmTest by getting
            val jsMain by getting
            val jsTest by getting
            val iosMain by getting
            val iosTest by getting
        }
    }
    

Estructura del Projecte

El projecte tindrà la següent estructura:

project
│
├── build.gradle.kts
├── settings.gradle.kts
└── src
    ├── commonMain
    │   └── kotlin
    ├── commonTest
    │   └── kotlin
    ├── jvmMain
    │   └── kotlin
    ├── jvmTest
    │   └── kotlin
    ├── jsMain
    │   └── kotlin
    ├── jsTest
    │   └── kotlin
    ├── iosMain
    │   └── kotlin
    └── iosTest
        └── kotlin

Compartir Codi entre Diferents Plataformes

Exemple de Codi Compartit

Codi Comú (commonMain)

expect fun platformName(): String

fun createApplicationScreenMessage(): String {
    return "Kotlin Rocks on ${platformName()}"
}

Implementació per a Android (jvmMain)

actual fun platformName(): String {
    return "Android"
}

Implementació per a iOS (iosMain)

actual fun platformName(): String {
    return "iOS"
}

Gestió de Dependències Específiques de la Plataforma

Pots afegir dependències específiques de la plataforma en els respectius blocs sourceSets del build.gradle.kts.

sourceSets {
    val commonMain by getting {
        dependencies {
            implementation(kotlin("stdlib-common"))
        }
    }
    val jvmMain by getting {
        dependencies {
            implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
        }
    }
    val jsMain by getting {
        dependencies {
            implementation("org.jetbrains.kotlin:kotlin-stdlib-js")
        }
    }
    val iosMain by getting {
        dependencies {
            // Dependències específiques d'iOS
        }
    }
}

Exercici Pràctic

Objectiu

Crea una funció compartida que retorni un missatge de benvinguda personalitzat per a cada plataforma.

Passos

  1. Defineix una funció welcomeMessage a commonMain.
  2. Implementa la funció per a Android i iOS.

Solució

commonMain

expect fun platformName(): String

fun welcomeMessage(userName: String): String {
    return "Welcome $userName to ${platformName()}!"
}

jvmMain

actual fun platformName(): String {
    return "Android"
}

iosMain

actual fun platformName(): String {
    return "iOS"
}

Resum

En aquesta secció, hem explorat Kotlin Multiplatform, una eina poderosa per compartir codi entre diverses plataformes. Hem après a configurar un projecte Kotlin Multiplatform, a compartir codi comú i a gestionar dependències específiques de la plataforma. Amb aquests coneixements, pots començar a desenvolupar aplicacions multiplataforma eficients i coherents.

En el següent mòdul, ens endinsarem en les millors pràctiques i temes avançats per optimitzar el teu codi Kotlin i assegurar-te que segueixes les convencions de la comunitat.

© Copyright 2024. Tots els drets reservats