Kotlin Multiplatform einem vorhandenen Projekt hinzufügen

Wenn Sie ein Kotlin Multiplatform-Modul (KMP) in Ihrem Android-Projekt erstellen möchten, verwenden Sie die Vorlage Kotlin Multiplatform Shared Module, die in Android Studio Meerkat und Android-Gradle-Plug-in 8.8.0 und höher verfügbar ist.

Mit der Modulvorlage wird die Erstellung eines neuen Moduls mit der Mindestkonfiguration für Android- und iOS-Plattformen automatisiert. KMP unterstützt auch andere Ziele wie Desktop und Web, die Sie dem Modul später hinzufügen können. Eine vollständige Liste finden Sie unter Stabilität unterstützter Plattformen. Informationen zum Deklarieren eines Ziels finden Sie unter Ziele in der Multiplatform Gradle DSL-Referenz.

Gemeinsam genutztes KMP-Modul einrichten

So erstellen Sie ein freigegebenes KMP-Modul:

  1. Wählen Sie Datei > Neu > Neues Modul aus.
  2. Wählen Sie im Bereich Vorlagen die Vorlage Kotlin Multiplatform Shared Module aus:
Neues KMP-Modul erstellen
Abbildung 1. Neues KMP-Modul erstellen

Die Felder in der Vorlage sind:

  • Module name (Modulname): Definiert den Gradle-Modulnamen sowie den iOS-Framework-Namen (kann später geändert werden).
  • Paketname: Definiert den Paketnamen für Dateien in diesem Modul.
    1. Klicken Sie auf Fertigstellen und lassen Sie Gradle mit dem Projekt synchronisieren. Möglicherweise werden Sie auch aufgefordert, die neu erstellten Moduldateien der Versionsverwaltung hinzuzufügen.

Anschließend wird in der Projektansicht von Android Studio das neue freigegebene Modul zusammen mit einem Quellsatz für jede Plattform angezeigt.

Projektansicht mit neuen freigegebenen Modulen
Abbildung 2: Projektansicht mit neuen freigegebenen Modulen

Der Modulassistent fügt das neu erstellte Modul nicht als Abhängigkeit zu einem vorhandenen Modul hinzu. Als Nächstes müssen Sie das freigegebene Modul mit einem Ihrer vorhandenen Gradle-Module verknüpfen, ähnlich wie bei anderen Android-Abhängigkeiten:

dependencies {
    ...
    implementation(project(":shared"))
}

Nach der Aktivierung können Sie wie gewohnt auf den Code zugreifen. In der Android-App können Sie auf Code zugreifen, der entweder in „androidMain“ oder in „commonMain“ verfügbar ist.

Weitere Informationen zur Projektstruktur von Kotlin Multiplatform finden Sie unter Grundlagen der Projektstruktur von Kotlin Multiplatform.

Gemeinsam genutztes Modul für die iOS-App einrichten

Swift kann Kotlin-Module nicht direkt verwenden und erfordert ein kompiliertes binäres Framework.

Mit der neuen Modulvorlage in Android Studio wird das freigegebene Modul so konfiguriert, dass für jede iOS-Architektur ein Framework erstellt wird. Den folgenden Code finden Sie in der Datei build.gradle.kts des freigegebenen Moduls:

val xcfName = "sharedKit"

iosX64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosSimulatorArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

Informationen zum Definieren anderer Architekturtypen finden Sie unter Hierarchische Projektstruktur.

Wenn Sie den Zugriff auf den freigegebenen Code über das iOS-Projekt ermöglichen möchten, fügen Sie eine Skriptphase hinzu, um das Kotlin-Framework zu generieren, bevor Sie die Swift-Quellen kompilieren:

  1. Rechtsklicken Sie in Android Studio auf die Datei und wählen Sie Öffnen in und In verknüpfter Anwendung öffnen aus. Dadurch wird die iOS-App in Xcode geöffnet.
In verknüpfter Anwendung öffnen
Abbildung 3. In verknüpfter Anwendung öffnen
  1. Öffnen Sie die Projekteinstellungen, indem Sie im Projektnavigator auf den Projektnamen doppelklicken.
Dialogfeld „Xcode-Projekteinstellungen“
Abbildung 4. Dialogfeld „Xcode-Projekteinstellungen“
  1. Ändern Sie den Standardnamen Run Script in Compile Kotlin Framework, um besser zu erkennen, was in dieser Phase passiert. Doppelklicken Sie auf den Titel Run Script, um ihn zu bearbeiten.
  2. Maximieren Sie die Build-Phase und geben Sie im Textfeld Shell den folgenden Skriptcode ein:
Neue Build-Phase zum Ausführen von Skripts hinzufügen
Abbildung 5. Run script build phase
  1. Ziehen Sie die Phase Run Script (Skript ausführen) vor die Phase Compile Sources (Quellen kompilieren).

    Skript-Build-Phase vor dem Kompilieren von Quellen ausführen
    Abbildung 6. Run script build phase before compile sources

  2. Erstellen Sie das Projekt in Xcode, indem Sie auf ⌘B klicken oder das Menü Product aufrufen und Build auswählen.

Wenn der Build erfolgreich ist, wird das folgende Symbol angezeigt.

In Xcode wird angezeigt, dass der Build erfolgreich war
Abbildung 7. Build erfolgreich

Auf den freigegebenen Code in der iOS-App zugreifen

So prüfen Sie, ob die iOS-App erfolgreich auf Code aus dem freigegebenen Modul zugreifen kann:

  1. Öffnen Sie im iOS-Projekt die Datei ContentView.swift unter: Sources/View/ContentView.swift
  2. Fügen Sie oben in der Datei den Import sharedKit hinzu.
  3. Ändern Sie die Textansicht so, dass die Platform_iosKt.platform()-Informationen im angezeigten String enthalten sind:

Mit diesem Update wird geprüft, ob die App die Funktion platform() aus dem freigegebenen Modul aufrufen kann. Diese sollte „iOS“ zurückgeben, wenn sie auf der iOS-Plattform ausgeführt wird.

Xcode-Simulator, auf dem die iOS-App ausgeführt wird
Abbildung 8. Xcode-Simulator, auf dem die iOS-App ausgeführt wird

Zusätzliche Ressourcen