【问题标题】:Check supported architectures of framework in Objective-C检查 Objective-C 中支持的框架架构
【发布时间】:2014-01-13 18:40:40
【问题描述】:

根据 Apple 在明年 2 月(2014 年 2 月)的要求,提交到 AppStore 的每个应用都需要支持 Arm64 架构。在我的项目中,我使用了许多静态库 (*.a),我可以检查这些库是否支持 arm64 架构。但是,我不知道 Facebook.framework 等一些框架是否支持这个新架构。如何查看?

【问题讨论】:

  • 不好意思,要支持Arm64的需要分享参考消息吗?
  • 嗨@fattomhk,我很抱歉,它说提交到Appstore的新应用程序必须使用最新的Xcode 5构建并针对iOS 7进行优化,而不是必须支持arm64。但是 iPhone5S 和最新的 iOS 设备都是基于 arm64 构建的,所以我认为我们应该尽快做出改变。这是链接:developer.apple.com/news/index.php?id=12172013a
  • 如果是这样的话,我会放弃一些需要支持iOS5+的客户项目。我打赌苹果希望 ios7 只能运行所有应用程序。我会把这个问题留到 2 月份,直到 Apple 拒绝我的更新。 (天哪,如果必须支持 arm64,那 iOS7 UI 指南……)

标签: ios iphone objective-c ipad


【解决方案1】:

每个框架实际上只是一个目录——甚至不像包目录,而是一个普通目录,您可以使用 Finder 直接浏览。进入 .framework 文件夹,您会在顶层找到一个与框架同名的文件(对于较旧的框架,该文件可能位于 .framework 文件夹中名为 Versions/A 的文件夹下)。

该文件实际上是一个静态库 (.a) 文件,只是没有扩展名。像检查任何静态库一样检查它(使用filelipo -info),您将看到文件包含哪些二进制文件。

不过,您也可以通过 XCode 了解。如果您将项目切换为支持 arm64 并且您要链接的库不支持 arm64,则 XCode 在为设备编译时将无法完成链接。

【讨论】:

  • 谢谢,这是真的。有一个与框架同名的文件,他们隐藏了扩展名,我现在可以检查它。
  • Yosemite的文件版本可以检测到arm64(已确认)
  • 谢谢@nick,我更新了答案以删除过时的东西。距离 64 位过渡已经有一段时间了。
  • 扩展名没有隐藏。根本没有扩展。框架内的库文件以框架的原始名称命名,没有前缀、后缀或扩展名。
  • 很好的答案,谢谢。我曾经为此使用“otool -hv”,并且不得不在长长的 Mach 标头列表中繁琐地寻找我需要的架构......这很漂亮而且很有帮助。
【解决方案2】:

在终端中检查以下命令
lipo -info yourlib.a

输出如下:
Architectures in the fat file: yourlib.a are: i386 x86_64 armv7 arm64

万一Framework.framework

进入如下内部框架
cd /Your_Path_/CocoaLumberjack.framework

然后运行命令
lipo -info CocoaLumberjack

【讨论】:

  • 似乎 lipo 命令不适用于 iOS 的动态框架,因为我无法为 .framework 库执行此命令。
  • @NirbhaySingh 使用 sudo 仔细检查
猜你喜欢
  • 1970-01-01
  • 2011-10-09
  • 2013-12-10
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 2014-05-12
  • 1970-01-01
相关资源
最近更新 更多