Kotlin Multiplatform 具有 Gradle 外掛程式,可設定程式庫模組。
com.android.kotlin.multiplatform.library
外掛程式是官方替代方案,可取代先前使用一般 Android 程式庫 Gradle 外掛程式 (com.android.library
) 將 Android 目標新增至 KMP 程式庫的方法。
我們已淘汰先前的做法,改用外掛程式 (也稱為 Android-KMP 外掛程式)。JetBrains 將不再支援繼續使用 KMP 外掛程式,且該外掛程式不會再有任何更新和改良。com.android.library
如要遷移至這個外掛程式,請參閱「套用 Android-KMP 外掛程式」一節。
主要功能和差異
Android-KMP 外掛程式專為 KMP 專案量身打造,與標準 com.android.library
外掛程式在幾個重要方面有所不同:
單一變數架構:外掛程式會使用單一變數,移除對變種版本和建構類型的支援,簡化設定並提升建構效能。
專為 KMP 最佳化:這個外掛程式專為 KMP 程式庫設計,著重於共用的 Kotlin 程式碼和互通性,省略對 Android 專用原生建構作業、AIDL 和 RenderScript 的支援。
預設停用測試:為提升建構速度,單元和裝置 (檢測設備) 測試預設都會停用。您可以視需要啟用這些功能。
沒有頂層 Android 擴充功能:設定是在 Gradle KMP DSL 內的
androidLibrary
區塊中處理,可維持一致的 KMP 專案結構。沒有頂層android
擴充功能區塊。選擇啟用 Java 編譯:Java 編譯功能預設為停用。如要啟用,請在
androidLibrary
區塊中使用withJava()
。這樣一來,就不需要進行 Java 編譯,可縮短建構時間。
Android-KMP 程式庫外掛程式的優點
Android-KMP 外掛程式可為 KMP 專案提供下列優點:
提升建構效能和穩定性:專為最佳化建構速度而設計,可提升 KMP 專案的穩定性。這項功能著重於 KMP 工作流程,有助於提升建構程序的效率和可靠性。
強化 IDE 整合:使用 KMP Android 程式庫時,可提供更優質的程式碼完成、導覽、偵錯和整體開發人員體驗。
簡化專案設定:這個外掛程式可移除建構變數等 Android 專屬的複雜項目,簡化 KMP 專案的設定。這樣一來,建構檔案就會更乾淨,也更容易維護。先前在 KMP 專案中使用
com.android.library
外掛程式時,可能會建立令人困惑的來源集名稱,例如androidAndroidTest
。對於熟悉標準 KMP 專案結構的開發人員來說,這個命名慣例較不直覺。
將 Android-KMP 外掛程式套用至現有模組
如要將 Android-KMP 外掛程式套用至現有的 KMP 程式庫模組,請按照下列步驟操作:
在版本目錄中聲明外掛程式。開啟版本目錄 TOML 檔案 (通常為
gradle/libs.versions.toml
),並新增外掛程式定義區段:# 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" }
在根層級建構檔案中套用外掛程式宣告。開啟專案根目錄中的
build.gradle.kts
檔案。使用apply false
將外掛程式別名新增至plugins
區塊。這樣一來,所有子專案都能使用外掛程式別名,不必將外掛程式邏輯套用至根專案本身。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 }
在 KMP 程式庫模組建構檔案中套用外掛程式。開啟 KMP 程式庫模組中的
build.gradle.kts
檔案,並在plugins
區塊內的檔案頂端套用外掛程式: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 目標。設定 Kotlin Multiplatform 區塊 (
kotlin
) 來定義 Android 目標。在kotlin
區塊中,使用androidLibrary
指定 Android 目標: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.) ... }
套用變更。套用外掛程式並設定
kotlin
區塊後,請同步處理 Gradle 專案以套用變更。
為您推薦
- 注意:系統會在 JavaScript 關閉時顯示連結文字
- 設定環境
- 在專案中新增 KMP 模組