iOS 64位兼容性

时间:2014-12-18 09:58:36

标签: ios objective-c iphone xcode

今天早上我收到苹果公司的一封电子邮件说:

  

亲爱的开发者,

     

正如我们在10月份宣布的,从2015年2月1日开始推出新的iOS应用程序   提交到App Store必须包含64位支持并构建   使用iOS 8 SDK。从2015年6月1日开始,还需要更新应用更新   遵循相同的要求。要在项目中启用64位,我们   建议使用默认的Xcode构建设置“Standard   体系结构“用32位和64位构建单个二进制文件   码。

     

如果您有任何疑问,请访问Apple Developer论坛。

     

最好的问候,Apple开发者技术支持

现在我有一个问题,您如何确保iOS应用程序与64位兼容?

我的构建设置如下所示: Architectures

我的部署目标是iOS 6.0。

我只需要确认该应用程序是64位兼容的,我不熟悉iOS并且不久前接管了一个相当大的项目,所以我更愿意并且100%肯定。

为了让事情更清楚一点,您如何确保iOS应用程序与64位兼容?我知道您需要设置某些构建规则,例如图像中的构建规则,但我想知道有没有办法知道您的iOS应用程序是64位兼容的。 32位iOS应用程序可以在64位硬件上运行,所以我不相信检查iOS应用程序在设备上运行是否有帮助。

我相信你可以上传一个新版本,看看你是否收到了这条消息:但我希望在不上传新版本的情况下提供一个不错的选择。 image

谢谢!

1 个答案:

答案 0 :(得分:10)

根据您的设置,您应该在二进制文件中使用arm64和armv7。你不会得到armv7s,因为虽然它是一个有效的架构,it's not included in ARCHS_STANDARD如果建立在Xcode 6(See also)上。

仅仅因为它在64位设备上运行,并不意味着它具有64位支持。 64位设备可以运行32位应用程序。

要确定它是否包含arm64块,您需要找到该应用程序。转到Xcode首选项,然后选择Locations标记。派生数据行告诉您构建文件的位置。

XCode settings : Locations

打开终端(Finder-> Applications-> Utilities-> Terminal)并使用'cd'命令转到该位置。在我的例子中,我的项目存储在〜/ MyProject

$ cd ~/MyProject
$ cd build
$ find . -name MyTarget
./build/MyTarget
./build/MyTarget/Build/Products/Debug-iphoneos/MyTarget.app/CoreControl
./build/MyTarget/Build/Products/Debug-iphoneos/MyTarget.app.dSYM/Contents/Resources/DWARF/CoreControl

现在我们知道存储二进制文件的位置(这是第二个结果),我们可以检查它以查看它包含的体系结构:

$ dwarfdump ./build/MyTarget/Build/Products/Debug-iphoneos/MyTarget.app/MyTarget
----------------------------------------------------------------------
 File: ./build/MyTarget/Build/Products/Debug-iphoneos/MyTarget.app/MyTarget (armv7)
----------------------------------------------------------------------
.debug_info contents:
< EMPTY >

在我的情况下,我只有arm7内置,而不是arm64。