Я думаю, что достиг этого с помощью следующих шагов:
- Создайте модуль KMP с помощью Android Studio «Новый->Модуль->Общий модуль KMP»
- Измените build.gradle.kts и удалите исходный набор, специфичный для платформы. объявления
- Удалить созданный Platform.kt из исходного набора commonMain
- Sync. На этом этапе сборка завершается успешно, но папки платформы (androidMain, iosMain,..) остаются в модуле, и их невозможно удалить из проводника проекта AS.
- Удалите папки вручную: откройте терминал и запустите rm -rf domain/src/android*, rm -rf domain/src/ios*
- Добавьте новый модуль в качестве зависимость от существующего модуля и убедитесь, что на новые классы можно ссылаться и выполнять их во время выполнения.
Вот мой build.gradle.kts:
plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidKotlinMultiplatformLibrary)
alias(libs.plugins.androidLint)
}
kotlin {
jvm()
androidLibrary {
namespace = "com.example.domain"
compileSdk = 36
minSdk = 24
withHostTestBuilder {
}
withDeviceTestBuilder {
sourceSetTreeName = "test"
}.configure {
instrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
}
val xcfName = "domainKit"
iosX64 {
binaries.framework {
baseName = xcfName
}
}
iosArm64 {
binaries.framework {
baseName = xcfName
}
}
iosSimulatorArm64 {
binaries.framework {
baseName = xcfName
}
}
sourceSets {
commonMain {
dependencies {
implementation(libs.kotlin.stdlib)
// Add KMP dependencies here
}
}
commonTest {
dependencies {
implementation(libs.kotlin.test)
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... ceset-only
Мобильная версия