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

做~自己de王妃 提交于 2019-12-20 11:40:42

问题


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.


回答1:


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"



回答2:


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.




回答3:


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




回答4:


I had a similar problem on CocoaPods 0.39.0.

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

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



来源:https://stackoverflow.com/questions/30020578/cant-find-headers-for-googleanalytics-ios-sdk-with-cocoapods-0-37-swift-frame

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