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:
- Wybierz File > New > New Module (Plik > Nowy > Nowy moduł).
- W panelu Szablony wybierz szablon Kotlin Multiplatform Shared Module:
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.
- 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.
Łączenie udostępnionego modułu z aplikacją na Androida
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.
Łączenie biblioteki udostępnionej w projekcie na iOS
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:
- 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 ustawienia projektu, klikając dwukrotnie nazwę projektu w nawigatorze projektów.
- 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ć.
- Rozwiń fazę kompilacji i w polu tekstowym Powłoka wpisz ten kod skryptu:
Przeciągnij fazę Run Script (Uruchom skrypt) przed fazę Compile Sources (Skompiluj źródła).
Rysunek 6. Run script build phase before compile sources 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ę.
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:
- W projekcie na iOS otwórz plik
ContentView.swiftw:Sources/View/ContentView.swift - Dodaj import
sharedKitu góry pliku. - 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.
Dodatkowe materiały
- Jeśli dopiero zaczynasz korzystać z KMP, więcej informacji znajdziesz w oficjalnej dokumentacji KMP.
- Jeśli dopiero zaczynasz tworzyć aplikacje na iOS, zapoznaj się z dokumentacją dotyczącą podstaw języka Swift.
- Typowe problemy z konfiguracją KMP znajdziesz w sekcji Rozwiązywanie problemów w krótkim wprowadzeniu do KMP.
- Przykładowe aplikacje znajdziesz w sekcji Przykłady Kotlin Multiplatform na Androida.