Google Map SDK , iOS and -ObjC issue - ios

I'm developing an app, i was using mapKit to handle my maps, but now I'm switching to GoogleMap, but i'm having a lot of issues and i don't know how to fix this...
Framework: GoogleMapsM4B.framework /GoogleMaps.bundle
Flag: -ObjC
Xcode 7
Swift
Any idea?
Thank you!

OK, let me answer this.
I did a few errors with this thing, i was including extras "parse frameworks", and i forgot some parts of the Parse Documentation:
If you're using the -ObjC linker flag required by some third-party
libraries, add these as well:
Accounts.framework
Social.framework
Google Map needs -ObjC flag
The extra frameworks that i was including along with Parse:
ParseFacebookUtils.framework
ParseUI.framework
ParseCrashReporting.framework
Now i removed the extras frameworks and everything is working!
Thanks!

Related

Xcode error: 9 duplicate symbols for architecture armv7 using Cometchat cordova

I'm using Cometchat Ionic sdk, I've added the cordova plugin with ionic cordova plugin add cometchat_sdk_folder and it works in android but when I compile for iOS I'm getting this error:
Output log
This issue has been resolved and a new version of our SDK has been released. If you still face this issue, feel free to email us.
Thanks,
Both the cometchat-ui and MessageSDKFramework frameworks contain an implementation of the Reachability module, which both define the same symbols.
AFAIK, to solve this you need to get/create a version of either framework without the Reachability module.
To do this, you need to have the source code of either framework. You need to change the build process/script so that it does not include the Reachability module. Then you need to rebuild either framework and include include that in your app's Xcode project.
If you don't have the source code of either framework: I think there should be linker options to ignore either duplicate module, or ignore there errors. I leave this to you.

Exceptions while using GoogleSignIn

I'v added G+ button and tried to run app but receive that
And i can't find any solution in google
Look at the missing symbols in the error message.
Now look them up in the documentation in Xcode. Example, SCNNetworkReachbilityCreateWithName.
Now look at the resulting documentation to determine which framework it belongs to. In this case it is the SystemConfiguration framework.
Now add the SystemConfiguration framework to your project and those link errors will go away.
And most likely the documentation for the Google Sign-in library you are using lists the frameworks you need to add to your project. It should mention the SystemConfiguration framework.
you need to add support frame works
AddressBook.framework
SafariServices.framework
SystemConfiguration.framework (now the error is focused on system configuration frame work missing)
for additional reference

Parse API 1.6.4 - cannot build project

I downloaded the new iOS Parse API (1.6.4) and tried to build my project. When I do, I get this error:
Undefined symbols for architecture arm64" "_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 arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Screenshot:
Temporary workaround for Parse 1.6.4 and Facebook SDK 3.23:
Add to your AppDelegate.m or another class following constant after imports and before implementation section:
NSString *const BFTaskMultipleExceptionsException = #"BFMultipleExceptionsException";
#interface IPAppDelegate ()
#end
#implementation IPAppDelegate
It should solve the problem until it'll be solved on Parse/Facebook side.
--
Update: This solution is only for Facebook and Parse SDK versions that listed above and these versions right now are outdated.
New Parse SDK 1.7.4 works correct with new Facebook SDK 4.0 and there shouldn't be such a problem.
I was able to figure out the URL for anyone that needs Parse iOS v1.6.3.
https://parse.com/downloads/ios/parse-library/1.6.3
I can confirm that everything compiles properly using 1.6.3.
Placing
NSString *const BFTaskMultipleExceptionsException = #"BFMultipleExceptionsException";
in the App Delegate as suggested by Sergey Surkov in between the imports and the implementation and then adding libstdc++.6.dylib in build phases worked for me. Please also view https://stackoverflow.com/a/27628797/1036945
I've had the exact same problem using the latest SDKs from Parse (1.7.4) and Facebook (4.2.0). The problem is caused by the Bolts.framework included in both Parse and Facebook SDKs. For some reason the Bolts framework in Parse is always newer than the one included in the Facebook SDK.
After many-many attempts at installing, removing and re-installing these SDKs, using the drag and drop method and via Cocoapods, I finally managed to overcome this issue by undertaking the following steps:
I removed completely any instance of the Parse, Facebook and Bolts frameworks from my project;
I re-added the FBSDKCoreKit framework (and the ShareKit and LoginKit for the needs of my project) following the steps on the Facebook developer page: https://developers.facebook.com/docs/ios/getting-started/
Make sure NOT to copy the items to your project.
I re-added the Parse framework to the project using the drag-and-drop method. I also added the ParseFacebookUtilsV4 framework because I needed it to create users via Facebook Login.
This was the most important step that solved everything: I added the Bolts.framework provided by Parse by dragging it to the project, but making sure NOT to copy it to the project (just like with the FBSDKCoreKit framework, I deselected the "Copy items into destination group's folder." option. If you copy it to the project folder, the project won't build.
These steps finally solved all my problems.
if you are using cocoapods try pod update Bolts
EDIT2: FacebookSDK Update 3.23.2 resolves this issue and includes Bolts 1.1.4: https://developers.facebook.com/resources/facebook-ios-sdk-3.23.2.pkg
EDIT:
Drop -ObjC "Other Linker Flag" from your Build settings.
Bolts.framework is not necessary with Parse if Facebook SDK is integrated.
As of Facebook iOS SDK 3.14 bolts.framework is included. https://developers.facebook.com/docs/ios/upgrading-3.x
Try removing your manual instance of bolts.framework.
Just to put the record straight.
The issue is caused because of a conflict with the Bolts framework between the Facebook SDK Bolts and the Parse bolts framework. A temporary solution to get around this issue is to use Cocoapods for your Facebook SDK dependency which will help while a fix is worked on.
The bug has been acknowledged by Facebook & is being assigned to the appropriate team for fixing.
Please follow https://developers.facebook.com/bugs/383331175179417/ for the updates.
make sure the facebook sdk framework and bolts framework (comes with fb sdk) is imported into your project.
i got similar error ("...is not a dylib" and "Undefined symbols for architecture") because i dragged the whole parse folder ("parse-library-1.7.4-2") into my xcode project, when i should have dragged only the frameworks i needed ("Bolts.framework" and "Parse.framework"). deleted the parse folder, dragged over the two frameworks, then everything works as expected :)
I had the exact same problem. Updating Bolts to 1.1.4 solved it for me (Bolts was 1.1.3 before).
If you use cocoapods, change or add this line to your podfile
pod 'Bolts', '1.1.4'
If not, just download it here : https://github.com/BoltsFramework/Bolts-iOS/releases
Try downloading the latest SDK and replacing all of the Parse frameworks with the latest version.

Parse and AdMob in One iOS Binary?

Has anybody been able to compile and link Parse and AdMob in One iOS Binary?I get linker errors either from Parse or from AdMob depending on build settings.
Your help is much appreciated.
AdMob requires the -ObjC linker flag :"This flag causes the linker to load every object file in the library that defines an Objective-C class or category".
Parse has removed the Facebook SDK from its framework which generates the linker errors when the project is compiled with the -ObjC flag that AdMob requires.
I don't know of a way around AdMob's dependence on the -ObjC flag. I'm not a linker guru.
The solution Parse recommends is to add the Facebook SDK to your project. I don't know of a workaround to this either if you don't plan to use Facebook.
Parse has a support discussion here: https://www.parse.com/questions/i-dont-want-to-use-facebook-in-my-app
Update: I tried replacing -ObjC linker flag with -forceload of the AdMob library. However, I got the AdMob crash. It's the same one you get with the missing -ObjC linker flag. Any linker experts know how to replace the -ObjC with something that targets only the AdMob library?
Update 2: I needed to revisit this after upgrading to XCode 6, iOS 8, and a new version of adMob. I got it to work by using this -force_load:
-force_load $(SRCROOT)/.../GoogleMobileAdsSdkiOS/libGoogleAdMobAds.a
In my case, I have adMob installed inside of subfolders of my project source. Just substitute ... with your relative path to the adMob SDK.
Looks like following flag solve the problem:
-force_load Libraries/GoogleAdMobAdsSdkiOS-6.8.0/libGoogleAdMobAds.a

What frameworks do I need for libPayPalMPL.a?

This thread says I need three, but I have several options with those prefixes and don't know which three to link exactly. I'm working with iOS 5.1, XCode 4.3.2
Getting "apple mach-o linker id error undefined symbols for architecture i386" when implement a Library in iOS5
I've been having bad experiences with what seems to be deprecated documentation, tutorials with questions from the author of the in there, incomplete documentation, sample code that does not work...not cool paypal, not cool.
You have to load exactly these -
Security.framework
libxml2.dylib
libz.1.2.5.dylib
nevermind, i just looked at the demo app and began adding each one.
libxml2.dylib
libz.dylib
Security.framework

Resources