使用Kotlin / Multiplatform 1.3.11 ,我有以下build.gradle
:
fromPreset(presets.jvm, 'jvm')
fromPreset(presets.android, 'jvm') // reusing jvm sources for android platform impl
所以基本上我想将jvm
目标的所有代码重用于android
目标。
使用刚发布的Kotlin / Multiplatform 1.3.20 ,现在出现错误:
目标'jvm'已经存在,但不是使用'android'预设创建的。要配置它,请在
kotlin.targets
中按名称访问它,或使用预设函数'jvm' 打开文件
我试图迁移到新语法:
jvm()
android() {
sourceSets.add(kotlin.targets.jvm.compilations.main.defaultSourceSet)
}
,但不会将jvm defaultSourceSet重复用于Android目标:
预期的类“ URL”在模块中没有实际的声明
因此它实际上并不使用默认的jvm源集,并且不会引发Groovy语法错误。
怎么了?
答案 0 :(得分:2)
实际上,最好的解决方案是拥有一些通用的源集,并为每个平台使用一个源集:
commonJvmMain {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
}
}
jvmMain {
dependsOn commonJvmMain
}
androidMain {
dependsOn commonJvmMain
}
将共享代码放入commonJvmMain
源集目录中。