Xcode运行Kotlin多平台代码时遭遇后端内部编译错误
Kotlin多平台iOS编译错误(IR lowering阶段异常)处理方案
错误日志
Task :shared:compileKotlinIosX64 UP-TO-DATE
Task :shared:linkDebugFrameworkIosX64 FAILED
e: 编译失败:Backend Internal error: IR lowering期间发生异常
正在编译的文件:/opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonAnnotations.kt
根本原因java.lang.AssertionError抛出位置:org.jetbrains.kotlin.backend.konan.lower.InitializersLowering$InitializersTransformer.lowerConstructors(InitializersLowering.kt:161)
- Source files:
- Compiler version info: Konan: 1.6.10 / Kotlin:1.6.10
- Output kind: STATIC_CACHE
e: org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: IR lowering期间发生异常
正在编译的文件:/opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonAnnotations.kt
根本原因java.lang.AssertionError抛出位置:org.jetbrains.kotlin.backend.konan.lower.InitializersLowering$InitializersTransformer.lowerConstructors(InitializersLowering.kt:161)
(后续堆栈跟踪省略)
解决步骤
1. 升级Kotlin及相关依赖版本
该错误是Kotlin 1.6.x版本的已知IR后端bug,升级到Kotlin 1.7.0及以上版本可直接修复。修改项目配置文件:
// 项目根build.gradle.kts plugins { kotlin("multiplatform") version "1.7.20" apply false kotlin("plugin.serialization") version "1.7.20" apply false }
同步更新kotlinx-serialization依赖版本,保持与Kotlin版本匹配:
// shared模块build.gradle.kts dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1") }
2. 临时禁用IR后端(降级方案)
若暂时无法升级版本,可在iOS目标配置中切换到旧后端编译:
// shared模块build.gradle.kts kotlin { iosX64 { compilations.all { kotlinOptions.freeCompilerArgs += "-Xuse-old-backend" } } // 其他iOS目标(如iosArm64、iosSimulatorArm64)需同步配置 }
3. 清理缓存并重新构建
修改配置后执行以下命令:
./gradlew clean ./gradlew shared:linkDebugFrameworkIosX64
4. 检查序列化注解使用
确保项目中kotlinx-serialization的使用符合规范:
- 数据类必须添加
@Serializable注解 - 避免在序列化类的构造函数中编写复杂初始化逻辑,保持属性初始化简洁
内容的提问来源于stack exchange,提问作者Anil Ugale
相关产品推荐
相关产品推荐

