Dodawanie Kotlina na wiele platform do istniejącego projektu

Aby utworzyć moduł Kotlin Multiplatform (KMP) w projekcie na Androida, użyj szablonu Kotlin Multiplatform Shared Module, który jest dostępny w Android Studio Meerkat i w wersji 8.8.0 lub nowszej wtyczki Androida do obsługi Gradle.

Szablon modułu automatyzuje tworzenie nowego modułu z minimalną konfiguracją kierowaną na platformy Android i iOS.

Konfigurowanie wspólnego modułu KMP

Aby utworzyć udostępniony moduł KMP:

  1. Kliknij Plik > Nowy > Nowy moduł.
  2. W panelu Szablony kliknij Moduł współdzielony Kotlin na wiele platform:
Tworzenie nowego modułu KMP
Rysunek 1. Tworzenie nowego modułu KMP

Pola w szablonie:

  • Nazwa modułu – określa nazwę modułu Gradle, a także nazwę platformy iOS (można ją później zmienić).
  • Nazwa pakietu – określa nazwę pakietu dla plików w tym module.
    1. Kliknij Zakończ i pozwól Gradle na synchronizację z projektem. Może też wyświetlić się prośba o dodanie nowo utworzonych plików modułów do kontroli źródła.

Po zakończeniu procesu w widoku projektu w Android Studio pojawi się nowy udostępniony moduł wraz z zestawem źródłowym dla każdej platformy.

Widok projektu z nowymi współdzielonymi modułami
Rysunek 2. Widok projektu z nowymi modułami współdzielonymi

Kreator modułów nie dodaje nowo utworzonego modułu jako zależności do żadnego istniejącego modułu. W następnym kroku musisz połączyć udostępniony moduł z jednym z dotychczasowych modułów Gradle w sposób podobny do innych zależności Androida.

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

Gdy funkcja zostanie włączona, będzie można korzystać z kodu dostępu w zwykły sposób. Z aplikacji na Androida możesz uzyskać dostęp do kodu, który jest dostępny w funkcji androidMain lub commonMain.

Więcej informacji o strukturze projektu Kotlin Multiplatform znajdziesz w omówieniu struktury projektu Kotlin Multiplatform.

Konfigurowanie udostępnionego modułu w aplikacji na iOS

Swift nie może używać modułów Kotlin bezpośrednio i wymaga wygenerowania skompilowanego binarnego frameworka.

Nowy szablon modułu w Android Studio konfiguruje udostępniany moduł w celu wygenerowania frameworku dla każdej architektury iOS. Ten kod znajdziesz w pliku build.gradle.kts w ramach udostępnionego modułu:

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 kodu udostępnionego z projektu na iOS, przed skompilowaniem źródeł Swifta dodaj fazę skryptu, która wygeneruje interfejs Kotlina:

  1. Kliknij plik prawym przyciskiem myszy w Android Studio i wybierz Otwórz w 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 jego nazwę w nawigatorze projektów.
Okno ustawień projektu Xcode
Rysunek 4. Okno ustawień projektu w Xcode
  1. Zmień domyślną nazwę Uruchom skrypt na Kompiluj Kotlin Framework, aby lepiej określić, co robi ta faza. Kliknij dwukrotnie tytuł Uruchom skrypt, aby go edytować.
  2. Rozwiń fazę kompilacji i w polu tekstowym Powłoka wpisz ten kod skryptu:
Dodawanie nowego etapu kompilacji skryptu
Rysunek 5. Faza kompilacji skryptu
  1. Przeciągnij fazę Uruchom skrypt przed fazą Zkompiluj źródła.

    Uruchom fazę kompilacji skryptu przed kompilacją źródeł.
    Rysunek 6. Przeprowadź fazę kompilacji skryptu przed skompilowaniem źródeł

  2. Zbuduj projekt w Xcode, klikając ⌘B lub otwierając menu Produkt i klikając Zbuduj.

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

Wyświetlana w Xcode informacja o udanej kompilacji
Rysunek 7. Kompilacja zakończyła się pomyślnie

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 pod adresem:Sources/View/ContentView.swift
  2. U góry pliku dodaj import sharedKit.
  3. Zmień widok Tekst, aby uwzględnić informacje Platform_iosKt.platform() w wyświetlanym ciągu w ten sposób:

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

Symulator Xcode uruchamiający aplikację na iOS
Rysunek 8. Symulator Xcode uruchamiający aplikację na iOS

Dodatkowe materiały

Jeśli dopiero zaczynasz korzystać z KMP, zapoznaj się z oficjalną dokumentacją KMP, aby uzyskać więcej informacji. Jeśli dopiero zaczynasz tworzyć aplikacje na iOS, zapoznaj się z dokumentacją Swift Basics.