Kotlin Multiplatform (KMP) umożliwia udostępnianie kodu Kotlin na różnych platformach. Zanim zaczniesz tworzyć aplikacje za pomocą KMP, musisz skonfigurować środowisko zgodnie z instrukcjami podanymi w tym dokumencie. Możesz też zapoznać się z oficjalną dokumentacją JetBraina.
Instalowanie lub aktualizowanie wymaganych narzędzi
- Zainstaluj lub zaktualizuj Android Studio do najnowszej stabilnej wersji.
- Aby uniknąć problemów ze zgodnością, zaktualizuj wtyczkę Kotlin dołączoną do Android Studio do najnowszej wersji.
- (Opcjonalnie) Aby tworzyć aplikacje na iOS, zainstaluj Xcode, aby tworzyć interfejs użytkownika i w razie potrzeby dodawać kod Swift lub Objective-C.
Tworzenie projektu Kotlin Multiplatform
Możesz użyć kreatora Kotlin Multiplatform od JetBrains, aby utworzyć nowy projekt KMP. Aby zachować natywne UI, wybierz opcję Nie udostępniaj interfejsu użytkownika.
Struktura projektu
Projekty KMP mają strukturę podobną do struktury projektów Androida.
Projekt KMP zawiera moduły platformowe oraz moduł wspólny. Dodaj kod dla konkretnej platformy do odpowiedniego modułu. Dodaj na przykład interfejs użytkownika aplikacji na Androida w module androidApp, a interfejs użytkownika aplikacji na iOS w module iosApp. Każdy kod, który chcesz udostępnić na różnych platformach, umieszczasz w module wspólnym.
Udostępniony moduł używa Gradle jako systemu kompilacji, tak jak reszta projektu. Za pomocą zestawów źródeł możesz deklarować zależności wspólne i specyficzne dla platformy. Jeśli na przykład Twoja aplikacja korzysta z Ktora do obsługi sieci, musisz dodać zależność OkHttp na Androida i zależność darwin na iOS. Pamiętaj, że niektóre biblioteki wymagają tylko wspólnych zależności i nie potrzebują zależności specyficznych dla danej platformy.
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)
}
}
Dodając nową bibliotekę do modułu wspólnego aplikacji, sprawdź, czy zawiera ona wymagane zależności dla każdej platformy.