xcode5.0 编译ios7.0以下的sdk 方法
2013-12-27 10:34
197 查看
为了保持遗留的项目在iOS7下可以继续以iOS6兼容模式下的行为运行,最简单的办法就是停留在Xcode4.6.3进行开发和编译,而不要升级到Xcode5.0。但毕竟Xcode5.0有很多长足的进步,最突出的一点就是:用内置的Git插件不会因为中文而频繁无响应了。鉴于这些原因,还是有理由将Xcode升级到5.0的。但在5.0下iOS7阴魂不散,想编译到iOS6兼容模式还是相当折腾的。
================================ 步骤如下 ================================
通过Xcode5.0的首选项下载iOS6.1模拟器,这一步会同时下载并安装模拟器使用的6.1 SDK,但真机使用的6.1 SDK无法通过首选项下载,唯一的办法只能是自己动手下载并拷贝到Xcoede5.0下。 从Apple Developer Center下载Xcode4.6,从/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs目录中将iPhoneOS6.1.sdk复制到Xcode5.0对应的目录中。这样在项目选项的Base
SDK设置那里就会出现iOS 6.1的选项(默认只有最新的7.0),我猜测是必须同时在iPhoneOS.platform和iPhoneSimulator.platform下都有6.1.sdk才会使这个选项出现,但没有实践。
![](http://g.hiphotos.bdimg.com/album/pic/item/32fa828ba61ea8d393bc0326950a304e251f5871.jpg)
此时打开Xcode5.0,在模拟器的运行选项中会多出来一部分(竖线右边的部分在之前是没有的)。不用管竖线右边的部分,因为编译的时候使用的SDK版本和这个无关,这里只是选择了模拟器的系统版本(竖线左边部分)。
![](http://b.hiphotos.bdimg.com/album/pic/item/902397dda144ad347024f0a5d2a20cf431ad857c.jpg)
设置Base SDK,选择iOS 6.1,这个选项会决定使用那个版本的SDK进行编译。此时无论是在iOS7的真机还是模拟器下运行应用,该应用都会在iOS6兼容模式下运行:状态栏、键盘显隐动画、UITextView.contentSize的高度等许多使用iOS7编译会有不同行为的控件都会回来iOS6之前的行为。(目前已知UISegmentControl和UIAlertView无法回复,好像是因为这些控件由操作系统直接提供)
![](http://b.hiphotos.bdimg.com/album/pic/item/7c1ed21b0ef41bd53cc09fd653da81cb39db3d04.jpg)
在提交到AppStore之前需要进行归档,这里需要特别注意的是,如果直接进行归档,Xcode会默认使用iOS 7.0 sdk进行编译并归档,使之前所有的工作都前功尽弃。这里我没找到好办法,但在stack overflow上看到一个老外的回复提醒了我。做法是:关闭Xcode5.0,然后从/iPhoneOS.platform/Developer/SDKs目录下先将iPhoneOS7.0.sdk目录剪切到别的地方。然后重新打开Xcode5.0,这样在Base SDK那里就只剩下iOS6.1了。
这样一来,Xcode你再聪明也找不到iOS 7.0 SDK了吧(虽然很好找,我就剪切到上一级目录了)。然后再归档,将归档的ipa安装到iOS7的真机进行测试。ok了,大功告成。记得完工后关闭Xcode5并把iOS 7.0的SDK放回原位。
================================ 步骤如下 ================================
通过Xcode5.0的首选项下载iOS6.1模拟器,这一步会同时下载并安装模拟器使用的6.1 SDK,但真机使用的6.1 SDK无法通过首选项下载,唯一的办法只能是自己动手下载并拷贝到Xcoede5.0下。 从Apple Developer Center下载Xcode4.6,从/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs目录中将iPhoneOS6.1.sdk复制到Xcode5.0对应的目录中。这样在项目选项的Base
SDK设置那里就会出现iOS 6.1的选项(默认只有最新的7.0),我猜测是必须同时在iPhoneOS.platform和iPhoneSimulator.platform下都有6.1.sdk才会使这个选项出现,但没有实践。
![](http://g.hiphotos.bdimg.com/album/pic/item/32fa828ba61ea8d393bc0326950a304e251f5871.jpg)
此时打开Xcode5.0,在模拟器的运行选项中会多出来一部分(竖线右边的部分在之前是没有的)。不用管竖线右边的部分,因为编译的时候使用的SDK版本和这个无关,这里只是选择了模拟器的系统版本(竖线左边部分)。
![](http://b.hiphotos.bdimg.com/album/pic/item/902397dda144ad347024f0a5d2a20cf431ad857c.jpg)
设置Base SDK,选择iOS 6.1,这个选项会决定使用那个版本的SDK进行编译。此时无论是在iOS7的真机还是模拟器下运行应用,该应用都会在iOS6兼容模式下运行:状态栏、键盘显隐动画、UITextView.contentSize的高度等许多使用iOS7编译会有不同行为的控件都会回来iOS6之前的行为。(目前已知UISegmentControl和UIAlertView无法回复,好像是因为这些控件由操作系统直接提供)
![](http://b.hiphotos.bdimg.com/album/pic/item/7c1ed21b0ef41bd53cc09fd653da81cb39db3d04.jpg)
在提交到AppStore之前需要进行归档,这里需要特别注意的是,如果直接进行归档,Xcode会默认使用iOS 7.0 sdk进行编译并归档,使之前所有的工作都前功尽弃。这里我没找到好办法,但在stack overflow上看到一个老外的回复提醒了我。做法是:关闭Xcode5.0,然后从/iPhoneOS.platform/Developer/SDKs目录下先将iPhoneOS7.0.sdk目录剪切到别的地方。然后重新打开Xcode5.0,这样在Base SDK那里就只剩下iOS6.1了。
这样一来,Xcode你再聪明也找不到iOS 7.0 SDK了吧(虽然很好找,我就剪切到上一级目录了)。然后再归档,将归档的ipa安装到iOS7的真机进行测试。ok了,大功告成。记得完工后关闭Xcode5并把iOS 7.0的SDK放回原位。
相关文章推荐
- 【转】总结:升级到xcode4.2 iOS sdk 5.0旧版工程编译后出现的警告解决办法
- 升级到xcode4.2 iOS sdk 5.0旧版工程编译后出现的警告解决办法
- Xcode – iOS Deployment Target 支持iOS7.0以下低版本 与 Base SDK 配置低版本iOS SDK运行环境
- ios:Xcode 5.0 编译低版本app
- UISegmentedControl好多属性设置在iOS7.0之后都失去了失效---也就是“过期了”! iOS7.0之后我们可以用以下方法!
- 使用XCode4.5.1编译iOS版Ogre1.8.1的方法
- XCode 4.2.1 (iOS SDK 5.0) for Lion
- 编译链接蘑菇街开源iOS SDK(TeamTalk)遇到的问题及解决方法
- IOS:Xcode 5.0 failed to get the task for process解决方法
- Xcode环境下osip,eXosip, openssl的静态库编译方法(编译出来给IOS使用)
- 在xcode 4.2.1中使用skd 5.0 编译出在ios 4.3或者其他版本里面可以用的应用
- iOS Xcode 5.1.1 使用微信不通过编译问题(ibWeChatSDK.a, missing required architecture arm64)
- Xcode环境下osip,eXosip, openssl的静态库编译方法(编译出来给IOS使用)
- iOS 中使用 XIB 自定义cell 的两种方法 以及 编译出现常见 的错误 ++++(xcode6.0之后)
- iphone ffmpeg -0.8.2 编译(ios 5.0,xcode 4.2 )
- Win7虚拟机安装 Mac OS X Lion 10.7.2 及 XCode 4.2.1 (iOS SDK5.0) 作开发
- iOS学习之加快XCode编译速度的方法详解
- [iOS]Xcode5下使用Makefile编译找不到GCC
- 各个版本的Xcode/IOS SDK官网下载
- 【iOS】Xcode7以后的添加empty project方法