Xcode@IBDesignables报错:X.framework缺少必要代码签名
我之前也碰到过一模一样的糟心情况——用CocoaPods装了MBCircularProgressBar、UICircularProgressRing这类支持Storyboard可视化编辑的框架,刚把控件拖到UIView上,立刻弹出“Required code signing missing for X.framework”的错误,Storyboard直接变灰没法正常编辑,但奇怪的是App运行起来完全没问题。折腾了好一阵后,终于找到几个亲测有效的解决办法,给你参考:
给Podfile添加签名处理脚本
针对这类可视化框架,我们可以在Podfile里添加脚本,自动关闭它们的代码签名要求,毕竟这些框架不需要单独签名就能在Storyboard里正常显示。打开你的Podfile,在末尾加上这段代码:post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| # 把你用到的框架名称加到数组里 if ['MBCircularProgressBar', 'UICircularProgressRing'].include?(target.name) config.build_settings['CODE_SIGNING_REQUIRED'] = 'NO' config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' end end end end保存后执行
pod install重新安装依赖,然后彻底重启Xcode,再打开Storyboard试试。手动修改框架的Build Settings
如果脚本没起作用,那就直接手动调整框架的签名设置:- 在项目导航栏里找到
Pods文件夹下的Pods.xcodeproj并打开它 - 找到出问题的那个框架的target(比如MBCircularProgressBar)
- 切换到
Build Settings标签,搜索Code Signing Required,将其改为NO - 再搜索
Code Signing Allowed,同样改成NO - 执行
Command+Shift+K清理项目,然后重启Xcode
- 在项目导航栏里找到
清理Xcode深层缓存
你已经删了DerivedData,但Xcode还有其他缓存可能搞鬼:- 完全退出Xcode
- 打开Finder,按
Command+Shift+G,输入~/Library/Caches/com.apple.dt.Xcode,删除该目录下的所有文件 - 再次确认
~/Library/Developer/Xcode/DerivedData目录已经清空 - 重新打开Xcode加载项目
升级CocoaPods到最新版本
老版本的CocoaPods对静态库/动态库的签名处理可能存在bug,你可以先检查当前版本:pod --version,如果不是最新版,执行sudo gem install cocoapods升级,之后再执行pod install重新同步依赖。
我当时是用第一个方法解决的,你可以按顺序尝试,应该能搞定Storyboard的显示异常问题。
内容的提问来源于stack exchange,提问作者MHopstad

