【问题标题】:ios conditionally switch off facebook sdkios 有条件地关闭 facebook sdk
【发布时间】:2013-05-28 10:50:51
【问题描述】:

我将 Facebook 广告 SDK 集成到我的应用中。但是,SDK 支持的最低 iOS 版本是 5.0,而我的应用的部署目标是 4.3。

而且,正如预期的那样,它在应用启动时崩溃了

dyld: Symbol not found: OBJC_CLASS$_NSJSONSerialization.

它发生在应用启动的早期阶段。调用堆栈看起来像

线程1:

dyld_fatal_error
_dyld_start

所以我想关闭适用于 iOS 4.3 的 Facebook SDK 并保留它适用于 iOS >= 5.0。是否可以?我怎样才能在 xCode 中做到这一点?或者唯一的方法是将我的应用拆分为两个应用:4.3 和 >= 5.0?

更新

根据NSJSONSerialization crash with Facebook iOS SDK 3.5Foundation.framework 标记为optional 有帮助。它确实有帮助,但我无法理解。 Foundation.framework 与 Facebook 的东西有什么关系?

【问题讨论】:

  • @Mar0ux 据我了解,这个想法是为框架使用“弱”或“可选”链接。问题是我将 FacebookSDK.framework 手动添加到我的项目中,使其“可选”无济于事。我可以“有条件地”添加这个框架吗?
  • 啊,我明白了。您不能真正“有条件地”添加它,因为检查需要在运行时进行。一种选择是在 iOS 5(Social 框架的弱链接。顺便说一句,您是否考虑过放弃对 iOS 4 的支持?它会影响
  • @Mar0ux 我已经将 Social、FacebookSDK 和一堆其他框架标记为“可选”,但它没有帮助。帮助将 Foundation.framework 标记为“可选”(请参阅​​更新的问题)。我无法理解。

标签: ios facebook


【解决方案1】:

转到目标的构建阶段。在 Link binary with Libraries 下选择您的框架并将其设为可选

【讨论】:

  • 感谢您的详细回答,但该框架不是标准的。这是我手动添加到我的项目中的 FacebookSDK.framework,使其“可选”并没有帮助。请查看我更新的问题。
  • 是的,我将其设为“可选”,但没有帮助。但是,当我将标准“Foundation.framework”标记为“可选”时,它停止了崩溃。有点魔法。
  • 实际上 facebook SDK 使用了基础框架的 NSJSonSerialization 部分。这在 iOS4.3 中不可用。这就是它崩溃的原因
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多