单个应用程序二进制文件如何支持64位和32位应用程序

Man*_*ani 14 iphone app-store 32bit-64bit ios

我们可以在这里看到苹果公告..根据这个文档,我们可以提交相同的二进制文件,支持32位和64位.我发现这里有一个堆栈溢出答案.但根据这个答案,我们should设定deployment target as IO7+.但是苹果医生说,您可以通过IOS 7和IOS 6支持提交吗?我的问题是,如何通过部署目标IOS6 +生成支持32位和64位的二进制文件?

注意:我正在使用xcode 5.0

更新: Question above is fixed by using xcode 5.0.2.但我很困惑如何为32位以及64位编写代码.我知道一件事,我们必须在某些时候分别做两个代码.但是How can I do?.例如,如果在ios6中不推荐使用一种方法,我们也为ios 6和ios7提供代码.在同样的情况下也遵循这里或为此做一些其他技术.

cod*_*cat 19

Xcode可以构建包含32位和64位二进制文​​件的应用程序,因此它可以在运行iOS 7的所有设备上运行.如果您希望继续支持iOS 6,那么您将需要仅为32位构建.下个月我们将进行更改,允许您创建单个应用程序二进制文件,支持iOS 6上的32位,以及iOS 7上的32位和64位.

将您的应用程序转换为64位二进制文​​件

在较高的层次上,以下是创建针对32位和64位运行时环境的应用程序的步骤:

1.安装Xcode 5.0.1.

2.打开你的项目.Xcode会提示您使项目现代化.现代化项目会在编译64位应用程序时添加新的警告和错误.

3.更新项目设置以支持iOS 5.1.1或更高版本.如果它针对iOS 5.1之前的iOS版本,则无法构建64位项目.

4.将项目中的体系结构构建设置更改为"标准体系结构(包括64位)".

5.更新您的应用程序以支持64位运行时环境.新的编译器警告和错误将指导您完成此过程.但是,编译器不会为您完成所有工作; 使用本文档中的信息来指导您调查自己的代码.

6.在实际的64位硬件上测试您的应用程序.iOS模拟器在开发过程中也很有用,但只有当您的应用程序在设备上运行时,某些更改(例如函数调用约定)才可见.

7.使用Instruments调整应用程序的内存性能.

8.提交包含两种架构以供批准的应用程序.

本章的其余部分描述了将Cocoa Touch应用程序移植到64位运行时环境时经常出现的问题.使用这些部分来指导您自己调查代码的工作.

来自https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertingYourAppto64-Bit.html#//apple_ref/doc/uid/TP40013501-CH3-SW1


cod*_*cat 5

iOS应用程序依赖于Objective-C语言和系统框架建立的低级应用程序二进制接口和编码约定.从iOS 7开始,一些iOS设备使用64位处理器,并提供32位和64位运行时环境.对于大多数应用程序,64位运行时环境与32位运行时环境的区别在于两个重要方面:

在64位运行时中,Cocoa Touch框架使用的许多数据类型(以及Objective-C语言本身)已经增加了大小或者具有更严格的内存对齐规则.请参阅" 对数据类型的更改."64位运行时需要在进行函数调用时使用正确的函数原型.请参阅" 函数调用的更改 ".

应用程序二进制接口(ABI)

64位运行时的其他更改

64位ARM指令集与32位指令集明显不同.如果您的应用程序包含任何汇编语言代码,则需要重写它以使用新的指令集.您还需要更详细地描述iOS中的64位调用约定,因为这些约定与ARM标准不完全匹配.有关更多信息,请参阅iOS ABI函数调用指南.

在较高的层次上,为了使您的代码保持64位清洁,您必须执行以下操作:

  1. 避免将64位长整数分配给32位整数.
  2. 避免将64位指针分配给32位整数.
  3. 在算术运算期间避免指针和长整数截断(或由整数类型的变化引起的其他算术问题).
  4. 修复由数据类型大小的更改引起的对齐问题.
  5. 确保在32位和64位运行时之间共享的内存结构共享相似的布局.
  6. 重写任何汇编语言代码,以便您的代码使用新的64位操作码和运行时.
  7. 避免将可变参数函数转换为采用固定数量参数的函数,反之亦然.


Ret*_*tro 2

概括地说,以下是创建同时面向 32 位和 64 位运行时环境的应用程序的步骤:

\n\n

安装Xcode 5.0.2(我只完成了这个,也许越高越好)

\n\n

打开您的项目。Xcode 会提示您现代化您的项目。项目现代化添加了新的警告和错误,这在编译 64 位应用程序时非常重要。

\n\n

更新您的项目设置以支持 iOS 5.1.1 或更高版本。如果 64 位项目的目标版本早于 iOS 5.1,则您无法\xe2\x80\x99 构建该项目。

\n\n

将项目中的 Architectures 构建设置更改为 \xe2\x80\x9cStandard Architectures(包括 64 位)。\xe2\x80\x9d

\n\n

更新您的应用程序以支持 64 位运行时环境。新的编译器警告和错误将帮助指导您完成此过程。但是,编译器不会为您完成所有工作。使用本文档中的信息来帮助指导您调查自己的代码。

\n\n

在实际的 64 位硬件上测试您的应用程序。iOS 模拟器在开发过程中也很有帮助,但某些更改(例如函数调用约定)仅当您的应用程序在设备上运行时才可见。

\n\n

使用 Instruments 调整您的应用\xe2\x80\x99s 内存性能。\n提交包含两种架构的应用以供审批。

\n\n

本章的其余部分描述将 Cocoa Touch 应用程序移植到 64 位运行时环境时经常出现的问题。使用这些部分来指导您自己研究代码的工作。

\n\n

请遵循Apple支持 32 位和 64 位架构的指南

\n