Xcode 9真机编译大量报错失败,模拟器正常求解决方案
我之前也碰到过一模一样的问题!当时折腾了好几个小时,试过各种清理操作都没用,最后才找到几个有效的排查方向,分享给你:
检查真机系统版本与Xcode 9的兼容性:Xcode 9官方只支持到iOS 11,如果你的真机系统是iOS 12或更高版本,就会出现这类莫名其妙的UIKit相关编译错误——因为高版本系统里的UIKit类结构有变化,Xcode 9的编译器无法正确识别。这种情况要么把真机系统降级到iOS 11及以下,要么升级Xcode版本(如果项目允许的话)。
清理iOS DeviceSupport缓存:除了Derived Data,Xcode会在本地缓存真机的系统支持文件,这个缓存损坏也会导致奇怪的错误。你可以找到路径
~/Library/Developer/Xcode/iOS DeviceSupport,删掉对应你真机系统版本的文件夹,然后重启Xcode,重新连接真机让Xcode重新生成缓存文件,这一步我当时直接解决了问题。验证Xcode安装完整性:Xcode 9如果安装不完整或者组件损坏,也会导致编译异常。你可以打开终端运行命令
xcode-select --install重新安装命令行工具;如果还是不行,建议重新下载Xcode 9的完整安装包(可以去Apple开发者网站的归档区找对应版本),覆盖安装。排查证书与Provisioning Profile问题:虽然模拟器编译不需要证书,但真机编译依赖正确的证书配置,有时候证书过期、配置错误甚至本地缓存的证书损坏,都会触发非直观的编译错误。你可以打开Xcode的
Preferences -> Accounts,选中你的开发者账号点击Manage Certificates刷新证书,再去Build Settings里重新下载对应的Provisioning Profile,或者删除本地的证书后重新生成。更换真机测试:如果有其他运行iOS 11及以下系统的真机,尝试用它编译项目,排除是当前真机的系统或硬件异常导致的问题。
内容的提问来源于stack exchange,提问作者AnthoPak

