首先是发现这个问题是因为在真机调试的时候,xcode始终发现不了连在上面的真机;反复确认证书安装和xcode配置都没有问题,因为另一台手机可以非常好的被识别。这个问题的原因很快就找到,就是因为sdk不匹配造成的,识别不了的手机是ios 7.1。所以这里要注意一下,真机调试时如果xCode识别不了你的设备,有可能是当前SDK版本高于了你的手机。
这里先科普一下,每个版本的xcode只会搭载一个版本的ios sdk。比方说,xCode6.2搭载的是ios8.2 sdk,而且每次有新的sdk发布,同时会推出新的xCode版本。之所以只搭载一个版本的sdk主要原因在于,光一个版本的sdk就会有1GB左右。那么问题来了,想我现在遇到的问题该怎么解决,是升级到iOS8.2?实际上有办法可以让xCode兼容老版本的SDK。而且这样还有另外一个好处,测试你的应用对早期iOS版本的兼容性。平常我会下意识的保持手机不升级,这样测试的时候也能在不同iOS版本上进行测试。
具体说一下让xCode兼容其他iOS版本的方法:
方法一:在xCode > Preferences > Downloads > iOS 7.1 Simulator,直接点击下载安装;
这个方法不是每次都奏效,比方说 xCode6.2就只提供了下载iOS8.1。而且下载速度巨慢无比。这里还有个苹果的bug,下载到的iOS7.1 SDK实际是存放在了xCode5.*之下。也有人说,这个不是bug,因为公用一个目录可以防止重复下载。因此他的问题不在于下载位置不对,而是不能识别。1
方法二:从早期版本xCode中抽取对应的SDK版本,这个方法是保证管用。具体操作步骤如下,
1,获取SDK7.1的文件:有两种方式
方式A. 如果你已经按装了XCode5.* 那么你只要直接 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs 拷贝,
方式B. 或者如果你只有XCode5.*的安装包,那么就打开DMG包(用 Image Mounter方式打开),然后右键XCode图标,并选择“Show package contents”,一步一步点击至到目录:Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs。
2,将文件拷贝到/Applications/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
3,然后重启XCode,这时你会发现有其他版本的iOS SDK可选择了;
实际上,这个方法可以适用于任何版本的XCode。而且,这是每个iOS开发必备的技能;一个应用开发出来必须兼容老版本,必须在老版的设备上进行应用的调试,今早发现问题。目前iOS8.3已发布,我的计划是兼容iOS6.*,iOS7.*,iOS8.*。手里的真机必须要保证同时具备几个版本,千万不要手欠升级了。