ChatGPT解决这个技术问题 Extra ChatGPT

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

我最近刚刚下载了带有 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 的支持。您需要做的是在您的目标和项目的构建设置下的架构字段中添加 armv6。然后您的应用程序将能够在 iPhone 3G 设备上运行。可以在此处找到答案How to build for armv6 and armv7 architectures with iOS 5

请注意,您的编辑与架构有关,这与 iOS 版本不同。另外,请将编辑添加为答案,以便您可以接受找到的解决方案,并且可以将此问题标记为已回答。

m
mmorris

我在尝试让新创建的 Xcode 4.2 项目在 iPhone 3G 4.2.1 上运行时遇到了同样的问题。这是我如何让它运行的方法。

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

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

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

https://i.stack.imgur.com/9jAHt.png

https://i.stack.imgur.com/y0rfw.png

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

无法安装应用程序 /Users/.../TestsDebug.app 应用程序的 Info.plist 指定了设备能力要求,Dev iPhone 3G 不满足这些要求

之后一切都应该工作。谈论一个 PITA。


非常感谢!我欠你一杯啤酒!这确实解决了我的问题,PITA 确实:D
谢谢!我在其他地方读过有关架构设置的信息,但似乎也没有人提到“所需的设备功能”设置。
必须补充一点:新老项目都影响升级!我在谷歌搜索之前测试了我的旧东西,它们也没有工作!我也欠你一杯啤酒! :)
我有同样的问题,但即使项目的设置是架构的“标准 armv7”,有效架构已经指示“armv6 armv7”。此外,我在 Info.plist 中没有“必需的设备功能”属性。尽管如此,还是会尝试这个技巧,希望它会奏效!
“所需的设备功能”也让我
P
Programmer...

转到 Xcode > Preferences > Downloads 并安装对旧 iOS 版本的调试支持。


我去了首选项并下载并安装了对旧操作系统的调试支持,退出 xcode,重新打开 xcode 进行了清理和构建,但该应用程序仍然无法安装在我的旧设备上。我现在完全不知所措,因为当我看到您的回复时,我认为这肯定会解决我的问题:(
我也欠你一杯啤酒!这解决了我在 Xcode 4 升级后遇到的另一个问题!我现在可以调试我的 iOS 4.2 设备(iPod Touch 2nd gen)!
J
John Conde

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


F
Foo Bah

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

有关更多信息,请参阅开发人员页面。它在 4.2 beta 的注释中有所描述


我这样做并单击“使用此设备进行开发”,它似乎做了它应该做的事情,但我仍然无法从 xcode 让应用程序在我的旧设备上运行。
o
otto

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

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

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


A
Adam Lear

我发现我必须将 armv6 添加到架构中,但仍然无法正常工作。现在我已经从所需的功能中删除了 armv7,就是这样!有效!


T
Tom Boutell

这对我有用,如果你以前有旧版本的 Xcode,应该对你有用。如果没有,那么您应该按照其他人的建议从旧版本的 SDK 中获取 SDK:

sudo 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 文件夹本身中 - 我们希望使用适当的名称创建它的子目录。


A
Arkady

https://i.stack.imgur.com/64iyT.png

我刚刚删除了它...

https://i.stack.imgur.com/AsFrb.png

希望它会帮助别人。