使用Xcode 4.2和iOS 5 SDK时是否可以定位较旧的iOS版本?


103

我刚刚下载了带有iOS 5 SDK的Xcode 4.2软件包,我立即注意到我无法使用iOS 4.2.1的iPhone 3G进行调试。我只能在安装了iOS 5的iphone 4上进行调试和测试。

对于我的任何运行低于5.0的iOS的设备,Xcode都显示“已完成为iPhone3GS运行”,但未运行。我将部署目标设置为3.0,因为我没有在3.0以上的应用中使用任何功能,并且希望能够以3.0或更高版本为目标。我已经安装了所有预配配置文件,并且是最新的。

我退出并重新启动了xcode,我已经多次清理了构建。我曾尝试在架构构建设置中添加armv6,但没有任何东西可以让我在装有ios 4.2.1的旧手机上构建和运行我的应用程序。

我的问题是,是否仍可以使具有新SDK的应用程序适用于低于5的iOS版本?如果无法在旧手机上安装我的应用,如何确定我的应用仍可以在较低的iOS版本上运行?

编辑: 好的,默认情况下,iOS SDK 5似乎放弃了对armv6的支持。您需要做的是在Target和Project的Build Settings下的Architectures字段中添加armv6。然后,您的应用程序将能够在iPhone 3G设备上运行。在这里可以找到答案。 如何使用iOS 5为armv6和armv7架构进行构建


请注意,您的编辑与体系结构有关,这是iOS版本的独立问题。另外,请添加编辑内容作为答案,这样您就可以接受找到的解决方案,并且可以将此问题标记为已回答。

Answers:


153

我在尝试使新创建的Xcode 4.2项目在iPhone 3G 4.2.1上运行时遇到了同样的问题。这就是我能够使其运行的方式。

1)将目标的“构建设置” ==>“架构”从“标准(armv7)”更改为“其他”。添加armv6和armv7。

2)将目标的“构建设置” ==>“有效架构”更改为armv6和armv7。

3)将目标的“构建设置” ==>“ iOS部署目标”更改为iOS 4.2。

在此处输入图片说明

4)打开项目* -Info.plist,删除设置“必需的设备功能”(注意,它是armv7必需的) 在此处输入图片说明

顺便说一句,当我尝试通过管理器手动添加应用程序时,我发现了这一点,并报告:

无法安装应用程序

/Users/.../TestsDebug.app上的应用程序的Info.plist指定了设备功能要求,但Dev iPhone 3G无法满足

在那之后所有人都应该工作。谈论PITA。


非常感谢你!我欠你一些啤酒!这确实解决了我的问题,PITA确实是:D
Greg Ellis

4
谢谢!我曾在其他地方读过有关体系结构设置的信息,但似乎没有人提到“必需的设备功能”设置。
bunnyhero 2011年

我必须补充:新旧项目都将影响升级!我在谷歌搜索之前测试了我的旧资料,但它们也没有用!我也欠你一杯啤酒!:)
Eduardo Costa

1
我也有同样的问题,但是即使项目设置为Architectures的“ Standard armv7”,Valid Architectures也已指示“ armv6 armv7”。此外,Info.plist中没有“必需的设备功能”属性。尽管如此,还是可以尝试一下,希望它能起作用!
rchampourlier

“必需的设备功能”也给我带来了
codecaffeine 2012年

12

转到“ Xcode”>“首选项”>“下载”,并安装对旧iOS版本的调试支持。


我选择了首选项,并下载并安装了对较旧操作系统的调试支持,退出了xcode,重新打开了xcode进行了清理和构建,但该应用程序仍无法安装在我的较旧设备上。我现在全神贯注,因为当我看到您的回应时,我确定可以解决我的问题:(
Greg Ellis

1
我也欠你一杯啤酒!这解决了Xcode 4升级后我遇到的另一个问题!我现在可以调试我的iOS 4.2设备(iPod Touch第二代)!
爱德华多·科斯塔

3

mmorris使我接近解决问题的方法...在Info.plist中,我必须将“必需的设备功能”设置为armv6,而不是armv7,希望这也会对其他人有所帮助。


1

您需要连接电话,然后转到组织者。Xcode应该自动请求旧版本。

有关更多信息,请参见开发人员页面。在4.2 beta版本的说明中对此进行了描述


我做到了,然后单击“使用此设备进行开发”,它似乎可以完成预期的工作,但是我仍然无法从xcode的旧设备上运行应用程序。
格雷格·埃利斯

1

尝试在旧的iPod Touch上运行我的应用程序时,我遇到了类似的问题。我已升级到Xcode 4.3.3,该应用程序将不再在较旧的硬件上为我运行在调试器中。

我相信这里有关“架构”和“必需的设备功能”的其他评论是可以正确指定的重要细节。不幸的是,他们还不足以解决我的问题。

就我而言,我发现构建方案是罪魁祸首。Xcode 4.3.3提示我在升级项目时从GDB调试器切换到LLDB。当我将方案的“运行”操作更改回GDB时,我能够通过Xcode在旧硬件上再次运行该应用程序。


1

我发现必须将armv6添加到体系结构中,但仍然无法正常工作。现在,我已从所需功能中删除了armv7,仅此而已!有效!


0

这对我有用,如果以前使用的是旧版本的Xcode,则应该对您有用。如果不是,那么您应该遵循其他人的建议以从较旧版本的SDK获取SDK:

须藤cp -a /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk

该命令与其他命令仅稍有不同,但是对于我来说,这些命令将文件本身拖放到了SDKs文件夹中-我们希望使用适当的名称来创建其子目录。


0

就我而言,“必需的设备功能”中有一条多余的线 在此处输入图片说明

我刚刚删除了...

在此处输入图片说明

希望它将对其他人有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.