toomanyeduardos
03/20/2019, 8:26 PMCould not resolve io.ktor:ktor-client-ios:1.2.0-alpha-2
there's a thread on ktor about it, but it hints to just dropping support for iOS.
Also, my versions of kotlin and gradle seem to be out of date.
What are the latest ones you're using?
kotlin.code.style=official
# gradle version
gradle_version = 3.2.1
# kotlin versions
kotlin_version = 1.3.21
kotlin_native_version = 1.3.11
ktor_version = 1.2.0-alpha-2
kotlinx_coroutines_version = 1.1.0
thanksorangy
kpgalligan
03/20/2019, 8:36 PMr4zzz4k
03/20/2019, 8:38 PMsettings.gradle
? enableFeaturePreview("GRADLE_METADATA")
Do you have <http://dl.bintray.com/kotlin/ktor|dl.bintray.com/kotlin/ktor>
in your repositories
section (also check that it's project's, not buildscript's one)?toomanyeduardos
03/20/2019, 8:39 PMpluginManagement {
resolutionStrategy {
eachPlugin {
if (requested.id.id == "kotlin-multiplatform") {
useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${requested.version}")
}
}
}
}
rootProject.name = 'PossibleDuplicates'
enableFeaturePreview('GRADLE_METADATA')
toomanyeduardos
03/20/2019, 8:39 PMrepositories {
mavenCentral()
maven { url '<https://plugins.gradle.org/m2/>' }
maven { url '<http://dl.bintray.com/kotlin/kotlin-eap>' }
maven { url "<https://kotlin.bintray.com/ktor>" }
maven { url "<https://dl.bintray.com/kotlin/kotlinx/>" }
maven { url "<https://kotlin.bintray.com/kotlinx>" }
jcenter()
google()
}
toomanyeduardos
03/20/2019, 8:44 PMr4zzz4k
03/20/2019, 8:47 PMbuild.gradle
with configuration of common and native sourceSet dependencies?
Everything you've shown seems correct.kpgalligan
03/20/2019, 8:49 PMtoomanyeduardos
03/20/2019, 8:49 PMbuildscript {
repositories {
mavenLocal()
maven { url '<https://plugins.gradle.org/m2/>' }
maven { url '<http://dl.bintray.com/kotlin/kotlin-eap>' }
jcenter()
google()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
}
}
repositories {
mavenCentral()
maven { url '<https://plugins.gradle.org/m2/>' }
maven { url '<http://dl.bintray.com/kotlin/kotlin-eap>' }
maven { url "<https://kotlin.bintray.com/ktor>" }
maven { url "<https://dl.bintray.com/kotlin/kotlinx/>" }
maven { url "<https://kotlin.bintray.com/kotlinx>" }
jcenter()
google()
}
group 'com.mysample.newproject'
version '0.0.2'
apply plugin: 'maven-publish'
apply plugin: 'kotlin-multiplatform'
apply plugin: 'kotlinx-serialization'
kotlin {
targets {
final def iOSTarget = System.getenv('SDK_NAME')?.startsWith("iphoneos") ? presets.iosArm64 : presets.iosX64
fromPreset(iOSTarget, 'ios') {
compilations.main.outputKinds('FRAMEWORK')
// compilations.main.embedBitcode BitcodeEmbeddingMode.BITCODE // for release binaries
// // or BitcodeEmbeddingMode.MARKER for debug binaries
}
fromPreset(presets.jvm, 'android')
}
sourceSets {
commonMain {
dependencies {
api 'org.jetbrains.kotlin:kotlin-stdlib-common'
}
}
commonTest {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-test-common'
implementation 'org.jetbrains.kotlin:kotlin-test-annotations-common'
}
}
androidMain {
dependencies {
api 'org.jetbrains.kotlin:kotlin-stdlib'
implementation("io.ktor:ktor-client-android:1.1.1")
}
}
androidTest {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-test'
implementation 'org.jetbrains.kotlin:kotlin-test-junit'
}
}
iosMain {
dependencies {
api 'org.jetbrains.kotlin:kotlin-stdlib'
}
}
iosTest {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-test'
}
}
}
}
configurations {
compileClasspath
}
dependencies {
commonMainImplementation ("io.ktor:ktor-client-core:$ktor_version")
androidMainImplementation("io.ktor:ktor-client-android:$ktor_version")
iosMainImplementation("io.ktor:ktor-client-ios:$ktor_version")
commonMainImplementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
commonMainImplementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.10.0"
}
task packForXCode(type: Sync) {
final File frameworkDir = new File(buildDir, "xcode-frameworks")
final String mode = project.findProperty("XCODE_CONFIGURATION")?.toUpperCase() ?: 'DEBUG'
inputs.property "mode", mode
dependsOn kotlin.targets.ios.compilations.main.linkTaskName("FRAMEWORK", mode)
from { kotlin.targets.ios.compilations.main.getBinary("FRAMEWORK", mode).parentFile }
into frameworkDir
doLast {
new File(frameworkDir, 'gradlew').with {
text = "#!/bin/bash\nexport 'JAVA_HOME=${System.getProperty("java.home")}'\ncd '${rootProject.rootDir}'\n./gradlew \$@\n"
setExecutable(true)
}
}
}
tasks.build.dependsOn packForXCode
toomanyeduardos
03/20/2019, 8:49 PMr4zzz4k
03/20/2019, 8:55 PMkotlin-stdlib
, but I'm not sure it would cause your issue here. I'd try to move everything from root dependencies
block to relevant sourceSet dependencies, but the way it is also shouldn't lead to any troubles to my knowledge.r4zzz4k
03/20/2019, 8:59 PMtoomanyeduardos
03/20/2019, 8:59 PMkotlin.code.style=official
# gradle version
gradle_version = 3.2.1
# kotlin versions
kotlin_version = 1.3.11
kotlin_native_version = 1.3.11
ktor_version = 1.1.1
kotlinx_coroutines_version = 1.1.0
however, the serialization with kotlinx fails.
here's my model:
package model
import kotlinx.serialization.Serializable
@Serializable
data class PossibleDuplicate(val v: String)
here's the console, when I try to build:
src/commonMain/kotlin/model/PossibleDuplicate.kt:3:16: error: unresolved reference: serialization
import kotlinx.serialization.Serializable
^
r4zzz4k
03/20/2019, 9:08 PMgradle.properties
?toomanyeduardos
03/20/2019, 9:08 PMgradle_version
from 3.2.1
in any caser4zzz4k
03/20/2019, 9:10 PMgradle/wrapper/gradle-wrapper.properties
(or something along those lines, not near my machine right now).toomanyeduardos
03/20/2019, 9:12 PMdistributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
r4zzz4k
03/20/2019, 9:13 PMtoomanyeduardos
03/20/2019, 9:14 PM# gradle version
gradle_version = 3.2.1
# kotlin versions
kotlin_version = 1.3.11
kotlin_native_version = 1.3.11
ktor_version = 1.1.1
kotlinx_coroutines_version = 1.1.0
i dont think im using kotlin_native_version
thoughr4zzz4k
03/20/2019, 9:17 PMtoomanyeduardos
03/20/2019, 9:32 PM# gradle version
gradle_version = 3.2.1
# kotlin versions
kotlin_version = 1.3.20
kotlin_native_version = 1.3.11
ktor_version = 1.1.2
kotlinx_coroutines_version = 1.1.1
kotlinx_serialization_runtime = 0.10.0
it is still complaining about the serialization:
src/commonMain/kotlin/model/DuplicatesResponse.kt:3:16: error: unresolved reference: serialization
import kotlinx.serialization.Serializable
^
toomanyeduardos
03/20/2019, 9:33 PMtoomanyeduardos
03/20/2019, 9:39 PMtoomanyeduardos
03/20/2019, 9:51 PMr4zzz4k
03/20/2019, 10:40 PMBenedict Pregler
03/21/2019, 7:09 AMtoomanyeduardos
03/21/2019, 3:24 PMtoomanyeduardos
03/21/2019, 3:25 PMdependencies
block:
commonMainImplementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.10.0"
toomanyeduardos
03/21/2019, 3:25 PMtoomanyeduardos
03/21/2019, 3:26 PMsourceSets
group, I have this for common main:
commonMain {
dependencies {
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$kotlinx_serialization_runtime"
}
}
this for android main:
androidMain {
dependencies {
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$kotlinx_serialization_runtime"
}
}
and this for iOS main:
iosMain {
dependencies {
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$kotlinx_serialization_runtime"
}
}
toomanyeduardos
03/21/2019, 3:28 PMbuild.gradle
file be like this:
buildscript {
repositories {
mavenLocal()
maven { url '<https://plugins.gradle.org/m2/>' }
maven { url '<http://dl.bintray.com/kotlin/kotlin-eap>' }
jcenter()
google()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
}
}
repositories {
mavenCentral()
maven { url '<https://plugins.gradle.org/m2/>' }
maven { url '<http://dl.bintray.com/kotlin/kotlin-eap>' }
maven { url "<https://kotlin.bintray.com/ktor>" }
maven { url "<https://dl.bintray.com/kotlin/kotlinx/>" }
maven { url "<https://kotlin.bintray.com/kotlinx>" }
jcenter()
google()
}
group 'com.ancestry.possibleduplicates'
version '0.0.2'
apply plugin: 'maven-publish'
apply plugin: 'kotlin-multiplatform'
apply plugin: 'kotlinx-serialization'
kotlin {
targets {
final def iOSTarget = System.getenv('SDK_NAME')?.startsWith("iphoneos") ? presets.iosArm64 : presets.iosX64
fromPreset(iOSTarget, 'ios') {
compilations.main.outputKinds('FRAMEWORK')
// compilations.main.embedBitcode BitcodeEmbeddingMode.BITCODE // for release binaries
// // or BitcodeEmbeddingMode.MARKER for debug binaries
}
fromPreset(presets.jvm, 'android')
}
sourceSets {
commonMain {
dependencies {
api 'org.jetbrains.kotlin:kotlin-stdlib-common'
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$kotlinx_serialization_runtime"
}
}
commonTest {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-test-common'
implementation 'org.jetbrains.kotlin:kotlin-test-annotations-common'
}
}
androidMain {
dependencies {
api 'org.jetbrains.kotlin:kotlin-stdlib'
implementation("io.ktor:ktor-client-android:$ktor_version")
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$kotlinx_serialization_runtime"
}
}
androidTest {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-test'
implementation 'org.jetbrains.kotlin:kotlin-test-junit'
}
}
iosMain {
dependencies {
api 'org.jetbrains.kotlin:kotlin-stdlib'
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$kotlinx_serialization_runtime"
}
}
iosTest {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-test'
}
}
}
}
configurations {
compileClasspath
}
dependencies {
commonMainImplementation ("io.ktor:ktor-client-core:$ktor_version")
androidMainImplementation("io.ktor:ktor-client-android:$ktor_version")
iosMainImplementation("io.ktor:ktor-client-ios:$ktor_version")
commonMainImplementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
toomanyeduardos
03/21/2019, 3:29 PMJake
03/22/2019, 7:26 PMMainFolder/
-.gradle/
-app/
-gradle/
-SharedCode/
-.gradle/
-build/
-gradle/
-src/
-build.gradle
-settings.gradle
-build.gradle
-settings.gradle
Inside of the SharedCode
directory lies all of the code that gets compiled to frameworks and libraries.
I’m having trouble figuring out how to use gradle for Ktor.
SharedCode - build.gradle
plugins {
id 'kotlin-multiplatform' version '1.3.10'
}
repositories {
mavenCentral()
}
group 'com.example'
version '0.0.1'
apply plugin: 'maven-publish'
kotlin {
targets {
fromPreset(presets.jvm, 'jvm')
fromPreset(presets.js, 'js')
// For ARM, preset should be changed to presets.iosArm32 or presets.iosArm64
// For Linux, preset should be changed to e.g. presets.linuxX64
// For MacOS, preset should be changed to e.g. presets.macosX64
fromPreset(presets.macosX64, 'macos')
fromPreset(System.getenv('SDK_NAME')?.startsWith("iphoneos") ? presets.iosArm64 : presets.iosX64, 'ios') {
compilations.main.outputKinds('FRAMEWORK')
compilations.main.extraOpts '-module-name', 'Core'
}
}
sourceSets {
commonMain {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib-common'
// implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$kotlinx_serialization_runtime"
}
}
commonTest {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-test-common'
implementation 'org.jetbrains.kotlin:kotlin-test-annotations-common'
}
}
jvmMain {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
// implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$kotlinx_serialization_runtime"
}
}
jvmTest {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-test'
implementation 'org.jetbrains.kotlin:kotlin-test-junit'
}
}
jsMain {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib-js'
}
}
jsTest {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-test-js'
}
}
macosMain {
}
macosTest {
}
iosMain{
// implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$kotlinx_serialization_runtime"
}
}
}
// From here: <http://kotlinlang.org/docs/tutorials/native/mpp-ios-android.html>
// Apache 2 License
task packForXCode(type: Sync) {
final File frameworkDir = new File(buildDir, "xcode-frameworks")
final String mode = project.findProperty("XCODE_CONFIGURATION")?.toUpperCase() ?: 'DEBUG'
inputs.property "mode", mode
dependsOn kotlin.targets.ios.compilations.main.linkTaskName("FRAMEWORK", mode)
from { kotlin.targets.ios.compilations.main.getBinary("FRAMEWORK", mode).parentFile }
into frameworkDir
doLast {
new File(frameworkDir, 'gradlew').with {
text = "#!/bin/bash\nexport 'JAVA_HOME=${System.getProperty("java.home")}'\ncd '${rootProject.rootDir}'\n./gradlew \$@\n"
setExecutable(true)
}
}
}
tasks.build.dependsOn packForXCode
Jake
03/22/2019, 7:26 PMSharedCode settings.gradle
//ext.ktor_version = '1.1.2'
//ext.kotlinx_coroutines_version = '1.1.1'
//ext.kotlinx_serialization_runtime = '0.10.0'
//ext.serialization_version = '0.10.0'
pluginManagement {
resolutionStrategy {
eachPlugin {
if (requested.id.id == "kotlin-multiplatform") {
useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${requested.version}")
}
}
}
repositories {
maven { url '<http://dl.bintray.com/kotlin/kotlin-eap>' }
mavenCentral()
maven { url '<https://plugins.gradle.org/m2/>' }
// jcenter()
// google()
//
// maven { url "<https://kotlin.bintray.com/ktor>" }
// maven { url "<https://dl.bintray.com/kotlin/kotlinx/>" }
// maven { url "<https://kotlin.bintray.com/kotlinx>" }
}
}
rootProject.name = 'SharedCode'
enableFeaturePreview('GRADLE_METADATA')
toomanyeduardos
03/26/2019, 2:24 AMJake
03/26/2019, 12:15 PM