Kotlin Multiplatform dispose d'un plug-in Gradle pour configurer le module de bibliothèque.
Le plug-in com.android.kotlin.multiplatform.library
remplace officiellement l'ancienne méthode d'ajout de cibles Android aux bibliothèques KMP à l'aide du plug-in Gradle de bibliothèque Android standard (com.android.library
).
L'approche précédente est désormais obsolète au profit du plug-in, également appelé plug-in Android-KMP. L'utilisation du plug-in com.android.library
pour KMP ne sera plus prise en charge par JetBrains et ne bénéficiera plus des futures mises à jour et améliorations.
Pour migrer vers ce plug-in, consultez la section Appliquer le plug-in Android-KMP.
Principales caractéristiques et différences
Le plug-in Android-KMP est spécialement conçu pour les projets KMP et diffère du plug-in com.android.library
standard sur plusieurs aspects clés :
Architecture à variante unique : le plug-in utilise une seule variante, ce qui supprime la prise en charge des types de produit et des types de compilation. La configuration est ainsi simplifiée et les performances de compilation améliorées.
Optimisé pour KMP : le plug-in est conçu pour les bibliothèques KMP. Il se concentre sur le code Kotlin partagé et l'interopérabilité, et ne prend pas en charge les compilations natives spécifiques à Android, AIDL et RenderScript.
Tests désactivés par défaut : les tests unitaires et les tests d'appareil (instrumentation) sont désactivés par défaut pour améliorer la vitesse de compilation. Vous pouvez les activer si nécessaire.
Pas d'extension Android de premier niveau : la configuration est gérée avec un bloc
androidLibrary
dans le DSL Gradle KMP, ce qui permet de maintenir une structure de projet KMP cohérente. Aucun blocage d'extensionandroid
de premier niveau n'est défini.Compilation Java activée : la compilation Java est désactivée par défaut. Pour l'activer, utilisez
withJava()
dans le blocandroidLibrary
. Cela permet de réduire les temps de compilation lorsque la compilation Java n'est pas nécessaire.
Avantages du plug-in de bibliothèque Android-KMP
Le plug-in Android-KMP offre les avantages suivants pour les projets KMP :
Amélioration des performances et de la stabilité de la compilation : elle est conçue pour optimiser la vitesse de compilation et améliorer la stabilité dans les projets KMP. L'accent mis sur les workflows KMP contribue à un processus de compilation plus efficace et plus fiable.
Intégration IDE améliorée : elle offre une meilleure saisie semi-automatique du code, une meilleure navigation, un meilleur débogage et une meilleure expérience globale pour les développeurs lorsqu'ils travaillent avec les bibliothèques KMP Android.
Configuration de projet simplifiée : le plug-in simplifie la configuration des projets KMP en supprimant les complexités spécifiques à Android, comme les variantes de compilation. Cela permet d'obtenir des fichiers de compilation plus clairs et plus faciles à gérer. Auparavant, l'utilisation du plug-in
com.android.library
dans un projet KMP pouvait créer des noms de source set déroutants, tels queandroidAndroidTest
. Cette convention de dénomination était moins intuitive pour les développeurs connaissant les structures de projet KMP standards.
Appliquer le plug-in Android-KMP à un module existant
Pour appliquer le plug-in Android-KMP à un module de bibliothèque KMP existant, procédez comme suit :
Déclarez les plug-ins dans le catalogue de versions. Ouvrez le fichier TOML du catalogue de versions (généralement
gradle/libs.versions.toml
) et ajoutez la section des définitions de plug-in :# To check the version number of the latest Kotlin release, go to # https://kotlinlang.org/docs/releases.html [versions] androidGradlePlugin = "8.12.0" kotlin = "KOTLIN_VERSION" [plugins] kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } android-kotlin-multiplatform-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "androidGradlePlugin" }
Appliquez la déclaration du plug-in dans le fichier de compilation racine. Ouvrez le fichier
build.gradle.kts
situé dans le répertoire racine de votre projet. Ajoutez les alias de plug-in au blocplugins
à l'aide deapply false
. Cela rend les alias de plug-in disponibles pour tous les sous-projets sans appliquer la logique du plug-in au projet racine lui-même.Kotlin
// Root build.gradle.kts file plugins { alias(libs.plugins.kotlin.multiplatform) apply false // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) apply false }
Groovy
// Root build.gradle file plugins { alias(libs.plugins.kotlin.multiplatform) apply false // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) apply false }
Appliquez le plug-in dans un fichier de compilation de module de bibliothèque KMP. Ouvrez le fichier
build.gradle.kts
dans votre module de bibliothèque KMP et appliquez le plug-in en haut de votre fichier dans le blocplugins
:Kotlin
// Module-specific build.gradle.kts file plugins { alias(libs.plugins.kotlin.multiplatform) // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) }
Groovy
// Module-specific build.gradle file plugins { alias(libs.plugins.kotlin.multiplatform) // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) }
Configurez la cible Android KMP. Configurez le bloc Kotlin Multiplatform (
kotlin
) pour définir la cible Android. Dans le blockotlin
, spécifiez la cible Android à l'aide deandroidLibrary
:Kotlin
kotlin { androidLibrary { namespace = "com.example.kmpfirstlib" compileSdk = 33 minSdk = 24 withJava() // enable java compilation support withHostTestBuilder {}.configure {} withDeviceTestBuilder { sourceSetTreeName = "test" } compilations.configureEach { compilerOptions.configure { jvmTarget.set( org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8 ) } } } sourceSets { androidMain { dependencies { // Add Android-specific dependencies here } } getByName("androidHostTest") { dependencies { } } getByName("androidDeviceTest") { dependencies { } } } // ... other targets (JVM, iOS, etc.) ... }
Groovy
kotlin { androidLibrary { namespace = "com.example.kmpfirstlib" compileSdk = 33 minSdk = 24 withJava() // enable java compilation support withHostTestBuilder {}.configure {} withDeviceTestBuilder { it.sourceSetTreeName = "test" } compilations.configureEach { compilerOptions.options.jvmTarget.set( org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8 ) } } sourceSets { androidMain { dependencies { } } androidHostTest { dependencies { } } androidDeviceTest { dependencies { } } } // ... other targets (JVM, iOS, etc.) ... }
Appliquez les modifications. Après avoir appliqué le plug-in et configuré le bloc
kotlin
, synchronisez votre projet Gradle pour appliquer les modifications.
Recommandations personnalisées
- Remarque : Le texte du lien s'affiche lorsque JavaScript est désactivé
- Configurer votre environnement
- Ajouter un module KMP à un projet