Kotlin Multiplatform vs Flutter
KMP (logique métier partagée + UI native) contre Flutter (UI partagée + runtime) — comparatif mobile cross-platform. Performance, expérience développeur, écosystème.
Passez à iOS et Android en même temps avec votre code SwiftUI
Kotlin, le langage, depuis 2012 ; KMP, le modèle logique partagée + UI native prêt pour la production
Les preuves ne désignent pas un "gagnant" net, mais un "cela dépend de vous" net : le SDK officiel de Swift 6.3 et le passage de Skip au gratuit rendent pour la première fois défendable "Android sans Kotlin". À l'échelle de la production, KMP garde l'avantage : Duolingo, Google, McDonald's et Netflix sont des cas de grande ampleur. La galerie de Skip liste 24 applications nommées, mais sans échelle ni métriques publiées. Petite équipe sans temps pour apprendre Kotlin : essayez Skip. Entreprise à faible tolérance au risque : KMP reste le choix sûr.
| Catégorie | Skip (Swift on Android) | Kotlin Multiplatform |
|---|---|---|
| Performance | 8/10 | 9/10 |
| Facilité d'apprentissage | 6/10 | 6/10 |
| Écosystème | 6/10 | 9/10 |
| Communauté | 5/10 | 9/10 |
| Marché de l'emploi | 4/10 | 8/10 |
| Pérennité | 7/10 | 9/10 |
// Skip : installation et nouveau projet sur une machine avec Xcode + Android Studio
// Source : https://skip.dev/docs/gettingstarted/ + https://skip.dev/docs/skip-cli/
// 1) Installer la chaîne d'outils Skip (Homebrew)
brew install skip
// 2) Vérifier l'environnement (versions Xcode, Android Studio, Java, Gradle)
skip checkup
// 3) Créer un nouveau projet Skip App (mode Fuse, iOS+Android).
// `skip create` est entièrement interactif, sans options ; l'équivalent non-interactif est `skip init` :
skip init --native-app --appid=com.example.HelloSkip hello-skip HelloSkip
// 4) Pour ajouter Android via le modèle Library à une application iOS existante :
// extraire la logique partagée vers un module de bibliothèque native séparé
skip init --native-model shared-feature SharedFeature
// La vue SwiftUI obtenue s'écrit comme une vue SwiftUI iOS ordinaire :
import SwiftUI
struct ContentView: View {
@State private var count = 0
var body: some View {
VStack(spacing: 16) {
Text("Passer à Android avec Skip")
.font(.title2)
Text("Compteur : \(count)")
Button("Incrémenter") {
count += 1
}
.buttonStyle(.borderedProminent)
}
.padding()
}
}
// 5) Compiler et exécuter côté Android (via Gradle ; en arrière-plan,
// l'arbre de vues SwiftUI est converti en appels Jetpack Compose).
// Prérequis : démarrez vous-même l'émulateur — `skip app launch` ne le fait pas à votre place.
cd hello-skip
skip android emulator launch
skip app launch --android// Kotlin Multiplatform : logique partagée + expect/actual
// Source : https://kotlinlang.org/docs/multiplatform/get-started.html
// commonMain/kotlin/Counter.kt — logique partagée sur toutes les plateformes
class Counter {
private var value: Int = 0
fun increment(): Int { value += 1; return value }
fun current(): Int = value
}
// commonMain/kotlin/Platform.kt
expect fun platformName(): String
// androidMain/kotlin/Platform.android.kt
actual fun platformName(): String = "Android ${android.os.Build.VERSION.SDK_INT}"
// iosMain/kotlin/Platform.ios.kt
import platform.UIKit.UIDevice
actual fun platformName(): String =
UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion
// Côté Android, l'UI Compose utilise le Counter partagé
@Composable
fun CounterScreen(counter: Counter) {
var count by remember { mutableStateOf(counter.current()) }
Column(modifier = Modifier.padding(16.dp)) {
Text("Logique partagée avec Kotlin Multiplatform")
Text("Compteur : $count")
Button(onClick = { count = counter.increment() }) { Text("Incrémenter") }
}
}
// build.gradle.kts (module: shared)
kotlin {
androidTarget()
listOf(iosX64(), iosArm64(), iosSimulatorArm64()).forEach {
it.binaries.framework { baseName = "Shared" }
}
sourceSets {
commonMain.dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0")
}
}
}Les preuves ne désignent pas un "gagnant" net, mais un "cela dépend de vous" net : le SDK officiel de Swift 6.3 et le passage de Skip au gratuit rendent pour la première fois défendable "Android sans Kotlin". À l'échelle de la production, KMP garde l'avantage : Duolingo, Google, McDonald's et Netflix sont des cas de grande ampleur. La galerie de Skip liste 24 applications nommées, mais sans échelle ni métriques publiées. Petite équipe sans temps pour apprendre Kotlin : essayez Skip. Entreprise à faible tolérance au risque : KMP reste le choix sûr.
Obtenir une consultation gratuiteOui. Depuis Swift 6.3 (24 mars 2026), il existe un Swift SDK for Android officiel, et les paquets Swift peuvent être compilés directement pour la cible Android. Des outils comme Skip s'appuient dessus pour convertir les vues SwiftUI en une véritable interface Jetpack Compose, offrant un flux de développement pratique. Source : swift.org/blog/swift-6.3-released.