今天在调试一个项目的时候,发现一个异常,该项目有阵子没有调试了,之前一切正常今天重新编译竟然失败,心情很是爆炸,度娘了一下也没找到合适的解决方案,异常提示也描述的很模糊,让人很是费解,不过还好静下来调整了一下思绪发现了问题所在的根源,心中万只羊驼奔过,废话说的有点多,直接切入正题.
一.异常与分析
The run destination iPhone X is not valid for Running the scheme 'ProjectName'.
iPhone X doesn’t match any of ProjectName.app’s targeted device families. You can expand ProjectName.app’s targeted device families to support iPhone X.
通过上面的异常提示中设备(device)与项目(project)和 targeted device 这三个关键词展开分析;
1.证书
2.配置文件
3.工程配置
首先,开启了一个新的项目,将该项目证书应用在新的项目中,进行编译测试,结果得出可以正常 run,从而不再考虑去 developer 官网中查看证书相关设置;
其次,配置文件,既然第一项可以通过,那么将问题锁定到当前项目中,重新检查了证书相关的配置是否有误,经过校验发现配置正常无误,最终锁定至第三项工程配置;
最后,工程配置,首先锁定了项目中 Target 中查看,因为该项目是 iPhone 和 iPad 分开独立的,所以在 General 项中发现当前 Bundle Identifier 和 Devices 未能达成匹配,证书使用的是 iPhone 的证书,而设备则选择的 iPad.
二.解决方案
因为分析结果是Bundle Identifier 和 Devices 未能达成匹配,所以尝试着将两项配置变更为一致,重新尝试编译项目,发现可以正常 run,心情大好哈哈;
即: iPhone 的Bundle Identifier 证书和Devices 设备项选择 iPhone;
反之 iPad 的Bundle Identifier 证书和Devices 设备项选择 iPad.
如上就是这次所遇到的问题和解决策略,特此记录加深印象同时分享给大家,希望可以帮助到大家,毕竟这种事在开发中频繁切换后还是很容易遇到的,如有什么不足也请大家多多指点补充,共同成长!
网友评论