Xamarin iOS真机编译代码签名失败问题求助
cannot find code object on disk 解决指南 问题背景
开发的Xamarin应用已完成Mac配对,可在iOS模拟器正常运行。证书与配置文件已安装至Mac和Windows PC,Xcode及Visual Studio均识别到正确配置,但针对已注册iOS设备构建时出现代码签名错误,具体信息如下:
Error Failed to codesign '/Users/AAA/Library/Caches/Xamarin/mtbs/builds/XXX.iOS/f08c84ed302c76b104472943189fb497ab4d67d9e475aa4e2261e4bee68bf006/bin/iPhone/Debug/device-builds/ipad5.3-15.7/XXX.iOS.app': /Users/AAA/Library/Caches/Xamarin/mtbs/builds/XXX.iOS/f08c84ed302c76b104472943189fb497ab4d67d9e475aa4e2261e4bee68bf006/bin/iPhone/Debug/device-builds/ipad5.3-15.7/XXX.iOS.app: cannot find code object on disk XXX.iOS
Error /usr/bin/codesign exited with code 1:
/Users/AAA/Library/Caches/Xamarin/mtbs/builds/XXX.iOS/f08c84ed302c76b104472943189fb497ab4d67d9e475aa4e2261e4bee68bf006/bin/iPhone/Debug/device-builds/ipad5.3-15.7/XXX.iOS.app: cannot find code object on disk XXX.iOS
环境版本:Xamarin 17.8.0.156、Xcode 13.2.1
解决方法
- 清理构建缓存
- 在Mac终端执行命令删除Xamarin构建缓存:
rm -rf /Users/AAA/Library/Caches/Xamarin/mtbs - 在Visual Studio中右键解决方案选择「清理」,完成后重新生成项目
- 在Mac终端执行命令删除Xamarin构建缓存:
- 验证.app包完整性
手动导航至错误提示的.app文件路径,检查文件是否存在,且包内包含Info.plist、可执行文件等核心内容。若文件缺失或损坏,重新构建生成.app包 - 核对代码签名配置
- 在Visual Studio的iOS项目属性中,确认「iOS Bundle Signing」选项卡下的
Signing Identity与Provisioning Profile和Xcode中配置完全匹配 - 打开Mac端Xcode,进入
Window -> Devices and Simulators,选中目标设备,确认设备已正确注册且配置文件已关联该设备
- 在Visual Studio的iOS项目属性中,确认「iOS Bundle Signing」选项卡下的
- 重置证书与钥匙串
- 在Mac的「钥匙串访问」中删除旧的iOS开发证书及相关私钥,重新安装从Apple开发者中心下载的证书
- 右键证书选择「显示简介」,在「信任」选项中设置「使用此证书时」为「始终信任」
- 适配版本兼容性(可选)
当前Xcode 13.2.1版本较旧,建议升级至与Xamarin 17.8兼容的Xcode版本(推荐Xcode 14.x系列),同时确保Visual Studio的Xamarin组件为最新状态
内容的提问来源于stack exchange,提问作者brendan davton

