让kotlinx序列化在多平台项目中工作
我正在Kotlin 1.4-M2的多平台项目中进行Kotlin seriazliation的试驾,遵循github的教程,但我没有得到要编译的序列化位 这是我的让kotlinx序列化在多平台项目中工作,kotlin,kotlin-multiplatform,kotlinx.serialization,kotlin-gradle-plugin,Kotlin,Kotlin Multiplatform,Kotlinx.serialization,Kotlin Gradle Plugin,我正在Kotlin 1.4-M2的多平台项目中进行Kotlin seriazliation的试驾,遵循github的教程,但我没有得到要编译的序列化位 这是我的build.gradle.kts plugins { val kotlinVersion = "1.4-M2" kotlin("multiplatform") version kotlinVersion kotlin("plugin.serialization") version kotlinVersion }
build.gradle.kts
plugins {
val kotlinVersion = "1.4-M2"
kotlin("multiplatform") version kotlinVersion
kotlin("plugin.serialization") version kotlinVersion
}
我已经在一个简单的数据类上试过了
@Serializable
data class Test(
val blah: Int = 0
)
import kotlinx.serialization.json.json我在Slack上得到了一些帮助,谢谢Sergey
显示与EAP兼容的版本
或里程碑版本。您应该使用序列化运行时
版本0.20.0-1.4-M2。请注意,对于此版本,您需要添加
commonMain中kotlinx序列化运行时的单一依赖项
源代码集,而不是对
kotlinx序列化运行时通用和平台部分。见
此处仅指定一次依赖项部分:
总之,我的插件应该和我的Kotlin版本相匹配
plugins {
val kotlinVersion = "1.4-M2"
kotlin("multiplatform") version kotlinVersion
kotlin("plugin.serialization") version kotlinVersion
}
然后在SourceSet下,我应该使用单个依赖项,而不是每个平台使用一个依赖项
sourceSets {
val serializationVersion = "0.20.0-1.4-M2"
val commonMain by getting {
dependencies {
implementation(kotlin("stdlib-common"))
implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serializationVersion")
}
}
JVM和JS Main不应该有任何序列化插件,所以应该删除这些行
val jvmMain by getting {
dependencies {
implementation(kotlin("stdlib-jdk8"))
implementation(kotlin("reflect"))
// implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serializationVersion") <<-- remove this
val jvmMain通过获取{
依赖关系{
实施(kotlin(“stdlib-jdk8”))
实施(kotlin(“反映”))
//实现(“org.jetbrains.kotlinx:kotlinx序列化运行时:$serializationVersion”)我在Slack上得到了一些帮助,谢谢Sergey
显示与EAP兼容的版本
或里程碑版本。您应该使用序列化运行时
版本0.20.0-1.4-M2。请注意,对于此版本,您需要添加
commonMain中kotlinx序列化运行时的单一依赖项
源代码集,而不是对
kotlinx序列化运行时公用部分和平台部分。请参阅
此处仅指定一次依赖项部分:
总之,我的插件应该和我的Kotlin版本相匹配
plugins {
val kotlinVersion = "1.4-M2"
kotlin("multiplatform") version kotlinVersion
kotlin("plugin.serialization") version kotlinVersion
}
然后在SourceSet下,我应该使用单个依赖项,而不是每个平台使用一个依赖项
sourceSets {
val serializationVersion = "0.20.0-1.4-M2"
val commonMain by getting {
dependencies {
implementation(kotlin("stdlib-common"))
implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serializationVersion")
}
}
JVM和JS Main不应该有任何序列化插件,所以应该删除这些行
val jvmMain by getting {
dependencies {
implementation(kotlin("stdlib-jdk8"))
implementation(kotlin("reflect"))
// implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serializationVersion") <<-- remove this
val jvmMain通过获取{
依赖关系{
实施(kotlin(“stdlib-jdk8”))
实施(kotlin(“反映”))
//实现(“org.jetbrains.kotlinx:kotlinx序列化运行时:$serializationVersion”)
val jsMain by getting {
dependencies {
implementation(kotlin("stdlib-js"))
// implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:$serializationVersion") <<-- remove this
}
}