Ajouter la multiplateforme Kotlin à un projet existant

Pour créer un module Kotlin Multiplatform (KMP) dans votre projet Android, utilisez le modèle Module partagé Kotlin Multiplatform, disponible dans Android Studio Meerkat et le plug-in Android Gradle 8.8.0 ou version ultérieure.

Le modèle de module automatise la création d'un module avec la configuration minimale ciblant les plates-formes Android et iOS. KMP est également compatible avec d'autres cibles, telles que les ordinateurs et le Web, que vous pourrez ajouter au module ultérieurement. Pour obtenir la liste complète, consultez Stabilité des plates-formes compatibles. Pour déclarer une cible, consultez Targets (Cibles) dans la documentation de référence sur le DSL Gradle multiplateforme.

Configurer le module KMP partagé

Pour créer un module KMP partagé, procédez comme suit :

  1. Sélectionnez File > New > New Module (Fichier > Nouveau > Nouveau module).
  2. Sélectionnez le modèle Kotlin Multiplatform Shared Module (Module partagé Kotlin Multiplatform) dans le panneau Templates (Modèles) :
Créer un module KMP
Figure 1. Créer un module KMP

Les champs du modèle sont les suivants :

  • Module name (Nom du module) : définit le nom du module Gradle, ainsi que le nom du framework iOS (peut être modifié ultérieurement)
  • Package name (Nom du package) : définit le nom du package pour les fichiers de ce module.
    1. Cliquez sur Finish (Terminer) et autorisez Gradle à se synchroniser avec le projet. Vous pouvez également être invité à ajouter les fichiers du module que vous venez de créer au contrôle des sources.

Une fois l'opération terminée, la vue Projet d'Android Studio affiche le nouveau module partagé ainsi qu'un ensemble de sources pour chaque plate-forme.

Vue du projet montrant les nouveaux modules partagés
Figure 2. Vue du projet affichant les nouveaux modules partagés

L'assistant de module n'ajoute pas le module nouvellement créé en tant que dépendance à un module existant. Ensuite, vous devez associer le module partagé à l'un de vos modules Gradle existants, comme pour les autres dépendances Android :

dependencies {
    ...
    implementation(project(":shared"))
}

Une fois activé, vous pouvez accéder au code comme d'habitude. Depuis l'application Android, vous pouvez accéder au code disponible dans androidMain ou commonMain.

Pour en savoir plus sur la structure d'un projet Kotlin Multiplatform, consultez Principes de base de la structure d'un projet Kotlin Multiplatform.

Configurer le module partagé dans l'application iOS

Swift ne peut pas utiliser directement les modules Kotlin. Il nécessite la production d'un framework binaire compilé.

Le nouveau modèle de module dans Android Studio configure le module partagé pour produire un framework pour chacune des architectures iOS. Vous trouverez le code suivant dans le fichier build.gradle.kts du module partagé :

val xcfName = "sharedKit"

iosX64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosSimulatorArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

Pour en savoir plus sur la définition d'autres types d'architecture, consultez Structure de projet hiérarchique.

Pour permettre l'accès au code partagé depuis le projet iOS, ajoutez une phase de script pour générer le framework Kotlin avant de compiler les sources Swift :

  1. Effectuez un clic droit sur le fichier dans Android Studio, puis sélectionnez Ouvrir dans et Ouvrir dans l'application associée. L'application iOS s'ouvre alors dans Xcode.
Ouvrir dans l'application associée
Figure 3 : Ouvrir dans l'application associée
  1. Ouvrez les paramètres du projet en double-cliquant sur le nom du projet dans le navigateur de projets.
Boîte de dialogue des paramètres du projet Xcode
Figure 4. Boîte de dialogue des paramètres du projet Xcode
  1. Remplacez le nom par défaut Exécuter le script par Compiler le framework Kotlin pour mieux identifier la fonction de cette phase. Double-cliquez sur le titre Exécuter le script pour le modifier.
  2. Développez la phase de compilation, puis saisissez le code du script suivant dans le champ de texte Shell :
Ajouter une phase de compilation "Exécuter le script"
Figure 5.
  1. Faites glisser la phase Exécuter le script avant la phase Compiler les sources.

    Exécuter la phase de compilation du script avant de compiler les sources
    Figure 6. Exécuter la phase de compilation du script avant de compiler les sources

  2. Compilez le projet dans Xcode en appuyant sur ⌘B ou en accédant au menu Produit et en sélectionnant Compiler.

Une fois la compilation terminée, l'icône suivante s'affiche.

Compilation réussie affichée dans Xcode
Figure 7. Compilation réussie

Accéder au code partagé dans l'application iOS

Pour vérifier que l'application iOS peut accéder au code du module partagé, procédez comme suit :

  1. Dans le projet iOS, ouvrez le fichier ContentView.swift dans le répertoire Sources/View/ContentView.swift.
  2. Ajoutez l'importation sharedKit en haut du fichier.
  3. Modifiez la vue Text pour inclure les informations Platform_iosKt.platform() dans la chaîne affichée, comme suit :

Cette mise à jour vérifie si l'application peut appeler la fonction platform() à partir du module partagé, qui doit renvoyer "iOS" lorsqu'elle s'exécute sur la plate-forme iOS.

Simulateur Xcode exécutant l'application iOS
Figure 8 : Simulateur Xcode exécutant l'application iOS

Autres ressources