FacebookSDK和Bolts在构建时相互冲突(重复的符号)

Ryn*_*eow 31 ios facebook-ios-sdk bolts-framework

不确定是什么问题..发现91个符号为armv7重复

我是一个针对iOS 7.1的Swift项目.

这两个框架都是最新版本.

尝试清理项目并删除派生数据.但无济于事.

duplicate symbol _OBJC_IVAR_$_BFAppLinkTarget._URL in:
    /Users/rynecheow/Development/THPopQuiz/Frameworks/FacebookSDK.framework/FacebookSDK(BFAppLinkTarget.o)
    /Users/rynecheow/Development/THPopQuiz/Frameworks/Bolts.framework/Bolts(BFAppLinkTarget.o)
duplicate symbol _OBJC_IVAR_$_BFAppLinkTarget._appStoreId in:
    /Users/rynecheow/Development/THPopQuiz/Frameworks/FacebookSDK.framework/FacebookSDK(BFAppLinkTarget.o)
    /Users/rynecheow/Development/THPopQuiz/Frameworks/Bolts.framework/Bolts(BFAppLinkTarget.o)
duplicate symbol _OBJC_IVAR_$_BFAppLinkTarget._appName in:
    /Users/rynecheow/Development/THPopQuiz/Frameworks/FacebookSDK.framework/FacebookSDK(BFAppLinkTarget.o)
    /Users/rynecheow/Development/THPopQuiz/Frameworks/Bolts.framework/Bolts(BFAppLinkTarget.o)
Run Code Online (Sandbox Code Playgroud)

win*_*zed 51

我有91个重复的相同问题.对我有用的只是删除Bolts.framework,它似乎已经以某种方式已经包含在Facebook新SDK中.

希望能帮助到你!

  • 我试过了,但现在我得到"符号未定义"的错误.架构arm64的未定义符号:"_ BFTaskMultipleExceptionsException",引自:___ 53+ [PFObject(私有)deleteAllAsync:withSessionToken:] _ block_invoke214在Parse(PFObject.o)___ 65+ [PFObject(专用)_deepSaveAsync:withCurrentUser:sessionToken:] _ block_invoke311在Parse中(PFObject .o)ld:找不到架构arm64 clang的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用) (11认同)
  • @Leo Flaherty - 要消除该错误,您可以转到AppDelegate.m文件并在导入后写下此行:NSString*const BFTaskMultipleExceptionsException = @"BFMultipleExceptionsException"; (2认同)

Ale*_*lex 17

有同样的问题.

  • 删除Bolts.framework不是解决方案,因为我得到了Leo Flaherty提到的错误(在接受的答案中评论).
  • 使用iOS_DEV提到的解决方案对我来说似乎是一个丑陋的黑客.
  • 使用最新的Parse和Facebook SDK也不是解决方案(SimonBøgh提到),因为我使用的是Facebook SDK版本3.x,最新版本是4.x. 在Facebook的SDK更改日志中提到:Facebook的SDK适用于iOS 4.0版是一个重大的版本升级. 由于我需要在截止日期前完成,所以我不能花时间重新编写我的所有Facebook代码,以适应新的4.x SDK版本.

我建议的解决方案:

而不是将Bolts.framework和FacebookSDK.framework作为框架添加到项目中,而是将它们添加为Pods:

pod 'Bolts'
pod 'Facebook-iOS-SDK', '3.23.1'
Run Code Online (Sandbox Code Playgroud)

在这里找到所有可用的Facebook SDK版本,以防您需要使用不是最新的版本.
如果您使用的是Swift,则需要在桥接标头中添加以下内容:
#import <FacebookSDK/FacebookSDK.h> #import <Bolts/Bolts.h>