使用Cocoapods 0.37,Swift框架无法findGoogleAnalytics-iOS-SDK的标头

在Swift项目中使用cocoa pods 0.37.0,使用use_frameworks! 在podfile中设置,我无法访问GoogleAnalytics-iOS-SDK窗格的头文件。

我应该如何访问我的应用中的Google Analytics窗体标题?

我努力了;

import GoogleAnalytics_iOS_SDK 

在Swift文件中,cocoapods 0.36风格。 但没有框架,所以不好。

 #import <GoogleAnalytics_iOS_SDK/GAI.h> 

在桥接头,但不起作用(没有模块映射?)


我已经读过,在cocoapods 0.37中只改变了'sourse_files'头文件的行为(见这个提交) 。 这似乎是对0.36中使用这些豆荚造成的use_frameworks问题的回应(参见这个SO问题) 。

随着Cocoapod行为的这种变化,静态库被正确集成(它不是0.36),符号被编译到应用程序中,并在运行时可用。 但是我没有访问标题。

这是Cocoapods 0.37.0中的一个错误。 它已经被作为问题#3499login到他们的跟踪器中。

解决方法

  • $(SRCROOT)/Pods/GoogleAnalytics-iOS-SDK到应用程序目标的“ Build SettingsUser Header Search Paths (设置为recursion)。
  • 使用#import "GAI.h"直接在桥接头中引用Google Analytics报头

另一个诀窍是将长相对path添加到桥接头。

这样可以避免在下次运行`pod install'时重写项目设置。

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

它也适用于运行你的unit testing,我试过的另一个解决scheme没有。

我不知道这是否是正确的答案,但我们得到它的工作方式是手动导入libGoogleAnalyticsServices.a而不是通过cocoapods。

findlibGoogleAnalyticsServices.a并将其拖到项目中,然后将其添加到Linked Frameworks and Libraries (如果它不存在的话),那么你就很好。 不要忘记从你的Podfile删除它。

编辑:
不要忘记将头文件添加到您的桥接头

我在CocoaPods 0.39.0有一个类似的问题。

$(inheritance)在构build设置“OTHER_LDFLAGS”解决了它。

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