Kotlinx.serialization: Compilation time error: Unresolved reference: KotlinxSerializer

Created on 11 Jul 2019  路  1Comment  路  Source: Kotlin/kotlinx.serialization

Kotlin multiplatform project.

common build.gradle:

plugins {
    id 'kotlin-multiplatform' version '1.3.40'
    id 'kotlinx-serialization' version '1.3.40'
}

apply plugin: 'kotlin-android-extensions'

def ktor_version = '1.2.2'
def kotlinx_coroutines_version = '1.3.0-M2'
def serialization_version = '0.11.0'
def kodein_version = '6.3.2'

repositories {
    google()
    jcenter()
    mavenCentral()
    maven { url "https://kotlin.bintray.com/kotlinx" }
    maven { url "https://kotlin.bintray.com/kotlin/kotlinx" }
}

kotlin {
    targets {
        final def iOSTarget = System.getenv('SDK_NAME')?.startsWith("iphoneos") \
                              ? presets.iosArm64 : presets.iosX64

        fromPreset(presets.iosArm64, 'ios') {
            binaries {
                framework()
            }
        }

        fromPreset(presets.jvm, 'android')
    }

    sourceSets {
        commonMain.dependencies {
            api 'org.jetbrains.kotlin:kotlin-stdlib-common'

            implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$kotlinx_coroutines_version"

            implementation "io.ktor:ktor-client-core:$ktor_version"
            implementation "io.ktor:ktor-client-json:$ktor_version"
            implementation "io.ktor:ktor-client-serialization:$ktor_version"

            implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$serialization_version"

            implementation "org.kodein.di:kodein-di-core:$kodein_version"
            implementation "org.kodein.di:kodein-di-erased:$kodein_version"

        }

        androidMain.dependencies {
            api 'org.jetbrains.kotlin:kotlin-stdlib'

            implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlinx_coroutines_version"

            implementation "io.ktor:ktor-client-android:$ktor_version"
            implementation "io.ktor:ktor-client-json-jvm:$ktor_version"
            implementation "io.ktor:ktor-client-okhttp:$ktor_version"

            implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serialization_version"
        }

        iosMain.dependencies {
            implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-native:$kotlinx_coroutines_version"

            implementation "io.ktor:ktor-client-ios:$ktor_version"
            implementation "io.ktor:ktor-client-json-native:$ktor_version"
            implementation "io.ktor:ktor-client-core-native:$ktor_version"

            implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$serialization_version"
        }
    }
}

dependencies {
}

// workaround for https://youtrack.jetbrains.com/issue/KT-27170
configurations {
    compileClasspath
}

task packForXCode(type: Sync) {
    def buildType = project.findProperty('kotlin.build.type') ?: 'DEBUG'
    def target = project.findProperty('kotlin.target') ?: 'ios'
    dependsOn kotlin.targets."$target".binaries.getFramework(buildType).linkTask

    doLast {
        def srcFile = kotlin.targets."$target".binaries.getFramework(buildType).outputFile
        def targetDir = getProperty('configuration.build.dir')
        copy {
            from srcFile.parent
            into targetDir
            include 'app.framework/**'
            include 'app.framework.dSYM'
        }
    }
}

tasks.build.dependsOn packForXCode

settings.gradle:

pluginManagement {
    resolutionStrategy {
        eachPlugin {
            if (requested.id.id == "kotlin-multiplatform") {
                useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${requested.version}")
            }
            if (requested.id.id == "kotlinx-serialization") {
                useModule("org.jetbrains.kotlin:kotlin-serialization:${requested.version}")
            }
        }
    }
}

include ':app'

def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()

def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
    pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}

plugins.each { name, path ->
    def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
    include ":$name"
    project(":$name").projectDir = pluginDirectory
}

include ':common'
project(":common").projectDir = new File("../common")

enableFeaturePreview('GRADLE_METADATA')

Gradle syncing is successful. But when i try to launch an android app, unresolved refereces appear.

Unresolved reference: KotlinxSerializer | 聽
-- | --

ktor question

Most helpful comment

KotlinxSerializer is a ktor adapter class and Ktor artifact was renamed; use implementation "io.ktor:ktor-client-serialization-jvm:$ktor_version" for JVM, implementation "io.ktor:ktor-client-serialization:$ktor_version" for common, implementation "io.ktor:ktor-client-serialization-native:$ktor_version" for ios.

>All comments

KotlinxSerializer is a ktor adapter class and Ktor artifact was renamed; use implementation "io.ktor:ktor-client-serialization-jvm:$ktor_version" for JVM, implementation "io.ktor:ktor-client-serialization:$ktor_version" for common, implementation "io.ktor:ktor-client-serialization-native:$ktor_version" for ios.

Was this page helpful?
0 / 5 - 0 ratings