添加-Xallocator=std后KMM生成XCFramework失败:linkDebugFrameworkIosArm64报错
问题解决方案
步骤1:清理Kotlin Native缓存
错误提示缓存的库依赖缺失,先清理Konan缓存解决缓存不一致问题:
rm -rf ~/.konan/cache
同时执行Gradle清理任务:
./gradlew clean
步骤2:统一Ktor依赖版本
你的配置中Ktor依赖版本不统一(如ktor-client-core:2.3.4和ktor-client-content-negotiation:2.3.3),版本差异会引发编译链接冲突。将所有Ktor依赖改为同一版本,比如统一使用2.3.4:
// commonMain依赖 implementation("io.ktor:ktor-client-core:2.3.4") implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.4") implementation("io.ktor:ktor-client-content-negotiation:2.3.4") implementation("io.ktor:ktor-client-logging:2.3.4") // androidMain依赖 implementation("io.ktor:ktor-client-android:2.3.4") // iosMain依赖 implementation("io.ktor:ktor-client-ios:2.3.4")
步骤3:调整编译器参数的作用范围
原代码给所有compilations添加-Xallocator=std参数,可能影响测试编译等非主编译流程导致缓存异常,修改为仅针对main编译添加参数:
listOf( iosX64(), iosArm64(), iosSimulatorArm64() ).forEach { it.binaries.framework { baseName = "MnghaDataSource" xcf.add(this) } // 仅给main编译添加allocator参数 it.compilations.getByName("main") { compilerOptions.configure { freeCompilerArgs.add("-Xallocator=std") } } }
步骤4:升级Kotlin版本(可选)
当前使用的Kotlin 1.8.21存在部分已知的内存管理器和编译缓存问题,升级到较新的稳定版本(如1.9.20)可规避这类问题,同时同步升级Serialization插件版本:
plugins { kotlin("multiplatform") version "1.9.20" id("com.android.library") kotlin("plugin.serialization") version "1.9.20" }
完成以上步骤后,重新执行构建命令:
./gradlew assembleXCFramework
内容的提问来源于stack exchange,提问作者bebosh
相关产品推荐
相关产品推荐

