iOS FacebookSDK + Parse SDK + GoogleMaps SDK

眉间皱痕 提交于 2019-12-22 10:55:16

问题


I searched a lot and I realized, -ObjC flag that GoogleMapSDK requires, doesn't play well with ParseSDK and FacebookSDK. So I read on all the stackoverflow answers and tried solving my problem. The problem isn't fixed yet.

Steps I performed:

  • Problem 1:Parse doesn't work with -ObjC
  • Solution 1: To make Parse work with -ObjC import the FacebookSDK. Done

  • Problem 2: Parse and Fb SDK both use Bolts.framework and the linker gives duplicate symbol errors(some 92 of them)

  • Solution 2: Delete Bolts.framework as FacebookSDK already is pre-bundled with it.

  • Problem 3: After removing the Bolts.framework , duplicate errors go away but there is this one tiny linker error that I can't figure out. I'm assuming they've changed something in the new SDK version. The error is as follows:

  • Solution: ??

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)

The same problem was asked in the comments of [this answer on SO][1] without any reply or a constructive answer.

P.S. One thing I noticed that FacebookSDK comes bundled with Bolts version 1.1.3 and Parse has a version 1.1.4 in its zip file. Is this causing the problem?? P.P.S. I'm using the latest verions of SDK as of today's date(19th March, 2015)

They are: - Parse SDK: 1.6.4 - GoogleMaps SDK: 1.9.2


回答1:


Back when the Google Maps SDK for iOS came out, I tried a few methods for hacking around some linker errors:

Google Maps SDK for iOS trying to run on iOS 4.3

One hack I found for working around missing symbols, was just redefining the missing symbol again in my code.

The BFTaskMultipleExceptionsException string is defined here like this:

NSString *const BFTaskMultipleExceptionsException = @"BFMultipleExceptionsException";

So maybe just try putting that one line into your code?

From the history on github, it looks like this was just added to Bolts about 19 days ago. Version 1.1.4 of Bolts was released 14 days ago (1.1.3 was from October last year). So it probably is caused by the version mismatch of Bolts that you noticed.

Another option might be to get an older version of Parse from before Bolts 1.1.4 was released.

Presumably this will be fixed once a new Facebook SDK is available with Bolts 1.1.4.




回答2:


So Bolts Framework 1.1.3 works with Parse 1.6.3. But Parse 1.6.3 was not found anywhere. So I did a lot of digging around and went into the json files of cocoa pods and got the direct link to download Parse 1.6.3 or any version of any framework for that matter. github.com/CocoaPods/Specs of cocoa pods is the repository to look into.

For everyone else, who specifically are looking for Parse 1.6.3. This is the link Just find the source link in the json and copy it in your browser.

I am closing this question with the finale conclusion:

Parse 1.6.3 and FacebookSDK 3.93 depend on Bolts 1.1.3

Parse 1.6.4 is updated with Bolts 1.1.4 but as of this date facebook sdk isnt. Hence we have to work with Parse 1.6.3 till facebook sdk is updated with bolts 1.1.4



来源:https://stackoverflow.com/questions/29133516/ios-facebooksdk-parse-sdk-googlemaps-sdk

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!