XCBCore MacroEvaluationProgram.executeInContext崩溃(大量Swift包场景)求助
背景
我们公司拥有超60万行代码的大型代码库,项目基于XcodeProj,仅以Swift Package Manager(SPM)作为核心包管理工具。目前正推进单体代码模块化,将功能/模块迁移至独立本地Swift Package,为Contract、Implementation、Mock分别创建专属本地包。
现有194个Contract包、194个Implementation包、不超过194个Mock包,总计近582个本地Swift Package。POC阶段发现,单类别单包模式更易维护,因单包多目标会产生模糊编译信息,需手动逐个构建排查问题。
问题
当新增包并关联至主XcodeProj的Unit Test Target时,出现XcodeBuild崩溃,具体为XCBCore MacroEvaluationProgram.executeInContext错误,完整崩溃日志已留存。
Xcode报错如下:
Showing All Messages unexpected service error: The Xcode build system has crashed. Build again to continue. Internal inconsistency error: never received task ended message for task ID '3' with rule info 'CreateBuildDescription'. Build again to continue.
主项目可正常在模拟器/设备构建运行,但Unit Test Target构建必崩溃,该问题在Xcode 15.2、15.3版本均存在。
尝试清理UnitTest Target、移除关联包、更新构建配置可临时解决,但很快又因包数量触及上限复发。调试及查阅文档后,未找到可链接包数量限制的说明,也无XCBCore在0x102a4d634 MacroEvaluationProgram.executeInContext(_:withResultBuilder:alwaysEvalAsString:) + 1220行崩溃的相关案例,从日志推测XCBCore陷入递归循环后崩溃。
恳请提供解决建议、排查方向、相关文档或构建设置调整方案。我们拟采取的方案为:将单体项目全量迁移至Swift Package后关联至XcodeProj;合并多包为单包多目标以减少包数量,但这些方案工作量极大,会严重影响交付及流水线运行,故求助寻找根源及低成本解决方案。
内容的提问来源于stack exchange,提问作者Serj

