iOS 中静态库的 64 位支持

64bit support for static libraries in iOS

根据 Apple 6 月 1 日之后,非针对 64 位构建的应用上传到应用商店时将被自动拒绝。我的应用程序使用 "Standard architectures",BaseSDK 是 8.0。乍一看,这意味着该应用程序符合这些规则,但如果外部库不是 64 位,会发生什么情况?例如

$ lipo -info libssl.a 
Architectures in the fat file: libssl.a are: armv6 armv7 

这个 libssl.a 文件似乎是为 32 位编译的。但是我的应用程序中确实需要它,因此它已链接。我的应用程序在 AppStore 中存在很长时间,它最初是用 32 位构建的。现在使用 "Standard architectures" 它编译时支持 32 位和 64 位。

这样可以吗,还是我需要 64 位版本的我的静态库

是的。

如果您的项目是 64 位的,而外部库是 32 位的,您的项目甚至无法编译。

要使最终应用成为 64 位,一切都必须是 64 位

一切都意味着

  • 应用本身
  • 所有链接的静态库
  • 所有链接的动态库
  • 所有链接框架(苹果的通常是!)
  • 全部包含'extensions'(它们是自己的应用程序)