iOS FacebookSDK + Parse SDK + GoogleMaps SDK

iOS FacebookSDK + Parse SDK + GoogleMaps SDK

我搜索了很多,然后我意识到,GoogleMapSDK 需要的 -ObjC 标志与 ParseSDKFacebookSDK 不能很好地配合使用。所以我阅读了所有 Whosebug 的答案并尝试解决我的问题。问题还没有解决。

我执行的步骤:

Undefined symbols for architecture x86_64: "_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)

[this answer on SO][1]的评论中提出了同样的问题,没有任何回复或建设性的回答。

P.S。我注意到一件事,FacebookSDK 与 Bolts 版本捆绑在一起 1.1.3 并且 Parse 在其 zip 文件中有一个版本 1.1.4。这是造成问题的原因吗?? P.P.S。截至今天(2015 年 3 月 19 日),我使用的是最新版本的 SDK

他们是: - 解析 SDK:1.6.4 - 谷歌地图 SDK:1.9.2

当用于 iOS 的 Google Maps SDK 出来时,我尝试了一些方法来绕过一些链接器错误:

Google Maps SDK for iOS trying to run on iOS 4.3

我发现了一个解决缺失符号的技巧,只是在我的代码中再次重新定义了缺失的符号。

BFTaskMultipleExceptionsException 字符串定义 here 如下:

NSString *const BFTaskMultipleExceptionsException = @"BFMultipleExceptionsException";

所以也许只是尝试将这一行放入您的代码中?

从 github 上的历史来看,这似乎是大约 19 天前才添加到 Bolts 中的。 Bolts 1.1.4 版本于 14 天前发布(1.1.3 是去年 10 月发布的)。所以这可能是您注意到的Bolts版本不匹配造成的。

另一种选择可能是从发布 Bolts 1.1.4 之前获取旧版本的 Parse。

据推测,一旦新的 Facebook SDK 与 Bolts 1.1.4 一起可用,这个问题就会得到解决。

所以 Bolts Framework 1.1.3 可以与 Parse 1.6.3 一起使用。但是在任何地方都找不到 Parse 1.6.3。所以我做了很多挖掘并进入 cocoa pods 的 json 文件并获得直接 link 下载 Parse 1.6.3 或任何版本这件事的框架。 github.com/CocoaPods/Specs of cocoa pods 是要查看的存储库。

对于其他专门寻找 Parse 1.6.3 的人。 This is the link 只需在 json 中找到 source link 并将其复制到浏览器中即可。

我用最后的结论来结束这个问题:

Parse 1.6.3 和 FacebookSDK 3.93 依赖于 Bolts 1.1.3

Parse 1.6.4 已使用 Bolts 1.1.4 更新,但截至目前,facebook sdk 尚未更新。因此,我们必须使用 Parse 1.6.3,直到 facebook sdk 更新为 bolts 1.1.4