使用 Cocoapods 0.37、Swift、框架无法为 GoogleAnalytics-iOS-SDK 找到 headers

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

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

我应该如何在我的应用程序中访问 Google 分析窗格的 header?

我试过了;

import GoogleAnalytics_iOS_SDK

在 Swift 文件中,cocoapods 0.36 样式。但是没有创建框架所以不好。

#import <GoogleAnalytics_iOS_SDK/GAI.h>

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


我读到 pods 的行为在 'sourse_files' 中仅包含 header 已在 cocoapods 0.37 [=15= 中更改].

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

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

找到 libGoogleAnalyticsServices.a 并将其拖到项目中,然后将其添加到 Linked Frameworks and Libraries(如果还没有),就可以了。不要忘记将其从您的 Podfile.

中删除

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

这是 Cocoapods 0.37.0 中的错误。它已在他们的跟踪器中记录为 issue #3499.

解决方法

  • $(SRCROOT)/Pods/GoogleAnalytics-iOS-SDK 添加到应用程序目标 Build Settings 中的 User Header Search Paths(设置为递归)。
  • 直接在桥接 Header 与 #import "GAI.h"
  • 中引用 Google 分析 header

另一个技巧是将较长的相对路径添加到桥接 header。

这避免了必须更改项目设置,这些设置可能会在您下次 运行 `pod install' 时被覆盖:

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

它也适用于 运行你的单元测试,我试过的另一个解决方案没有。

我在 CocoaPods 0.39.0 上遇到了类似的问题。

构建设置中的$(inherited) 'OTHER_LDFLAGS' 解决了它。