iOS 64位兼容性

apm*_*991 10 iphone xcode objective-c ios

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

亲爱的开发者,

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

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

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

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

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

我的部署目标是iOS 6.0.

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

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

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

谢谢!

Air*_*Ltd 10

根据您的设置,您应该在二进制文件中使用arm64和armv7.你不会得到armv7s,因为虽然它是一个有效的架构,如果在Xcode 6上构建,它也不包含在ARCHS_STANDARD中(参见参考资料).

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

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

XCode设置:位置

打开终端(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
Run Code Online (Sandbox Code Playgroud)

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

$ 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 >
Run Code Online (Sandbox Code Playgroud)

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