Konfigurowanie środowiska (Kotlin Multiplatform)

Kotlin Multiplatform (KMP) umożliwia udostępnianie kodu Kotlin na różnych platformach. Zanim zaczniesz tworzyć aplikacje za pomocą KMP, musisz skonfigurować środowisko w sposób opisany w tym dokumencie. Możesz też zapoznać się z oficjalną dokumentacją Jetbraina.

Zainstaluj lub zaktualizuj wymagane narzędzia

  • Zainstaluj Android Studio lub zaktualizuj go do najnowszej stabilnej wersji.
  • Aby uniknąć problemów ze zgodnością, zaktualizuj wtyczkę Kotlin, która jest dołączona do Android Studio, do najnowszej wersji.
  • (Opcjonalnie) Jeśli tworzysz interfejs na iOS, zainstaluj Xcode, a w razie potrzeby dodaj kod Swift lub Objective-C.

Tworzenie wieloplatformowego projektu Kotlin

Aby utworzyć nowy projekt KMP, możesz użyć kreatora wieloplatformowego Kotlin z platformy Jetbrains. Pamiętaj, aby wybrać opcję Nie udostępniaj UI, aby zachować interfejs natywny.

Struktura projektu

Projekty KMP mają strukturę podobną do projektów na Androidzie.

Projekt KMP zawiera moduły związane z daną platformą oraz moduł udostępniony. Dodaj kod platformy do odpowiedniego modułu. Dodaj na przykład interfejs aplikacji na Androida w module androidApp, a interfejs aplikacji na iOS w iosApp. Kod, który chcesz udostępnić między platformami, znajduje się w module udostępniania.

Moduł udostępniony używa Gradle jako systemu kompilacji, tak jak reszta projektu. Za pomocą zbiorów źródłowych możesz zadeklarować wspólne i specyficzne dla platformy zależności. Jeśli na przykład Twoja aplikacja korzysta z Ktor do obsługi sieci, musisz dodać zależność OkHttp w przypadku Androida i zależność darwin w iOS. Niektóre biblioteki wymagają tylko typowych zależności i nie wymagają zależności od 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)
   }
}

Gdy dodajesz nową bibliotekę do modułu udostępnianego aplikacji, sprawdź, czy występują jakieś zależności wymagane na każdej platformie.