Kotlin/Native — omówienie: cele, toolchain i kompilacja
Poznaj dostępne cele Kotlin/Native i skompiluj prosty plik binarny CLI.
Kotlin/Native — omówienie: cele, toolchain i kompilacja to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Czym jest Kotlin/Native?
Kotlin/Native kompiluje kod źródłowy Kotlin bezpośrednio do natywnego kodu maszynowego za pośrednictwem LLVM, bez środowiska uruchomieniowego JVM ani Dalvik. Wynikiem jest samowystarczalny plik binarny — na komputerze docelowym nie trzeba instalować JVM.
Obsługiwane platformy docelowe
Kotlin/Native obsługuje szeroki zakres platform docelowych:
- macOS / iOS:
macosX64,macosArm64,iosX64,iosArm64,iosSimulatorArm64 - Linux:
linuxX64,linuxArm64 - Windows:
mingwX64 - Embedded / watchOS / tvOS: różne platformy docelowe
Potok kompilacji
Potok kompilacji Kotlin/Native wygląda następująco: kod źródłowy Kotlin → Kotlin IR (reprezentacja pośrednia) → LLVM IR → natywny plik binarny. Kompilator konanc steruje tym procesem, ale w praktyce zawsze używa się wtyczki Kotlin Multiplatform do Gradle.
Konfigurowanie platformy natywnej w Gradle
W projekcie Kotlin Multiplatform zadeklaruj platformy natywne w pliku build.gradle.kts:
kotlin {
macosArm64("macos") {
binaries {
executable { entryPoint = "main" }
}
}
linuxX64("linux") {
binaries { executable { entryPoint = "main" } }
}
}Zbiory źródeł dla platform natywnych
Platformy natywne współdzielą z innymi platformami zbiory commonMain/commonTest. Kod specyficzny dla platformy znajduje się w zbiorach źródeł takich jak macosMain lub linuxX64Main. Używaj expect/actual dla interfejsów API specyficznych dla platformy.
Typy wynikowych plików binarnych
Kotlin/Native może tworzyć kilka typów plików binarnych:
executable— samodzielny program wiersza poleceństaticLib— biblioteka statyczna do łączenia z projektami C/C++sharedLib— biblioteka dynamiczna (.dylib / .so / .dll)framework— framework Apple do integracji z iOS/macOS
Uruchamianie testów natywnych
Uruchamiaj testy natywne za pomocą ./gradlew macosArm64Test (lub odpowiedniego zadania dla danej platformy). Testy są kompilowane do natywnego pliku binarnego i wykonywane na komputerze hosta — JVM nie bierze w tym udziału.
Ograniczenia kompilacji krzyżowej
Kompilacja krzyżowa w Kotlin/Native jest ograniczona: na platformy Apple można kompilować tylko w systemie macOS (wymagany jest Xcode). Na platformy Linux i Windows można kompilować z dowolnego obsługiwanego systemu hosta. Potoki CI zazwyczaj używają agentów macOS dla platform Apple.
Format klib
Biblioteki Kotlin/Native są dystrybuowane jako pliki .klib — niezależny od platformy format bibliotek Kotlinu. Zależności są rozwiązywane jako pliki .klib i łączone z końcowym plikiem binarnym w czasie kompilacji.
Kotlin/Native w aplikacji KMP na iOS
W standardowym projekcie Kotlin Multiplatform Mobile (KMM) współdzielony kod jest kompilowany do frameworka Apple, który Xcode dołącza do aplikacji na iOS. Kod Swift/Objective-C wywołuje interfejsy API Kotlinu za pośrednictwem wygenerowanych nagłówków.
Charakterystyka wydajności
Natywne pliki binarne uruchamiają się natychmiast (bez uruchamiania JVM), zajmują mniej pamięci i dobrze nadają się do narzędzi wiersza poleceń, aplikacji serwerowych na Linuxie oraz współdzielonej logiki iOS/macOS. Długotrwale działające aplikacje JVM mogą być wydajniejsze od Native dzięki optymalizacjom JIT, ale zalety Native w zakresie czasu uruchamiania i zużycia pamięci sprawiają, że w wielu zastosowaniach jest ono lepszym wyborem.
Szybkie sprawdzenie
Jaki typ pliku binarnego Gradle tworzy framework Apple z Kotlin/Native do użycia w projekcie iOS Xcode?
Podsumowanie: przegląd Kotlin/Native
Najważniejsze informacje:
- Kotlin/Native kompiluje kod do natywnego kodu maszynowego za pośrednictwem LLVM — JVM nie jest wymagana
- Obsługuje platformy macOS, iOS, Linux, Windows, watchOS i tvOS
- Platformy docelowe i typy plików binarnych konfiguruje się we wtyczce KMP do Gradle
- Platformy Apple wymagają macOS i Xcode; kompilacja krzyżowa ma ograniczenia zależne od platformy
- Biblioteki są dystrybuowane jako pliki
.klib; integracja z iOS odbywa się za pomocą pliku binarnego typuframework
Często zadawane pytania
Czy lekcja „Kotlin/Native — omówienie: cele, toolchain i kompilacja” jest bezpłatna?
Tak — pełny tekst „Kotlin/Native — omówienie: cele, toolchain i kompilacja” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Kotlin/Native — omówienie: cele, toolchain i kompilacja”?
Poznaj dostępne cele Kotlin/Native i skompiluj prosty plik binarny CLI. Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?
Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Kotlin/Native — omówienie: cele, toolchain i kompilacja”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?
Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Kotlin/Native — omówienie: cele, toolchain i kompilacja
- Zarządzanie pamięcią w Kotlin/Native: nowy menedżer pamięci
- Interoperacyjność z C za pomocą cinterop i plików .def
- Kotlin/WASM: kompilowanie do WebAssembly dla przeglądarki