Arhitectura Kotlin Multiplatform (KMP): Mecanismul expect / actual și Partajarea Codului în Kotlin

Ghid complet pentru Kotlin Multiplatform (KMP): mecanismul de legătură expect / actual, partajarea logicii de business între Android, iOS, Desktop și Web (Wasm), și structura modulară commonMain.

Sintaxă
expect fun getPlatformName(): String | actual fun getPlatformName() = 'Android'

Spre deosebire de alte soluții cross-platform care desenează un ecran virtual sau folosesc un motor greoi de randare (precum Flutter), Kotlin Multiplatform (KMP) adoptă o filosofie curată: partajarea exclusivă a codului care contează (logica de domeniu, modelele de date, algoritmii de calcul, cache-ul local și apelurile de rețea), păstrând accesul 100% nativ la platforma de bază.

Pentru a accesa API-uri specifice sistemului de operare (cum ar fi modelul de dispozitiv, fișierele de securitate Keychain pe iOS sau SharedPreferences pe Android), KMP folosește mecanismul expect / actual.

Implementarea Mecanismului expect / actual
// 1. În modulul comun (src/commonMain/kotlin/Platform.kt):
// Declarăm contractul așteptat de la toate platformele:
expect class InfoDispozitiv() {
    val numePlatforma: String
    val versiuneOS: String
}

// 2. În modulul specific Android (src/androidMain/kotlin/Platform.android.kt):
// Furnizăm implementarea concretă folosind API-ul Android SDK:
actual class InfoDispozitiv actual constructor() {
    actual val numePlatforma: String = "Android"
    actual val versiuneOS: String = android.os.Build.VERSION.RELEASE
}

// 3. În modulul specific iOS (src/iosMain/kotlin/Platform.ios.kt):
// Avem acces direct la framework-urile native Apple UIKit / UIDevice via Kotlin/Native:
import platform.UIKit.UIDevice

actual class InfoDispozitiv actual constructor() {
    actual val numePlatforma: String = UIDevice.currentDevice.systemName()
    actual val versiuneOS: String = UIDevice.currentDevice.systemVersion()
}

Structura Standard a unui Proiect Enterprise KMP

  • commonMain: Conține 85-95% din baza de cod (Modele de date, Ktor Client pentru HTTP, SQLDelight pentru SQLite, Corutine, reguli de afaceri).
  • androidMain: Integrare cu servicii de sistem Android, injectare de context de aplicație.
  • iosMain: Export către framework-ul nativ Xcode prin legături generate automat către Swift / Objective-C.
  • wasmJsMain: Compilare binară în WebAssembly pentru rulare la viteză nativă în browsere moderne.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Arhitectura Kotlin Multiplatform (KMP): Mecanismul expect / actual și Partajarea Codului

Ai o nelămurire despre utilizarea comenzii Arhitectura Kotlin Multiplatform (KMP): Mecanismul expect / actual și Partajarea Codului sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.