添加到AppDelegate时找不到Google / Analytics.h文件

我正在尝试使用Cocoapods在我的ios项目中集成Google Analytics。 但是,在将配置文件添加到我的项目之后的步骤之后,在AppDelegate中导入Google / Analytics.h时,我收到错误的文件未找到。 试过以下事情:

  1. 在构建设置中向用户标题搜索路径添加了$(SRCROOT)/Pods/GoogleAnalytics

  2. 添加了libGoogleAnalyticsServices.a以便在构建阶段将二进制文件链接到库。

  3. 在其他链接器标志中添加了-lGoogleAnalyticsServices

不要真的想做2和3,因为他们从Cocoapods免费。

我到底错过了什么?

问题

  1. 官方文档中的代码示例建议安装1.0.0。 哪个甚至没有为arm64编译二进制文件。
  2. 似乎至少有三个与GA相关的独立豆荚。 GoogleAnalytics-iOS-SDK,GoogleAnalytics,Google / Analytics。

将其添加到您的Podfile:pod’Google pod 'Google/Analytics'然后pod install

这应该工作。 现在您只需按照文档中的建议导入Google / Analytics.h:

#import

进一步讨论

我遇到了两组问题:

  1. 使用不正确的建议pod版本(1.0.0)时,是64位兼容性问题。 ( ld: symbol(s) not found for architecture arm64

  2. 当使用其他pod(GoogleAnalytics-iOS-SDK和GoogleAnalytics)时,我抱怨缺少头文件。 ( "Google/Analytics.h" not found

我在邮件列表中找到了这位绅士的post,该post显示Google / Analytics pod没有版本号。 (如上所述, pod 'Google/Analytics' 。)

斯威夫特3

使用版本3.17.0(在Podfile中使用pod’GoogleAnalytics’安装):

  1. 打开yourproject.xcworkspace而不是yourproject.xcodeproj
  2. 在桥接头文件中使用#import

编辑:根据你可能还需要的jeremy piednoel的评论

 #import  #import  

这是cocoapods中的一个错误。

您需要将$(SRCROOT)/ Pods / Google和$(SRCROOT)/ Pods / GoogleAnalytics添加到用户标题搜索路径的递归选项。

然后包含#import“Analytics.h”而不是#import

在构建设置中将$(SRCROOT)/Pods/GoogleAnalytics到用户标题搜索路径时,也请选择recursive选项。 它将允许您的项目在GoogleAnalytics及其所有子目录中进行搜索。

更新:我已经尝试了教程,它没有任何额外的步骤工作正常。 我的pod版本是0.35.0。 创建配置文件时,请记住启用GoogleAnalytics服务。

更新:正如@RajatTalwar指出的那样,你还需要使用递归选项添加$(SRCROOT)/ Pods / Google。 然后包含#import“Analytics.h”而不是#import

如果其他人在尝试#import 时出错,而其他在线解决方案对您没有帮助,请继续阅读。

我遇到了这个问题,我找到的解决方案都没有解决它。 然后我注意到我的一个目标工作而另一个没有(我在同一个项目中有两个),我试图找出两个目标之间的区别。

我注意到项目在部署信息下的常规选项卡上存在差异,其中第二个目标(工作的目标)具有针对iPhone和iPad的单独选项,但第一个目标没有。 网上其他人说他们在复制目标时收到了这两个新选项。 我的第二个目标也是第一个目标的副本。

长话短说 ,我发现如果我复制了我的目标,那么副本现在突然起作用了。 那些独立的iPhone和iPad选项也神奇地出现了。 所以我猜我的项目目标是非标准的并且导致了问题,可能是因为这个项目是很久以前创建的。

然后我删除了原始目标,并将新目标重命名为同名,尽管在与plist文件相关的构建设置中需要进行一些清理工作(它创建了一个copy.plist文件)。

希望这有助于某人。

检查您是否有多个目标,在这种情况下,在您的pod文件中添加pod“Google / Analytics”foreach目标:

 def google_pods pod 'Google/Analytics' end target 'target 1' do google_pods end target 'target 2' do google_pods end target 'target N' do google_pods end