编译仅支持armv7架构的程序有哪些好处/后果?

14
在编译 iPhone 应用时,有一个“优化”的架构设置(仅限 armv7),与标准的 armv6/armv7 架构相比。
编译仅支持 armv7 架构的应用程序有什么好处或后果?
2个回答

19

除非您的程序需要使用OpenGLES 2.0(仅支持armv7设备),否则应编译标准的fat(armv6 / armv7)二进制文件。 fat二进制文件基本上是将两个(或更多)Mach-O二进制文件粘合在一起,并在开头添加一个单一的页眉。性能成本几乎可以忽略不计:动态加载器必须进行额外的页面错误以确定要加载哪个体系结构。

仅为armv7构建将基本上使您的可执行文件大小减半,尽管您的可执行文件可能本来就不大。您可以在主机上使用“size”和“otool”命令获取有关应用程序二进制文件中各个部分的更多信息,例如“size -arch armv6 build / Release / MyApp.app / MyApp”将获取二进制文件版本中各个部分的大小,"size -arch armv7 build / Release / MyApp.app / MyApp" 将获取二进制文件版本中各个部分的大小,而“ls -l build / Release / MyApp.app / MyApp”将获取二进制文件的实际文件大小。


13

较小的可执行文件可以更快地从应用商店下载。但是,这样就削减了非ARMv7设备


在当前的设备阵容中,有哪些设备不是armv7架构的? - coneybeare
4
可能是iPhone、iPhone 3G、iPod Touch第一代和第二代。 - Alex Reynolds
@Alex 对于拥有 iPhone 3G 的人来说,在应用商店中的应用会发生什么?他们无法下载该应用程序还是在启动时崩溃了? - CedricSoubrie
1
如果你没有在Info.plist中相应地标记为仅适用于第三代及以上设备,Apple可能会驳回该应用程序。我相信实现这一点的方法是指定您的应用程序需要OpenGL ES 2.0。此博客文章中的图片(http://meachware.blogspot.com/2010/08/infoplist-cheat-sheet.html)显示了正确的设置(opengles-2)。 - CodeSmile
4
在App Store中标记你的应用只适用于armv7架构,你需要将"armv7"添加到Info.plist文件中的UIRequiredDeviceCapabilities列表中。 - Chris Miles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接