如何使用iOS 5构建armv6和armv7体系结构

如何使用iOS 5构建armv6和armv7体系结构,ios,ios5,Ios,Ios5,在iOS5中,苹果将armv6架构从ARCHS_标准32位中删除 为了保持对iPhone3G的支持,即使在iOS5中,我仍然希望在armv6中编译 有人找到了解决方案吗?我今天刚刚构建了一个东西,指定了iOS 4.0的部署目标。由于架构中只指定了armv7,Xcode警告我,为了支持iOS4.2以下的任何内容,我必须在架构中包含armv6。只需编辑该字段,在弹出对话框时单击“+”按钮并输入文字“armv6” 在我的例子中,我们希望我们的应用程序在iOS4和iOS5下工作。我们必须进行一些修改,以

在iOS5中,苹果将armv6架构从ARCHS_标准32位中删除

为了保持对iPhone3G的支持,即使在iOS5中,我仍然希望在armv6中编译


有人找到了解决方案吗?

我今天刚刚构建了一个东西,指定了iOS 4.0的部署目标。由于架构中只指定了armv7,Xcode警告我,为了支持iOS4.2以下的任何内容,我必须在架构中包含armv6。只需编辑该字段,在弹出对话框时单击“+”按钮并输入文字“armv6”

在我的例子中,我们希望我们的应用程序在iOS4和iOS5下工作。我们必须进行一些修改,以便它在iOS5下正常工作,但所有这些更改都是通过iOS4友好的代码更改完成的

我们还添加了一些特定于iOS5的功能,允许应用程序在iOS4下运行而不会崩溃。具体来说,我们在尝试使用iOS5功能之前测试了它们,并将仅限iOS5的库链接为可选库

因此,在iOS5世界中支持iPhone3G可能意味着“我们希望我们的应用程序在iOS4及以上版本上运行(无论使用什么iOS5功能)”,而不是“我们希望确保我们的应用程序在运行iOS5的旧设备上运行”。这里有区别;想想看。:-)


无论如何,重新添加对armv6的支持非常容易。我想重点是:在某个时刻,当没有更多的armv6设备可供担心时(无论出于何种原因),您将不必为其构建。苹果的观点是,每个人都应该尽快升级到最新的硬件。因此,在这个世界上,除了最新和最伟大的工具之外,没有必要将工具默认为任何东西。:-)幸运的是(或者不是),我们开发人员生活在现实世界中,并且认识到您必须在一段时间内支持旧的东西。我想Xcode开发团队也知道这一点,这就是为什么您可以简单地添加对armv6的支持。

我今天刚刚构建了一些东西,指定了iOS 4.0的部署目标。由于架构中只指定了armv7,Xcode警告我,为了支持iOS4.2以下的任何内容,我必须在架构中包含armv6。只需编辑该字段,在弹出对话框时单击“+”按钮并输入文字“armv6”

在我的例子中,我们希望我们的应用程序在iOS4和iOS5下工作。我们必须进行一些修改,以便它在iOS5下正常工作,但所有这些更改都是通过iOS4友好的代码更改完成的

我们还添加了一些特定于iOS5的功能,允许应用程序在iOS4下运行而不会崩溃。具体来说,我们在尝试使用iOS5功能之前测试了它们,并将仅限iOS5的库链接为可选库

因此,在iOS5世界中支持iPhone3G可能意味着“我们希望我们的应用程序在iOS4及以上版本上运行(无论使用什么iOS5功能)”,而不是“我们希望确保我们的应用程序在运行iOS5的旧设备上运行”。这里有区别;想想看。:-)


无论如何,重新添加对armv6的支持非常容易。我想重点是:在某个时刻,当没有更多的armv6设备可供担心时(无论出于何种原因),您将不必为其构建。苹果的观点是,每个人都应该尽快升级到最新的硬件。因此,在这个世界上,除了最新和最伟大的工具之外,没有必要将工具默认为任何东西。:-)幸运的是(或者不是),我们开发人员生活在现实世界中,并且认识到您必须在一段时间内支持旧的东西。我想Xcode开发团队也知道这一点,这就是为什么您可以简单地添加armv6支持。

还不确定这是否是一个解决方案,但我发现用“armv6 armv7”替换“architectures”中定义的字符串,它是$(ARCHS_STANDARD_32_位)允许我以iOS5为基础,iOS4为部署目标进行编译,并通过验证


我没有使用任何IOS5独占库或调用,但打算在我的下一个版本中使用。

不确定这是否真的是一个解决方案,但我发现用“armv6 armv7”替换“architectures”中定义的字符串,即$(ARCHS_STANDARD_32_位),可以使我以IOS5为基础,iOS4为部署目标进行编译,并通过验证


我没有使用任何IOS5专用库或调用,但打算在下一版本中使用。

我认为苹果将armv6从标准设置中删除是有原因的

我已经用iOS5 SDK编译了armv7/armv6,但是,armv6编译器在发布模式下生成了错误的代码。经过数小时的寻找解决方案(尝试不同优化级别的llvm或gcc)后,我放弃了

所以,只要我支持旧的armv6设备,我就回到iOSSDK4.x

代码示例:

// myView center=(160, 100)
CGPoint p=myView.center;  
// now p=(100,100) (what the heck?)
p.x=myView.center.x;
p.y=myView.center.y;
// now p=(160,100) 
p.y+=100;
// now p =(200,200) (what the heck?)
也许我有一些内存损坏,但是,在armv7编译器和iOSSDK<5.0上,它的行为与预期的一样


致以最诚挚的问候

我认为苹果将armv6从标准设置中删除是有原因的

我已经用iOS5 SDK编译了armv7/armv6,但是,armv6编译器在发布模式下生成了错误的代码。经过数小时的寻找解决方案(尝试不同优化级别的llvm或gcc)后,我放弃了

所以,只要我支持旧的armv6设备,我就回到iOSSDK4.x

代码示例:

// myView center=(160, 100)
CGPoint p=myView.center;  
// now p=(100,100) (what the heck?)
p.x=myView.center.x;
p.y=myView.center.y;
// now p=(160,100) 
p.y+=100;
// now p =(200,200) (what the heck?)
也许我有一些内存损坏,但是,在armv7编译器和iOSSDK<5.0上,它的行为与预期的一样


最好的问候

简单的答案是,您必须将当前设置从“标准(armv7)-$(ARCHS_标准_32_位)”更改为“armv6”和“armv7”。见下图。您必须删除具有以前设置的行才能使其工作


简单的答案是,您必须将当前设置从“标准(armv7)-$(ARCHS_标准\u 32位)”更改为“armv6”和“armv7”。见下图。您必须删除带有t的行