Hi all, I’ve encountered problem after upgrading t...
# multiplatform
f
Hi all, I’ve encountered problem after upgrading to XCode 13, my multiplatform project stopped to build:
Copy code
> Task :Commons:compileKotlinIos
> Task :Commons:linkPodDebugFrameworkIos
Command PhaseScriptExecution failed with a nonzero exit code
No error is present in logs -_- This is result after upgrading everything to latest versions. Before that i had error
Copy code
debugFramework is missing in the map kotlin
build.gradle.kts without modifications:
Copy code
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget

plugins {
    kotlin("multiplatform")
    id("org.jetbrains.kotlin.native.cocoapods")
    id("com.android.library")
    id("kotlinx-serialization")
}
android {
    compileSdkVersion(29)
    defaultConfig {
        minSdkVersion(14)
        targetSdkVersion(29)
        versionCode = 1
        versionName = "1.0"
        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }
}
kotlin {
    android()
    //select iOS target platform depending on the Xcode environment variables
    val iOSTarget: (String, KotlinNativeTarget.() -> Unit) -> KotlinNativeTarget =
        if (System.getenv("SDK_NAME")?.startsWith("iphoneos") == true)
            ::iosArm64
        else
            ::iosX64
    val iosEnding = if (System.getenv("SDK_NAME")?.startsWith("iphoneos") == true) "arm64" else "x64"

    iOSTarget("ios") {}
    version = "1.0.0"
    cocoapods {
        summary = "Commons"
        homepage = ""
    }

    sourceSets["commonMain"].dependencies {
        implementation("org.jetbrains.kotlin:kotlin-stdlib-common")
        implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.8")
        implementation("io.ktor:ktor-client-core:1.6.0")
        implementation("io.ktor:ktor-client-auth:1.6.0")
        implementation("io.ktor:ktor-client-json:1.6.0")
        implementation("io.ktor:ktor-client-serialization:1.6.0")
        implementation("io.ktor:ktor-client-logging:1.6.0")
    }

    sourceSets["androidMain"].dependencies {
        implementation("org.jetbrains.kotlin:kotlin-stdlib")
        api("io.ktor:ktor-client-android:1.6.0")
    }

    sourceSets["iosMain"].dependencies {
        implementation("io.ktor:ktor-client-ios:1.6.0")
    }
}

val packForXcode by tasks.creating(Sync::class) {
    group = "build"

    //selecting the right configuration for the iOS framework depending on the Xcode environment variables
    val mode = System.getenv("CONFIGURATION") ?: "DEBUG"
    val framework = kotlin.targets.getByName<KotlinNativeTarget>("ios").binaries.getFramework(mode)

    inputs.property("mode", mode)
    dependsOn(framework.linkTask)

    val targetDir = File(buildDir, "xcode-frameworks")
    from({ framework.outputDirectory })
    into(targetDir)

    doLast {
        val gradlew = File(targetDir, "gradlew")
        gradlew.writeText("#!/bin/bash\nexport 'JAVA_HOME=${System.getProperty("java.home")}'\ncd '${rootProject.rootDir}'\n./gradlew \$@\n")
        gradlew.setExecutable(true)
    }
}

tasks.getByName("build").dependsOn(packForXcode)
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().all {
    kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
}
Also kts file after upgrade:
Copy code
import org.jetbrains.kotlin.gradle.plugin.mpp.Framework
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    kotlin("multiplatform")
    kotlin("native.cocoapods")
    id("com.android.library")
    id("kotlinx-serialization")
}
android {
    compileSdkVersion(29)
    defaultConfig {
        minSdkVersion(14)
        targetSdkVersion(29)
        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }
}
kotlin {
    android()
    val onPhone = System.getenv("SDK_NAME")?.startsWith("iphoneos") ?: false
    if (onPhone) {
        iosArm64("ios")
    } else {
        iosX64("ios")
    }
    version = "1.0.0"
    cocoapods {
        summary = "Commons"
    }
    sourceSets {
        all {
            languageSettings.apply {
                useExperimentalAnnotation("kotlin.RequiresOptIn")
                useExperimentalAnnotation("kotlinx.coroutines.ExperimentalCoroutinesApi")
            }
        }
    }
    sourceSets["commonMain"].dependencies {
        implementation("org.jetbrains.kotlin:kotlin-stdlib-common")
        implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.8")
        implementation("io.ktor:ktor-client-core:1.6.3")
        implementation("io.ktor:ktor-client-auth:1.6.3")
        implementation("io.ktor:ktor-client-json:1.6.3")
        implementation("io.ktor:ktor-client-serialization:1.6.3")
        implementation("io.ktor:ktor-client-logging:1.6.3")
    }

    sourceSets["androidMain"].dependencies {
        implementation("org.jetbrains.kotlin:kotlin-stdlib")
        api("io.ktor:ktor-client-android:1.6.3")
    }

    sourceSets["iosMain"].dependencies {
        implementation("io.ktor:ktor-client-ios:1.6.3")
    }
    targets.withType<KotlinNativeTarget> {
        binaries.withType<Framework> {
            isStatic = true
            transitiveExport = false
            baseName = "Commons"

        }
    }
}

tasks.withType<KotlinCompile>().all {
    kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
}
tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
    }
}
On both kts scripts project builds for iphone but doesn’t archive
🧵 1