Kotlin Multiplatform hat ein Gradle-Plug-in zum Konfigurieren des Bibliotheksmoduls.
Das com.android.kotlin.multiplatform.library
-Plug-in ist der offizielle Ersatz für die bisherige Methode, Android-Ziele mithilfe des regulären Gradle-Plug-ins für Android-Bibliotheken (com.android.library
) zu KMP-Bibliotheken hinzuzufügen.
Der bisherige Ansatz wird jetzt zugunsten des Plug-ins, auch Android-KMP-Plug-in genannt, eingestellt. Die weitere Verwendung des com.android.library
-Plug-ins für KMP wird von JetBrains nicht mehr unterstützt und profitiert nicht von zukünftigen Updates und Verbesserungen.
Informationen zur Migration zu diesem Plug-in finden Sie im Abschnitt Android-KMP-Plug-in anwenden.
Wichtige Funktionen und Unterschiede
Das Android-KMP-Plugin ist speziell auf KMP-Projekte zugeschnitten und unterscheidet sich in mehreren wichtigen Punkten vom Standard-com.android.library
-Plugin:
Architektur mit einer einzelnen Variante:Das Plug‑in verwendet eine einzelne Variante. Dadurch wird die Unterstützung für Produktvarianten und Build-Typen entfernt, was die Konfiguration vereinfacht und die Build-Leistung verbessert.
Für KMP optimiert:Das Plug-in ist für KMP-Bibliotheken konzipiert und konzentriert sich auf gemeinsamen Kotlin-Code und Interoperabilität. Es bietet keine Unterstützung für Android-spezifische native Builds, AIDL und RenderScript.
Tests standardmäßig deaktiviert:Sowohl Unit- als auch Gerätetests (Instrumentierungstests) sind standardmäßig deaktiviert, um die Build-Geschwindigkeit zu erhöhen. Sie können sie bei Bedarf aktivieren.
Keine Android-Erweiterung auf oberster Ebene:Die Konfiguration erfolgt mit einem
androidLibrary
-Block innerhalb der Gradle KMP-DSL, wodurch eine konsistente KMP-Projektstruktur beibehalten wird. Es gibt keinen Block für die Erweiterungandroid
auf oberster Ebene.Java-Kompilierung mit Opt-in:Die Java-Kompilierung ist standardmäßig deaktiviert. Verwenden Sie
withJava()
imandroidLibrary
-Block, um die Funktion zu aktivieren. Dadurch werden die Build-Zeiten verkürzt, wenn keine Java-Kompilierung erforderlich ist.
Vorteile des Android-KMP-Bibliotheks-Plug-ins
Das Android-KMP-Plug-in bietet die folgenden Vorteile für KMP-Projekte:
Verbesserte Build-Leistung und ‑Stabilität:Es wurde für optimierte Build-Geschwindigkeiten und verbesserte Stabilität in KMP-Projekten entwickelt. Der Fokus auf KMP-Workflows trägt zu einem effizienteren und zuverlässigeren Build-Prozess bei.
Verbesserte IDE-Integration:Bessere Vervollständigung von Code, Navigation, Fehlerbehebung und allgemeine Entwicklungsumgebung bei der Arbeit mit KMP-Android-Bibliotheken.
Vereinfachte Projektkonfiguration:Das Plug-in vereinfacht die Konfiguration für KMP-Projekte, indem es Android-spezifische Komplexitäten wie Build-Varianten entfernt. Das führt zu übersichtlicheren und besser wartbaren Build-Dateien. Bisher konnten durch die Verwendung des
com.android.library
-Plug-ins in KMP-Projekten verwirrende Quellsetnamen wieandroidAndroidTest
entstehen. Diese Namenskonvention war für Entwickler, die mit Standard-KMP-Projektstrukturen vertraut sind, weniger intuitiv.
Android-KMP-Plug-in auf ein vorhandenes Modul anwenden
So wenden Sie das Android-KMP-Plug-in auf ein vorhandenes KMP-Bibliotheksmodul an:
Plug-ins im Versionskatalog deklarieren: Öffnen Sie die TOML-Datei des Versionskatalogs (normalerweise
gradle/libs.versions.toml
) und fügen Sie den Abschnitt mit den Plug-in-Definitionen hinzu:# 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" }
Plug-in-Deklaration in der Stamm-Build-Datei anwenden Öffnen Sie die Datei
build.gradle.kts
im Stammverzeichnis Ihres Projekts. Fügen Sie die Plug-in-Aliasse demplugins
-Block mitapply false
hinzu. Dadurch sind die Plug-in-Aliase für alle Unterprojekte verfügbar, ohne dass die Plug-in-Logik auf das Stammprojekt selbst angewendet wird.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 }
Wenden Sie das Plug-in in der Build-Datei eines KMP-Bibliotheksmoduls an. Öffnen Sie die Datei
build.gradle.kts
in Ihrem KMP-Bibliotheksmodul und wenden Sie das Plug-in oben in der Datei im Blockplugins
an: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) }
Android-KMP-Ziel konfigurieren Konfigurieren Sie den Kotlin Multiplatform-Block (
kotlin
), um das Android-Ziel zu definieren. Geben Sie im Blockkotlin
das Android-Ziel mitandroidLibrary
an: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.) ... }
Änderungen übernehmen Nachdem Sie das Plug-in angewendet und den
kotlin
-Block konfiguriert haben, synchronisieren Sie Ihr Gradle-Projekt, um die Änderungen zu übernehmen.
Empfehlungen für dich
- Hinweis: Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Umgebung einrichten
- KMP-Modul zu einem Projekt hinzufügen