Hi All! Been trying to migrate to 1.4-M1 but have...
# multiplatform
s
Hi All! Been trying to migrate to 1.4-M1 but have issues when it comes to JsonFeature install.
Copy code
Unresolved reference: json
Unresolved reference: json
Unresolved reference: JsonFeature
Unresolved reference: serializer
Unresolved reference: KotlinxSerializer
Unresolved reference: JsonFeature
Unresolved reference: serializer
Unresolved reference: KotlinxSerializer
Every time I build I get the above errors. As far as I can see im not missing anything and my IDE doesnt complain. These are the dependacies I have installed.
Copy code
const val kotlin = "1.4-M1"
    const val ktor = "1.3.2-1.4-M1-2"
    const val coroutinesCore = "1.3.5-1.4-M1"
    const val serializationCommon = "0.20.0-1.4-M1"
The network request itself is very simple.
Copy code
private val client: HttpClient by lazy {
        return@lazy HttpClient {
            install(JsonFeature) {
                serializer = KotlinxSerializer()
            }
        }
    }

    override fun getVersion(onSuccess: (Version) -> Unit, onError: (KarhooError) -> Unit) {
        coroutineScope.launch {
            val resp: Version = client.get(VERSION_METHOD)
            onSuccess.invoke(resp)
        }
    }
The imports are added with no issues and I can see the build libs. Just very lost as to why it can't locate the files during a build?
Copy code
plugins {
    id("com.android.library")
    id("org.jetbrains.kotlin.multiplatform")
    id("kotlin-dce-js")
    kotlin("plugin.serialization")
}

kotlin {

    android()

    js {
        targets {
            produceExecutable()
            browser {
                webpackTask {
                    mode = org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode.DEVELOPMENT
                    sourceMaps = true
                }
            }
        }
    }

    sourceSets["commonMain"].dependencies {
        implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-common:${Versions.coroutinesCore}")
        implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:${Versions.serializationCommon}")
        implementation("io.ktor:ktor-client-core:${Versions.ktor}")
        implementation("io.ktor:ktor-client-json:${Versions.ktor}")
        implementation("io.ktor:ktor-client-serialization:${Versions.ktor}")
        implementation("org.jetbrains.kotlin:kotlin-stdlib-common")
    }

    sourceSets["jsMain"].dependencies {
        implementation(kotlin("stdlib-js"))
        implementation("io.ktor:ktor-client-js:${Versions.ktor}")
        implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-js:${Versions.coroutinesCore}")
        implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:${Versions.serializationCommon}")
        implementation(npm("text-encoding"))
        implementation(npm("abort-controller"))
        implementation(npm("utf-8-validate"))
        implementation(npm("bufferutil"))
        implementation(npm("fs"))
    }
}

android {
    compileSdkVersion(App.compileSdk)

    sourceSets {
        getByName("main") {
            manifest.srcFile("src/androidMain/AndroidManifest.xml")
            java.srcDirs("src/androidMain/kotlin")
            res.srcDirs("src/androidMain/res")
        }
    }

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.coroutinesCore}")
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:${Versions.serializationCommon}")
    implementation("io.ktor:ktor-client-android:${Versions.ktor}")
    implementation("io.ktor:ktor-client-json-jvm:${Versions.ktor}")
    implementation("io.ktor:ktor-client-serialization-jvm:${Versions.ktor}")

    implementation("androidx.lifecycle:lifecycle-extensions:${Versions.lifecycleVersion}")
    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:${Versions.lifecycleVersion}")

    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    implementation("androidx.core:core-ktx:+")
}
Managed to get this working. It involved a lot of library removal and cache clearing. But it now works and I can make network requests on Android / iOS and Web. Im am still a bit Meh that th JS library it produces is nearly 1.1mb though