Kotlin Multiplatform : guide complet avec exemples en Kotlin

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que Kotlin Multiplatform et pourquoi l'utiliser ?

Kotlin Multiplatform (KMP) n'est pas une bibliothèque classique, mais une technologie (SDK et ensemble d'outils) développée par JetBrains. Elle permet d'écrire du code commun en langage Kotlin et de le compiler pour plusieurs plateformes : JVM (Android, serveurs), JavaScript (navigateurs web, Node.js), Native (iOS, macOS, Windows, Linux, watchOS, tvOS).

Pourquoi l'utiliser ? Dans le développement moderne, il est souvent nécessaire de créer des applications pour différentes plateformes. Traditionnellement, cela impliquait d'écrire du code dans différents langages (Swift pour iOS, Java/Kotlin pour Android, JavaScript pour le web). Kotlin Multiplatform résout ce problème en permettant de placer la logique métier (requêtes réseau, gestion de base de données, validation des données, sérialisation) dans un module commun utilisé sur toutes les plateformes. Le code spécifique à chaque plateforme (UI, appareil photo, capteurs) reste natif, mais son volume est considérablement réduit.

Avantages clés :

  • Réduction du temps de développement : Écrivez la logique une fois, utilisez-la partout.
  • Base de code unifiée : Moins de bugs, maintenance et refactoring simplifiés.
  • Performances natives : Contrairement à React Native ou Flutter, KMP compile en code natif, sans couche d'abstraction intermédiaire.
  • Flexibilité : Commencez modestement en externalisant une seule bibliothèque (ex : pour les requêtes réseau) et étendez progressivement le code commun.
  • Réutilisation du code existant : Intégrez des bibliothèques natives via le mécanisme expect/actual.

Kotlin Multiplatform est idéal pour : les applications mobiles (Android + iOS), les applications serveur (Ktor + KMP), les applications web (Kotlin/JS), les applications desktop (Compose Multiplatform) et les bibliothèques qui doivent fonctionner partout.

Installation et configuration

Kotlin Multiplatform ne s'installe pas via pip ou npm. C'est un outil de build configuré via le système de build Gradle. Voici le processus standard pour créer un projet KMP.

1. Installation d'IntelliJ IDEA ou Android Studio

Nous recommandons d'utiliser IntelliJ IDEA Ultimate (la version Community convient également, mais avec des limitations) ou Android Studio avec le plugin Kotlin Multiplatform.

2. Création du projet

Le moyen le plus simple est d'utiliser le Kotlin Multiplatform Wizard (outil en ligne de JetBrains) : https://kmp.jetbrains.com/. Sélectionnez les plateformes souhaitées (Android, iOS, Desktop, Web) et téléchargez le modèle prêt à l'emploi.

3. Structure du projet (Gradle)

Le fichier de configuration principal est build.gradle.kts (racine et modules). Plugins essentiels :

// build.gradle.kts racine
plugins {
    kotlin("multiplatform") version "1.9.22" apply false
    kotlin("plugin.serialization") version "1.9.22" apply false
    id("com.android.application") version "8.2.0" apply false
    id("org.jetbrains.compose") version "1.5.11" apply false
}

// Module shared (code commun)
plugins {
    kotlin("multiplatform")
    kotlin("plugin.serialization")
    id("com.android.library")
}

kotlin {
    androidTarget {
        compilations.all {
            kotlinOptions {
                jvmTarget = "1.8"
            }
        }
    }

    listOf(
        iosX64(),
        iosArm64(),
        iosSimulatorArm64()
    ).forEach {
        it.binaries.framework {
            baseName = "shared"
            isStatic = true
        }
    }

    sourceSets {
        val commonMain by getting {
            dependencies {
                implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
                implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")
                implementation("io.ktor:ktor-client-core:2.3.7")                    

Recommendations