alexkent
alexkent

Reputation: 1586

Can't find headers for GoogleAnalytics-iOS-SDK with Cocoapods 0.37, Swift, frameworks

Using cocoa pods 0.37.0 in a Swift project, with use_frameworks! set in the podfile, I am unable to access the header files for the GoogleAnalytics-iOS-SDK pod.

How should I access the Google Analytics pod's headers in my app?

I have tried;

import GoogleAnalytics_iOS_SDK

In a Swift file, cocoapods 0.36 style. But there's no framework created anymore so no good.

#import <GoogleAnalytics_iOS_SDK/GAI.h>

In the bridging header, but doesn't work (no module map ?)


I have read that the behaviour for pods that only include headers in their 'sourse_files' changed in cocoapods 0.37 (see this commit). This appears to be in response to the problems that use_frameworks caused with these pods in 0.36 (see this SO question).

With this change in Cocoapod behaviour, the static library is integrated correctly (it wasn't with 0.36), the symbols are compiled into the app and available at runtime. But I don't have access to the headers.

Upvotes: 18

Views: 6659

Answers (4)

Jan F.
Jan F.

Reputation: 1691

I had a similar problem on CocoaPods 0.39.0.

$(inherited) in build setting 'OTHER_LDFLAGS' solved it.

https://stackoverflow.com/a/32004207/3129306

Upvotes: 0

Chris
Chris

Reputation: 40643

Another trick is to add long relative path(s) to the bridging header.

This avoids having to make changes to project settings which may be overridden next time you run `pod install':

#import "../../Pods/GoogleAnalytics/Headers/Public/GAI.h"
#import "../../Pods/GoogleAnalytics/Headers/Public/GAIFields.h"
#import "../../Pods/GoogleAnalytics/Headers/Public/GAIDictionaryBuilder.h"

It also works when running your unit tests too, which another solution I tried didn't.

Upvotes: 3

alexkent
alexkent

Reputation: 1586

This is a bug in Cocoapods 0.37.0. It has been logged in their tracker as issue #3499.

Workaround

  • Add $(SRCROOT)/Pods/GoogleAnalytics-iOS-SDK to the User Header Search Paths (set to Recursive) in the app target's Build Settings.
  • Reference the Google Analytics header directly in the Bridging Header with #import "GAI.h"

Upvotes: 28

Simon
Simon

Reputation: 1076

I don't know if this is the correct answer or not, but the way we got it to work was to manually import libGoogleAnalyticsServices.a and not via cocoapods.

Locate libGoogleAnalyticsServices.a and drag it into the project, then add it to Linked Frameworks and Libraries (if it's not there already) and you're good to go. Don't forget to remove it from your Podfile.

edit:
Don't forget to add the header files to your bridging-header

Upvotes: 2

Related Questions