与 -ObjC 上的框架相矛盾

  • 本文关键字:矛盾 框架 -ObjC ios
  • 更新时间 :
  • 英文 :


所以在我的项目中,我有FacebookSDK,ParseSDK和FirebaseSDK。Facebook和parse都需要螺栓,所以我实现了它。但是,除非我删除 -ObjC 标志,否则它不会编译。问题是,如果我删除此标签,代码将编译,但它会在尝试初始化 Firebase 时导致运行时错误,因为它需要 -ObjC。我一团糟。我可以只为该特定框架设置标志吗?感谢您的任何帮助。

(我认为这应该是一个评论,但我还没有足够的代表,希望这有助于解决这个问题。

我遇到了完全相同的问题(使用SponsorPay SDK而不是FirebaseSDK),Facebook SDK和Parse可以很好地协同工作,直到我添加SponsorPay所需的-ObjC标志。

删除 Bolts.framework 不是解决方案,因为这会产生一些链接错误:

"_BFTaskMultipleExceptionsException", referenced from:
      ___53+[PFObject(Private) deleteAllAsync:withSessionToken:]_block_invoke214 in Parse(PFObject.o)
      ___65+[PFObject(Private) _deepSaveAsync:withCurrentUser:sessionToken:]_block_invoke311 in Parse(PFObject.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如果我使用FacebookSDK包中包含的Bolts.framework,我会收到完全相同的错误。

但是,使用解析库中包含的 Bolts.framework,我得到了一个不同的错误:

ld: 91 duplicate symbols for architecture x86_64

所有框架和库都会更新。

编辑:

使用椰子荚也为我解决了问题!

参见:FacebookSDK和Bolts在构建时相互冲突(重复符号)。

我怀疑Facebook已经崩溃了,并且包括螺栓本身。任何第三方框架都不应包含另一个第三方框架,因为它恰恰会导致这种情况。所有第三方框架都应在最终申请阶段链接。进入任何链接自己的子库的框架,并删除子库(并针对违规者打开错误)。

最新更新