iOS 64位兼容性

今天早上我收到苹果的一封电子邮件,内容如下:

亲爱的开发者

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

如果您有任何问题,请访问Apple开发者论坛。

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

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

我的构build设置如下所示: 架构

我的部署目标是iOS 6.0。

我只需要确认该应用程序是64位兼容的,我都是iOS新手,不久之前接pipe了一个相当大的项目,所以我宁愿要求100%确定。

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

我相信你可以上传一个新的版本,看看你是否得到这个消息:但我希望有一个不错的select,而不需要上传一个新的版本。 图片

谢谢!

使用你的设置,你应该在你的二进制文件中使用arm64和armv7。 你不会得到armv7s,因为虽然它是一个有效的架构, 但如果在Xcode 6上构build的话, 它不会被包含在ARCHS_STANDARD中 ( 参见 )。

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

要确定它是否包含arm64块,您需要find该应用程序。 转到Xcode首选项,然后select位置标记。 派生数据行告诉你在哪里构build文件。

XCode设置:位置

打开一个terminal(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。