Umgebung einrichten (Kotlin Multiplatform)

Kotlin Multiplatform (KMP) ermöglicht die Freigabe von Kotlin-Code über verschiedene Plattformen hinweg. Bevor Sie mit dem Erstellen von Anwendungen mit KMP beginnen, müssen Sie Ihre Umgebung wie in diesem Dokument beschrieben einrichten. Weitere Informationen finden Sie in der offiziellen Dokumentation von Jetbrain.

Erforderliche Tools installieren oder aktualisieren

  • Installieren Sie Android Studio oder aktualisieren Sie es auf die neueste stabile Version.
  • Aktualisieren Sie das in Android Studio enthaltene Kotlin-Plug-in auf die neueste Version, um Kompatibilitätsprobleme zu vermeiden.
  • (Optional) Installieren Sie für die iOS-Entwicklung Xcode, um die Benutzeroberfläche zu erstellen, und fügen Sie nach Bedarf Swift- oder Objective-C-Code hinzu.

Kotlin-Multiplattform-Projekt erstellen

Sie können den Kotlin-Multiplatform-Assistenten von Jetbrains verwenden, um ein neues KMP-Projekt zu erstellen. Wählen Sie die Option UI nicht freigeben aus, damit die UI nativ bleibt.

Projektstruktur

KMP-Projekte haben eine ähnliche Projektstruktur wie Android-Projekte.

Ein KMP-Projekt enthält plattformspezifische Module sowie ein freigegebenes Modul. Fügen Sie Ihren plattformspezifischen Code in das entsprechende Modul ein. Fügen Sie beispielsweise die UI Ihrer Android-App im Modul androidApp und die UI Ihrer iOS-App in iosApp ein. Jeder Code, den Sie plattformübergreifend freigeben möchten, wird im Modul shared aufgeführt.

Genau wie beim Rest des Projekts wird im gemeinsam genutzten Modul Gradle als Build-System verwendet. Sie können allgemeine und plattformspezifische Abhängigkeiten mithilfe von Sourcesets deklarieren. Wenn Ihre Anwendung beispielsweise Ktor für das Netzwerk verwendet, müssen Sie eine OkHttp-Abhängigkeit für Android und eine Darwin-Abhängigkeit für iOS hinzufügen. Beachten Sie, dass einige Bibliotheken nur allgemeine Abhängigkeiten und keine plattformspezifischen Abhängigkeiten benötigen.

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)
   }
}

Wenn Sie dem freigegebenen Modul Ihrer App eine neue Bibliothek hinzufügen, müssen Sie für jede Plattform die erforderlichen Abhängigkeiten prüfen.