从 Xcode 4.5 开始,我们无法为 armv6 构建,因此无法再支持 iPhone 3G 等设备。
是否可以使用 Xcode 4.3 生成正确签名的 armv6 二进制文件,然后使用 lipo 将该二进制文件和 Xcode-4.5 生成的 armv7 二进制文件组合成一个胖子?
我该怎么办?有谁知道好的教程吗?
是否允许将生成的胖二进制文件提交到 App Store?
使用 lipo 修改二进制文件后,代码签名将不再匹配。因此,捆绑包之后需要重新设计。
使用 Xcode 4.4 甚至更早版本构建的应用程序仍然可以在 iOS 6 设备上正常运行;并且有报道称 Apple 仍在接受使用 iOS 5.1 SDK 构建的应用程序。
Objective C 将允许您使用一些不在旧链接框架中的较新 API,方法是通过名称通过 Objective C 运行时调用它们。(当然,应用程序应该首先检查它们在当前设备上的可用性!)
您甚至可以从早期的 Xcode 和 pre-iOS-6 SDK 支持新的 iPhone 5 显示,只需在应用程序包中包含一个 568@2x 高的默认图像,并正确设置应用程序的所有窗口和视图大小以及调整属性大小。更新:当提交到 iTunes App Store 时,Apple 不再接受以这种方式构建的应用程序。
补充:另一个潜在的解决方案是将您的开发分成两个类似的应用程序。一个适用于 iOS 4.3 及更高版本。一款适用于不支持 iOS 6 和 iPhone 5 的 iOS 4.2.x 及更低版本。应用商店中有两个不同的应用。然而,苹果是否会允许这样做还不得而知。
似乎其他人想出了如何做到这一点,请参阅此 SO question。
不过,我自己还没有测试过。