Hello. I’m updating to kotlin and ktor 1.4.0 but `...
# ktor
m
Hello. I’m updating to kotlin and ktor 1.4.0 but
ktor-client-core-native
is not available yet. Is there an alternative repository?
a
You have to use
io.ktor:ktor-client-curl:1.4.0
instead of.
m
Nice, thanks for your help 👍
I had have the follow in my source sets:
Copy code
commonMain {
    dependencies {
        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 "io.ktor:ktor-client-logging:$ktor_version"
    }
}

androidMain {
    dependencies {
        implementation "io.ktor:ktor-client-core-jvm:$ktor_version"
        implementation "io.ktor:ktor-client-json-jvm:$ktor_version"
        implementation "io.ktor:ktor-client-serialization-jvm:$ktor_version"
        implementation "io.ktor:ktor-client-okhttp:$ktor_version"
        implementation "io.ktor:ktor-client-logging-jvm:$ktor_version"
        implementation "org.slf4j:slf4j-simple:$slf4j_version"
    }
}

iosMain {
    dependencies {
        implementation "io.ktor:ktor-client-ios:$ktor_version"
        implementation "io.ktor:ktor-client-core-native:$ktor_version"
        implementation "io.ktor:ktor-client-json-native:$ktor_version"
        implementation "io.ktor:ktor-client-serialization-native:$ktor_version"
        implementation "io.ktor:ktor-client-logging-native:$ktor_version"
    }
}
Now it’s working removing the native ones for iOS, like this:
Copy code
commonMain {
    dependencies {
        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 "io.ktor:ktor-client-logging:$ktor_version"
    }
}

androidMain {
    dependencies {
        implementation "io.ktor:ktor-client-core-jvm:$ktor_version"
        implementation "io.ktor:ktor-client-json-jvm:$ktor_version"
        implementation "io.ktor:ktor-client-serialization-jvm:$ktor_version"
        implementation "io.ktor:ktor-client-okhttp:$ktor_version"
        implementation "io.ktor:ktor-client-logging-jvm:$ktor_version"
        implementation "org.slf4j:slf4j-simple:$slf4j_version"
    }
}

iosMain {
    dependencies {
        implementation "io.ktor:ktor-client-ios:$ktor_version"
    }
}
But I was not able to find the reason in the documentation
a
For android you have to use OkHttp
io.ktor:ktor-client-okhttp:1.4.0
r
actually
ktor-client-core
dependency in common should be enough. read the blogpost about changes in multiplatform https://blog.jetbrains.com/kotlin/2020/08/kotlin-1-4-released-with-a-focus-on-quality-and-performance/
a
io.ktor:ktor-client-curl
and
io.ktor:ktor-client-okhttp
must not be defined in common target 😉
r
those are engines, OP talks about client-core.
ktor-client-core
has to be defined in common and then you don’t have to define core-native or core-jvm for specific targets.
a
I’ve tried this. On macOS you have to add
io.ktor:ktor-client-curl
. Without this, build will not work.