Kotlin Multiplatform имеет плагин Gradle для настройки модуля библиотеки .
Плагин com.android.kotlin.multiplatform.library
является официальной заменой предыдущего метода добавления целей Android в библиотеки KMP с использованием обычного плагина Gradle для Android-библиотеки ( com.android.library
).
Предыдущий подход теперь устарел в пользу плагина, также называемого плагином Android-KMP . JetBrains больше не будет поддерживать плагин com.android.library
для KMP, и вы не сможете воспользоваться будущими обновлениями и улучшениями.
Чтобы перейти на этот плагин, обратитесь к разделу Применение плагина Android-KMP .
Основные особенности и отличия
Плагин Android-KMP разработан специально для проектов KMP и отличается от стандартного плагина com.android.library
по нескольким ключевым аспектам:
Архитектура с одним вариантом: плагин использует один вариант, исключая поддержку разновидностей продукта и типов сборки, что упрощает настройку и повышает производительность сборки.
Оптимизировано для KMP: плагин разработан для библиотек KMP, фокусируется на общем коде Kotlin и взаимодействии, исключая поддержку собственных сборок, специфичных для Android, AIDL и RenderScript.
Тесты отключены по умолчанию: тесты модулей и устройств (инструментария) по умолчанию отключены для повышения скорости сборки. При необходимости их можно включить.
Нет расширения Android верхнего уровня: конфигурация обрабатывается блоком
androidLibrary
в Gradle KMP DSL, что обеспечивает согласованную структуру проекта KMP. Блок расширенияandroid
верхнего уровня отсутствует.Включенная компиляция Java: компиляция Java по умолчанию отключена. Используйте
withJava()
в блокеandroidLibrary
, чтобы включить её. Это ускоряет сборку, когда компиляция Java не требуется.
Преимущества плагина библиотеки Android-KMP
Плагин Android-KMP обеспечивает следующие преимущества для проектов KMP:
Улучшенная производительность и стабильность сборки: разработан для оптимизации скорости сборки и повышения стабильности в проектах KMP. Ориентация на рабочие процессы KMP способствует более эффективному и надежному процессу сборки.
Улучшенная интеграция с IDE: обеспечивает улучшенное автодополнение кода, навигацию, отладку и общий опыт разработки при работе с библиотеками KMP для Android.
Упрощённая конфигурация проекта: плагин упрощает конфигурацию проектов KMP, устраняя сложности, характерные для Android, такие как варианты сборки. Это приводит к созданию более понятных и удобных для поддержки файлов сборки. Ранее использование плагина
com.android.library
в проекте KMP могло приводить к появлению запутанных имён исходных наборов, например,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
, расположенный в корневом каталоге вашего проекта. Добавьте псевдонимы плагина в блокplugins
, используяapply false
. Это сделает псевдонимы плагина доступными для всех подпроектов, не применяя логику плагина к самому корневому проекту.Котлин
// 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 }
Круто
// 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. Откройте файл
build.gradle.kts
в модуле библиотеки KMP и примените плагин в начале файла в блокеplugins
:Котлин
// Module-specific build.gradle.kts file plugins { alias(libs.plugins.kotlin.multiplatform) // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) }
Круто
// 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
укажите целевой проект Android с помощьюandroidLibrary
:Котлин
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.) ... }
Круто
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 в проект