Search code examples
iosxcodeparse-platformgoogle-maps-sdk-ioslinker-flags

Using Google Maps SDK with Parse.com Project iOS Swift


Im working on a project (xcode 6.3+, swift) using Parse SDK (parse.com) to handle data. Recently, we decided to use the google maps sdk to provide user with directions using the direction API. As you can use this API without the google map I started integrating it. It's my first time with cocoapods so I followed the instruction and started playing with.

pod init to create the pod specs file

here is my config coming from google Starting Guide

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.1'
pod 'GoogleMaps'

pod install, then launching the project using the .xworkspace

I directly try to build the project and it returns 34 errors. the type of error is always the same: Apple Match-O Linker Error

enter image description here

enter image description here

So I start looking at google cause I did the same thing on a blank project and everything was working really good.

I start to find information about the fact that using Parse SDK causes conflicts with the -ObjC linker Flags that GoogleMaps needs to work. most of the answers give two potential solutions:

1. addind the Facebook-iOS-SDK framework

tried this using the framework given by facebook, as well as using cocoapods. not working. I still got errors.

2. Force Loading the GoogleMaps framework by replacing the -ObjC flag by the following

-force_load $(PROJECT_DIR)/Pods/GoogleMaps/Frameworks/GoogleMaps.framework

this returns an error as well: enter image description here

so now Im quite lost about the way to solve this. Is there anybody that found a way to integrate GoogleMaps SDK with Parse?

UPDATE

I tried a different approach by injecting GoogleMaps without cocoapods. To do this I used this method: GoogleMaps without CocoaPods

It seems to integrate itself properly, but the -ObjC flag remains. Using

-force_load $(PROJECT_DIR)/GoogleMaps.framework/GoogleMaps

is now responding but causing duplicate symbols for architecture x86_64errors. can't seems to find a way to fix that.


Solution

  • Ok so I managed to find working solution both for integrating GoogleMaps Sdk and Parse with and without cocoapods. However, the use of the -ObjC flags by GoogleMaps forced me to integrate the FacebookSDK to the equation. I couldn't find a way to make this working without it

    So this config is working with xcode 6.3+ and it required to use and older version of the Facebook SDK (when not using cocoapods)

    With CocoaPods

    1/. Add the Parse SDK as described on their website (existing project version)

    2/. Add extra Frameworks (AdSupport, Account and Social) as well as libstdc++.6.dylib

    3/. Open terminal to the root folder

    4/. $ pod init

    5/. open Podfile and replace content with the following:

    use_frameworks! 
    platform :ios, ‘8.0’
    pod 'GoogleMaps'
    

    6/. $ pod install then $ pod update

    7/. download FacebookSDK from this link

    8/. Add FBSDKCoreKit and FBSDKLoginKit Frameworks to your project

    9/. build your project.

    If some error occurs, you may have to delete ParseFacebookUtils.framework from your project and keep only ParseFacebookUtilsV4.

    Without CocoaPods

    So this is quite the same procedure except that instead of using pods to install GoogleMaps SDK, you will integrate it manually by using the link mentionned in the question, or by going to GoogleMaps podspecs and access the source url to download the last one.

    Make sure to add GoogleMaps.framework, as well as the GoogleMaps.bundle which you can find by right-click on GoogleMaps.framework /show in finder under Resources. Drag and drop to the project and make sure it's linked to the project build settings / Copy Bundle Resources

    Also, make sure to have all the required framework and libraries listed on the link provided in the question.

    Add the -ObjC flag under Build Settings / Other Linker Flags

    When it comes to integrate the FacebookSDK, I've noticed that using the latest version isn't working. Apparently, it was prepared to work with xcode 7. Do work around this, just download an older version here

    Add FBSDKCoreKit and FBSDKLoginKit to the project and you should be good to go. Hope that help someone cause it was a pain to make this work...