Facebook SDK对于iOS6/Xcode 4.5不起作用。

13

可能是重复问题:
file is universal (3 slices) but does not contain a(n) armv7s slice error for static libraries on iOS, anyway to bypass?

我最近升级了Xcode和我的iOS设备到最新的版本,现在我无法使用Facebook SDK(版本3.0.8)构建设备上的应用程序 - 在模拟器上构建可以正常工作。

在尝试构建时收到的错误:

file is universal (3 slices) but does not contain a(n) armv7s slice: ....FacebookSDK.framework/FacebookSDK for architecture armv7s

我注意到在iOS SDK的首页(http://developers.facebook.com/ios/)上有这段文字:

升级到3.0 SDK。我们将在未来几周内为SDK添加期待已久的iOS 6集成支持。

那么,是这样吗?难道我真的要等待几个星期才能继续工作,直到他们支持iOS6?

我希望有一个快速解决方法,肯定不止我一个人遇到这种情况吧。

感谢您提供的任何帮助。


https://dev59.com/y2ct5IYBdhLWcg3wCJF- - Shmidt
已经查看了那些建议,但都没有起作用。而且,当提交应用程序到App Store时,它不会上传成功吗? - user1168056
这个解决方案对我有效,希望能帮到你:iOS静态库出现“文件是通用的(3个切片),但不包含armv7s切片”的错误,有什么方法可以绕过? - sonoshin
你需要将你的Facebook SDK更新到3.1.1版本。 - Mehdi
2个回答

15

暂时的解决方法是可以按照Sudhakar所说的做法,但应用程序无法在 iPhone 5 上运行(或至少在我的测试中没有成功)。你真的需要一个正确编译的SDK。

当前的Facebook SDK是为armv6构建的。我听说他们正在努力尽快推出一个针对armv7构建的新版本。

与此同时,您可以从Github克隆 Facebook SDK 并自己编译以适用于armv7。以下是说明:

  1. 从 github 页面下载或克隆源代码副本(https://github.com/facebook/facebook-ios-sdk)
  2. 打开 Xcode 项目并在构建设置中将体系结构更改为 armv7。
  3. 保存并关闭
  4. 转到/scripts,在终端中运行 build_all.sh

然后,这将编译源代码并输出 builds/FacebookSDK.framework。为了使其正常工作,我必须克隆 git 存储库到 /Desktop/iOS。我用新创建的版本替换了应用程序中原有的 FacebookSDK.framework,它像魔术般地工作了。

祝好运!


1
非常好的答案,我是一个大粉丝 :) - Jef
1
不为armv7s编译不应意味着该应用程序无法在iPhone 5上运行 - 如果是这种情况,那么使用Xcode 4.5之前版本构建的旧应用程序(即App Store上当前大多数应用程序)也无法在iPhone 5上运行,您可以轻松验证它们确实可以。 iPhone 5显然与armv7向后兼容 - 仅为armv7s编译只允许进行额外的编译优化,而在armv7中不可用。 - Martin Gjaldbaek

8

点击你的Xcode项目 -> 在 Architectures 选项卡中 -> 有效架构 -> 只保留 armv7 并移除 armv7s。 在我的情况下,这个方法运行得很好,但仅仅是一种临时解决方案。


是的,目前这就是我能找到的所有内容。这些临时解决方案肯定会在应用商店提交时失败... 我们很快就会知道了。 - user1168056

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