You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KMP项目运行iOS应用遇配置任务错误及iOS项目打开异常求助

修复KMP项目iOS构建任务错误及iOS项目异常问题

针对你遇到的:shared:assembleDebugAppleFrameworkForXcodeIosSimulatorArm64任务配置错误及iOS项目打开异常问题,可通过以下步骤逐一修复:

1. 对齐Kotlin序列化插件版本

当前序列化插件版本(1.9.20)与Kotlin版本(2.1.0)不匹配,需将插件版本同步为2.1.0:

// 修改plugins块中的序列化插件配置
kotlin("plugin.serialization") version "2.1.0"

2. 升级SKIE插件至兼容版本

SKIE 0.10.1不支持Kotlin 2.1.x,需升级到兼容的最新版本(如0.16.0):

// 修改SKIE插件版本
id("co.touchlab.skie") version "0.16.0"

3. 启用iOS静态框架

取消注释isStatic = true,使用静态框架可避免Xcode兼容性问题:

listOf(
    iosX64(),
    iosArm64(),
    iosSimulatorArm64(),
).forEach {
    it.binaries.framework {
        baseName = "shared"
        isStatic = true // 取消注释启用静态框架
    }
}

4. 关联iOS源码集依赖

将各iOS目标的主源码集关联到统一的iosMain,确保依赖正确传递:

sourceSets {
    // ... 原有代码 ...
    val iosMain by creating {
        dependencies {
            implementation(libs.ktor.client.darwin)
        }
    }
    // 添加以下关联配置
    val iosX64Main by getting { dependsOn(iosMain) }
    val iosArm64Main by getting { dependsOn(iosMain) }
    val iosSimulatorArm64Main by getting { dependsOn(iosMain) }
    // ... 原有代码 ...
}

5. 清理缓存并重新构建

执行以下命令清理Gradle缓存并重新构建项目:

./gradlew clean
./gradlew :shared:assembleDebug

完成后重新打开iOS项目,同步Xcode即可。

修改后的完整build.gradle.kts示例

import org.jetbrains.kotlin.gradle.dsl.JvmTarget

plugins {
    alias(libs.plugins.kotlinMultiplatform)
    alias(libs.plugins.androidLibrary)
    id("co.touchlab.skie") version "0.16.0"
    kotlin("plugin.serialization") version "2.1.0"
}

kotlin {
    androidTarget {
        compilations.all {
            compileTaskProvider.configure {
                compilerOptions {
                    jvmTarget.set(JvmTarget.JVM_1_8)
                }
            }
        }
    }
    
    listOf(
        iosX64(),
        iosArm64(),
        iosSimulatorArm64(),
    ).forEach {
        it.binaries.framework {
            baseName = "shared"
            isStatic = true
        }
    }

    sourceSets {
        val commonMain by getting {
            dependencies {
                implementation(libs.kotlinx.coroutines.core)
                implementation(libs.ktor.client.core)
                implementation(libs.ktor.client.content.negotiation)
                implementation(libs.ktor.serialization.kotlinx.json)
                implementation(libs.kotlinx.datetime)
                implementation(libs.koin.core)
            }
        }
        val androidMain by getting{
            dependencies {
                implementation(libs.androidx.lifecycle.viewmodel.ktx)
                implementation(libs.ktor.client.android)
            }
        }

        val iosMain by creating {
            dependencies {
                implementation(libs.ktor.client.darwin)
            }
        }

        val iosX64Main by getting { dependsOn(iosMain) }
        val iosArm64Main by getting { dependsOn(iosMain) }
        val iosSimulatorArm64Main by getting { dependsOn(iosMain) }

        commonTest.dependencies {
            implementation(libs.kotlin.test)
        }
    }
}

android {
    namespace = "com.db.mycity"
    compileSdk = 35
    defaultConfig {
        minSdk = 26
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    packaging {
        resources {
            excludes += "META-INF/versions/9/previous-compilation-data.bin"
        }
    }
}

内容的提问来源于stack exchange,提问作者Goku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 00:17:34