Kotlin Multiplatform ha un plug-in Gradle per configurare il modulo della libreria.
Il plug-in com.android.kotlin.multiplatform.library
è la sostituzione ufficiale
del metodo precedente di aggiunta di target Android alle librerie KMP
utilizzando il normale plug-in Gradle per le librerie Android (com.android.library
).
L'approccio precedente è ora obsoleto a favore del plug-in, noto anche come plug-in Android-KMP. L'utilizzo del plug-in com.android.library
per KMP non sarà più supportato da JetBrains e non beneficerà di
futuri aggiornamenti e miglioramenti.
Per eseguire la migrazione a questo plug-in, consulta la sezione Applicare il plug-in Android-KMP.
Funzionalità e differenze principali
Il plug-in Android-KMP è progettato appositamente per i progetti KMP e si differenzia
dal plug-in com.android.library
standard per diversi aspetti chiave:
Architettura a singola variante:il plug-in utilizza una singola variante, rimuovendo il supporto per le varianti di prodotto e i tipi di build, il che semplifica la configurazione e migliora il rendimento della build.
Ottimizzato per KMP: il plug-in è progettato per le librerie KMP, con particolare attenzione al codice Kotlin condiviso e all'interoperabilità, omettendo il supporto per build native specifiche per Android, AIDL e RenderScript.
Test disattivati per impostazione predefinita: sia i test delle unità sia quelli del dispositivo (strumentazione) sono disattivati per impostazione predefinita per migliorare la velocità di compilazione. Puoi attivarli se necessario.
Nessuna estensione Android di primo livello: la configurazione viene gestita con un blocco
androidLibrary
all'interno di Gradle KMP DSL, mantenendo una struttura di progetto KMP coerente. Non è presente alcun blocco dell'estensioneandroid
di primo livello.Compilazione Java con attivazione: la compilazione Java è disattivata per impostazione predefinita. Utilizza
withJava()
nel bloccoandroidLibrary
per abilitarlo. In questo modo i tempi di compilazione migliorano quando non è necessaria la compilazione Java.
Vantaggi del plug-in della libreria Android-KMP
Il plug-in Android-KMP offre i seguenti vantaggi per i progetti KMP:
Prestazioni e stabilità della build migliorate: è progettato per velocità di build ottimizzate e stabilità migliorata all'interno dei progetti KMP. L'attenzione ai flussi di lavoro KMP contribuisce a un processo di build più efficiente e affidabile.
Integrazione IDE avanzata:offre un migliore completamento del codice, navigazione, debug ed esperienza complessiva degli sviluppatori quando si lavora con le librerie KMP Android.
Configurazione semplificata del progetto: il plug-in semplifica la configurazione per i progetti KMP rimuovendo le complessità specifiche di Android, come le varianti di build. In questo modo, i file di build saranno più puliti e facili da gestire. In precedenza, l'utilizzo del plug-in
com.android.library
nel progetto KMP poteva creare nomi di set di origine che generavano confusione, ad esempioandroidAndroidTest
. Questa convenzione di denominazione era meno intuitiva per gli sviluppatori che conoscono le strutture standard dei progetti KMP.
Applica il plug-in Android-KMP a un modulo esistente
Per applicare il plug-in Android-KMP a un modulo della libreria KMP esistente, segui questi passaggi:
Dichiarare i plug-in nel catalogo delle versioni. Apri il file TOML del catalogo delle versioni (di solito
gradle/libs.versions.toml
) e aggiungi la sezione delle definizioni dei 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" }
Applica la dichiarazione del plug-in nel file di build principale. Apri il file
build.gradle.kts
che si trova nella directory principale del progetto. Aggiungi gli alias del plug-in al bloccoplugins
utilizzandoapply false
. In questo modo, gli alias del plug-in sono disponibili per tutti i progetti secondari senza applicare la logica del plug-in al progetto principale stesso.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 }
Applica il plug-in in un file di build del modulo della libreria KMP. Apri il file
build.gradle.kts
nel modulo della libreria KMP e applica il plug-in nella parte superiore del file all'interno del bloccoplugins
: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) }
Configura la destinazione KMP di Android. Configura il blocco Kotlin Multiplatform (
kotlin
) per definire il target Android. All'interno del bloccokotlin
, specifica il target Android utilizzandoandroidLibrary
: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.) ... }
Applica modifiche. Dopo aver applicato il plug-in e configurato il blocco
kotlin
, sincronizza il progetto Gradle per applicare le modifiche.
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Configurare l'ambiente
- Aggiungere il modulo KMP a un progetto