XCode 13构建报错code object is not signed at all如何解决
Landmarks项目CodeSign签名失败报错排查方案
问题背景
跟随苹果官方SwiftUI教程开发Landmarks示例项目时,此前项目可正常构建运行,突然触发构建失败,报错信息如下:
SchemeBuildError: Failed to build the scheme "Landmarks" Sign Landmarks.app: /Users/narbhati/Library/Developer/Xcode/DerivedData/Landmarks-ahmqfcjmbjxmvognxcpanhaiieam/Build/Intermediates.noindex/Previews/Landmarks/Products/Debug-iphonesimulator/Landmarks.app: code object is not signed at all In subcomponent: /Users/narbhati/Library/Developer/Xcode/DerivedData/Landmarks-ahmqfcjmbjxmvognxcpanhaiieam/Build/Intermediates.noindex/Previews/Landmarks/Products/Debug-iphonesimulator/Landmarks.app/Assets.car Command CodeSign failed with a nonzero exit code
按优先级依次排查解决
- 优先清理损坏的DerivedData缓存
报错路径明确指向DerivedData下的预览构建缓存,90%以上的这类偶发签名错误都是缓存损坏导致。直接完全退出Xcode,打开访达按Command+Shift+G,输入~/Library/Developer/Xcode/DerivedData/回车,找到名称前缀为Landmarks的缓存文件夹直接删除,重启Xcode重新构建即可,大部分场景下这一步就能解决问题。 - 清理Xcode全量构建缓存
如果上一步无效,打开Xcode后按Command+Shift+K清理普通构建产物,再按Option+Command+Shift+K深度清理构建文件夹,之后重新触发构建。 - 校验签名配置
选中项目导航栏里的项目文件,选择Landmarks主target,进入Build Settings页,搜索Code Signing Identity,确认Debug模拟器环境下的签名身份配置为Apple Development,不要误选为Distribution分发证书或者Don't Code Sign。 - 修复SwiftUI预览缓存异常
报错路径位于Previews预览目录,属于SwiftUI画布预览缓存损坏:先关闭Xcode右侧的预览画布,在顶部菜单栏选择Editor > Canvas临时关闭画布功能,再打开终端执行命令xcrun simctl --set previews delete all清空所有预览模拟器缓存,重启Xcode后重新打开预览即可。 - 检查资源文件配置
打开项目中的Assets.xcassets资源目录,选中任意资源文件后打开右侧文件检查器,确认Target Membership栏下仅勾选了Landmarks主target,不要同时勾选测试target、Widget扩展等其他target,避免资源被多目标重复打包时触发签名冲突。同时进入target的Build Phases页,查看Copy Bundle Resources列表,确认Assets.car没有被重复添加,存在重复项直接删除即可。
内容的提问来源于stack exchange,提问作者Naresh
相关产品推荐
相关产品推荐

