所以在我的项目中我有FacebookSDK,ParseSDK和FirebaseSDK。 Facebook和解析都需要螺栓,所以我实现了。但是除非我删除-ObjC标志,否则它不会编译。问题是,如果我删除此标记,代码将编译,但在尝试初始化Firebase时会导致运行时错误,因为它需要-ObjC。我很乱。我可以仅为该特定框架设置标志吗?谢谢你的帮助。
答案 0 :(得分:4)
(我认为这应该是评论,但我还没有足够的代表,希望这有助于解决这个问题。)
我遇到了完全相同的问题(使用SponsorPay SDK代替FirebaseSDK),Facebook SDK&解析工作正常,直到我添加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 ,我会得到完全相同的错误。
但是,使用 Parse Library 中包含的 Bolts.framework ,我得到了一个不同的错误:
ld: 91 duplicate symbols for architecture x86_64
所有框架和库都已更新。
修改强>
使用cocoapods也解决了我的问题!
答案 1 :(得分:0)
请参阅:FacebookSDK and Bolts conflicting each other (duplicate symbols) on build。
我怀疑Facebook已经破产,并且包括螺栓本身。没有第三方框架应该包含另一个第三方框架,因为它导致了这一点。所有第三方框架都应在最终申请阶段进行链接。进入任何链接他们自己的子库的框架,并删除子子库(并打开违规者的bug)。