添加到AppDelegate时找不到Google / Analytics.h文件
我正在尝试使用Cocoapods在我的ios项目中集成Google Analytics。 但是,在将配置文件添加到我的项目之后的步骤之后,在AppDelegate中导入Google / Analytics.h时,我收到错误的文件未找到。 试过以下事情:
-
在构建设置中向用户标题搜索路径添加了
$(SRCROOT)/Pods/GoogleAnalytics
。 -
添加了
libGoogleAnalyticsServices.a
以便在构建阶段将二进制文件链接到库。 -
在其他链接器标志中添加了
-lGoogleAnalyticsServices
。
不要真的想做2和3,因为他们从Cocoapods免费。
我到底错过了什么?
问题
- 官方文档中的代码示例建议安装1.0.0。 哪个甚至没有为arm64编译二进制文件。
- 似乎至少有三个与GA相关的独立豆荚。 GoogleAnalytics-iOS-SDK,GoogleAnalytics,Google / Analytics。
解
将其添加到您的Podfile:pod’Google pod 'Google/Analytics'
然后pod install
。
这应该工作。 现在您只需按照文档中的建议导入Google / Analytics.h:
#import
进一步讨论
我遇到了两组问题:
-
使用不正确的建议pod版本(1.0.0)时,是64位兼容性问题。 (
ld: symbol(s) not found for architecture arm64
) -
当使用其他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’安装):
- 打开yourproject.xcworkspace而不是yourproject.xcodeproj
- 在桥接头文件中使用
#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