Dodawanie Kotlina na wiele platform do istniejącego projektu

Aby utworzyć moduł Kotlin Multiplatform (KMP) w projekcie aplikacji na Androida, użyj szablonu Moduł udostępniony Kotlin Multiplatform dostępnego w Android Studio Meerkat i wtyczce Androida do obsługi Gradle w wersji 8.8.0 lub nowszej.

Szablon modułu automatyzuje tworzenie nowego modułu z minimalną konfiguracją kierowaną na platformy Androida i iOS. KMP obsługuje też inne platformy docelowe, takie jak komputery i internet, które możesz później dodać do modułu. Pełną listę znajdziesz w artykule Stabilność obsługiwanych platform. Aby dowiedzieć się, jak zadeklarować środowisko docelowe, zapoznaj się z sekcją Targets (Środowiska docelowe) w dokumentacji wieloplatformowego DSL Gradle.

Konfigurowanie udostępnionego modułu KMP

Aby utworzyć udostępniony moduł KMP, wykonaj te czynności:

  1. Wybierz File > New > New Module (Plik > Nowy > Nowy moduł).
  2. W panelu Szablony wybierz szablon Kotlin Multiplatform Shared Module:
Tworzenie nowego modułu KMP
Rysunek 1. Tworzenie nowego modułu KMP

Szablon zawiera te pola:

  • Module name (Nazwa modułu) – określa nazwę modułu Gradle oraz nazwę platformy iOS (można ją później zmienić).
  • Package name (Nazwa pakietu) – określa nazwę pakietu dla plików w tym module.
    1. Kliknij Zakończ i pozwól Gradle zsynchronizować się z projektem. Może też pojawić się prośba o dodanie nowo utworzonych plików modułu do systemu kontroli wersji.

Po zakończeniu widok projektu w Android Studio wyświetli nowy udostępniony moduł wraz ze zbiorem źródeł dla każdej platformy.

Widok projektu z nowymi udostępnionymi modułami
Rysunek 2. Widok projektu z nowymi modułami udostępnionymi

Kreator modułów nie dodaje nowo utworzonego modułu jako zależności do żadnego istniejącego modułu. Następnie musisz połączyć udostępniony moduł z jednym z istniejących modułów Gradle, podobnie jak w przypadku innych zależności Androida:

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

Po włączeniu możesz uzyskać dostęp do kodu w zwykły sposób. Z poziomu aplikacji na Androida możesz uzyskać dostęp do kodu, który jest dostępny w androidMain lub commonMain.

Więcej informacji o strukturze projektu Kotlin Multiplatform znajdziesz w podstawach struktury projektu Kotlin Multiplatform.

Konfigurowanie modułu udostępnionego w aplikacji na iOS

Swift nie może bezpośrednio używać modułów Kotlina i wymaga skompilowanej platformy binarnej.

Nowy szablon modułu w Android Studio konfiguruje udostępniony moduł tak, aby tworzył platformę dla każdej architektury iOS. W pliku build.gradle.kts modułu udostępnionego znajdziesz ten kod:

val xcfName = "sharedKit"

iosX64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosSimulatorArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

Informacje o definiowaniu innych typów architektury znajdziesz w artykule Hierarchiczna struktura projektu.

Aby umożliwić dostęp do udostępnionego kodu z projektu na iOS, dodaj fazę skryptu, która wygeneruje platformę Kotlin przed skompilowaniem źródeł Swift:

  1. Kliknij plik prawym przyciskiem myszy w Android Studio i wybierz Otwórz w i Otwórz w powiązanej aplikacji. Spowoduje to otwarcie aplikacji na iOS w Xcode.
Otwórz w powiązanej aplikacji
Rysunek 3. Otwórz w powiązanej aplikacji
  1. Otwórz ustawienia projektu, klikając dwukrotnie nazwę projektu w nawigatorze projektów.
Okno ustawień projektu Xcode
Rysunek 4. Okno ustawień projektu Xcode
  1. Zmień domyślną nazwę Run Script na Compile Kotlin Framework, aby łatwiej było zidentyfikować, co robi ten etap. Kliknij dwukrotnie tytuł Uruchom skrypt, aby go edytować.
  2. Rozwiń fazę kompilacji i w polu tekstowym Powłoka wpisz ten kod skryptu:
Dodawanie nowej fazy kompilacji skryptu uruchamiania
Rysunek 5. Run script build phase
  1. Przeciągnij fazę Run Script (Uruchom skrypt) przed fazę Compile Sources (Skompiluj źródła).

    Uruchom fazę kompilacji skryptu przed kompilacją źródeł
    Rysunek 6. Run script build phase before compile sources

  2. Skompiluj projekt w Xcode, klikając ⌘B lub otwierając menu Product (Produkt) i wybierając Build (Skompiluj).

Gdy kompilacja się powiedzie, zobaczysz tę ikonę.

Komunikat o pomyślnej kompilacji wyświetlany w Xcode
Rysunek 7. Kompilacja zakończona powodzeniem

Dostęp do udostępnionego kodu w aplikacji na iOS

Aby sprawdzić, czy aplikacja na iOS może uzyskać dostęp do kodu z udostępnionego modułu, wykonaj te czynności:

  1. W projekcie na iOS otwórz plik ContentView.swift w: Sources/View/ContentView.swift
  2. Dodaj import sharedKit u góry pliku.
  3. Zmodyfikuj widok tekstu, aby wyświetlany ciąg zawierał informacje o Platform_iosKt.platform():

Ta aktualizacja sprawdza, czy aplikacja może wywołać funkcję platform() z udostępnionego modułu, która powinna zwracać „iOS” podczas działania na platformie iOS.

Symulator Xcode z uruchomioną aplikacją na iOS
Rysunek 8. Symulator Xcode z uruchomioną aplikacją na iOS

Dodatkowe materiały