Xcode 4.5和iOS 4.2.1不兼容
最新的发行说明表明4.2.1和更低版本将不受支持,我们现在必须使用2版本的Xcode来开发支持旧设备的Xcode??如果我们想开发iOS6并支持4.2及更低版本,那么支持旧设备将很困难Xcode 4.5和iOS 4.2.1不兼容,ios,xcode,cocoa-touch,Ios,Xcode,Cocoa Touch,最新的发行说明表明4.2.1和更低版本将不受支持,我们现在必须使用2版本的Xcode来开发支持旧设备的Xcode??如果我们想开发iOS6并支持4.2及更低版本,那么支持旧设备将很困难 我认为Xcode 4.4不支持iOS6。这就是问题所在。开发者如何轻松地支持这些平台而不费吹灰之力呢?最初的iPhone和iPhone 3G是唯一不支持iOS 5的设备。iphone3g已经有4年的历史了。您可能想考虑放弃对iOS 4的支持。如果你不想这样做,我认为你必须使用两种不同版本的Xcode进行开发。Xc
我认为Xcode 4.4不支持iOS6。这就是问题所在。开发者如何轻松地支持这些平台而不费吹灰之力呢?最初的iPhone和iPhone 3G是唯一不支持iOS 5的设备。iphone3g已经有4年的历史了。您可能想考虑放弃对iOS 4的支持。如果你不想这样做,我认为你必须使用两种不同版本的Xcode进行开发。Xcode 4.5使iOS 4.3成为最早受支持的操作系统,实际上是原始iPhone和3G的孤儿 如果您想支持4.3之前的iOS版本,则需要保留大约4.4版本的Xcode 更清楚一点:你不能轻易地(意味着Xcode没有现成的)支持4.3版本之前的设备并在同一个应用程序中使用iOS 6功能。这是因为iOS 6功能需要XCode 4.5,而XCode 4.5也将iOS 4.3设置为支持的最低操作系统 因此,您有3种选择:
如果您愿意超出Xcode直接支持的范围,请参阅Nate的答案。我认为将目标设定为4.3是最佳选择,根据尝试使用
IPHONEOS\u DEPLOYMENT\u TARGET=4.0
手动设置项目设置。但是,我不知道是否有任何副作用。我认为对iOS 4.2.1的支持下降不是核心问题。事实上,我试图解决这个问题,并做了以下工作:
- 使用iOS 6 SDK构建应用程序,将部署目标设置为iOS 4.2.1(有效)
- 打包应用程序进行临时安装,并在iOS 4.2.1设备(iPod touch 2G)上安装应用程序
- 测试应用程序
编辑:您不能这样做,因为iOS 6基本SDK不适用于armv6。是吗?您可以这样做,但它需要一些小的Xcode攻击和一些牺牲。根据您所说的“支持iOS 6”的含义,这可能对您来说已经足够了,也可能还不够。如果你只是想让你的应用程序在iOS 6上运行,那么这应该是可行的。如果你还需要你的应用加入新的iOS 6功能,那么它就不会 (对于使用多个版本的Xcode没有问题的其他人,请注意:答案允许您也使用新的iOS 6 API并直接针对ARMV7) (但也请阅读下面的其余部分!) 基本上,您可以使用Xcode 4.5为iOS 4及更高版本构建,但是您不能利用iOS 6独有的新功能。因此,您正在为iOS 4和iOS 5构建应用程序,并假设该应用程序在iOS 6上运行良好(这应该是真的,但您需要自己进行测试) 您需要复制iOS 5 SDK文件夹
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.*.sdk
从旧的Xcode安装(您需要暂时保留,或者重新安装到非标准位置)。然后,将构建设置中的部署目标设置为iOS 4.0(或任何您想要的最低操作系统)。您可能需要在文本编辑器中打开project.pbxproj
文件来手动设置:
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
您还需要将架构设置为armv6
和armv7
。您不能直接也目标armv7s
。但是,这并不意味着你的应用程序不能在iPhone5上运行armv7
可执行文件应该在iphone5上运行,而无需在armv7s
中添加任何优化。只是兼容性在另一个方向不起作用(例如,armv7
可执行文件不在armv6
iphone3g上运行)
还有一个步骤可能是必要的,那就是chpwn的博客中没有提到的。您可能会收到以下警告(实际上是错误,因为Xcode无法正确生成可执行文件):
警告:对于体系结构armv6,没有处理sourcecode.c.objc类型的文件“$(PROJECT_DIR)/main.m”的规则
为了解决这个问题,您需要为您的目标设置一个定制的构建规则,告诉Xcode使用LLVM GCC 4.2来生成armv6代码。为与模式匹配的文件定义规则*。[mc]
:
这将是一个不同于Xcode默认值的编译器,您可能需要调整Objective-C代码中的一些语法。尽管很多想这样做的人可能是在ARC之前编写了他们的应用程序,但需要注意的是
最后,您可能仍然会看到来自Xcode的关于iOS部署目标低于4.3的警告,以及armv6
不受支持的警告。我发现这些都不是问题,可以忽略:
在我的应用程序可执行文件上运行lipo-info