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

Posted

技术标签:

【中文标题】添加到 AppDelegate 时找不到 Google/Analytics.h 文件【英文标题】:Google/Analytics.h file not found when adding to AppDelegate 【发布时间】:2015-07-15 09:52:26 【问题描述】:

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

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

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

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

真的不想做 2 和 3,因为它们使它从 Cocoapods 中解放出来。

我到底错过了什么?

【问题讨论】:

我想你错过了分析的 .plist 文件 我确实将它拖放到项目中支持的文件中。我正在重新安装项目的 pod 文件。让我回去。 记得打开 *.xcworkspace 而不是 *.xcodeproj 只做了@sahara108 安装 pod 需要很多时间吗?大约多少 MB? 【参考方案1】:

斯威夫特 3

使用 3.17.0 版(使用 Podfile 中的 pod 'GoogleAnalytics' 安装):

    打开 yourproject.xcworkspace 而不是 yourproject.xcodeproj 在桥接头文件中使用#import <GoogleAnalytics/GAI.h>

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

#import <GoogleAnalytics/GAIDictionaryBuilder.h>
#import <GoogleAnalytics/GAIFields.h>

【讨论】:

为我节省了几个小时。谢谢。 也为我节省了大量时间。 非常感谢!我已经花了几个小时试图找出导入语句失败的原因,但这节省了更多令人头疼的调查。 谷歌文档有多糟糕……我个人不得不添加更多内容#import #import #import 非常感谢 Paul 和 @jeremy-piednoel。我确认我们需要导入其中的 3 行。【参考方案2】:

问题

    the official documentation 上的代码示例建议 安装 1.0.0。甚至没有编译二进制文件 手臂64。 似乎至少有三个独立的 pod 与 GA。 GoogleAnalytics-iOS-SDK、GoogleAnalytics、Google/Analytics。

解决方案

将此添加到您的 Podfile:pod 'Google/Analytics',然后是 pod install

应该可以。现在您可以按照文档中的建议简单地导入 Google/Analytics.h:

#import &lt;Google/Analytics.h&gt;

进一步讨论

我遇到了两组问题:

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

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

我发现这位先生的帖子on a mailing list 建议使用没有版本号的 Google/Analytics pod。 (pod 'Google/Analytics' 如上所述。)

【讨论】:

【参考方案3】:

这是 cocoapods 中的一个错误。

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

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

【讨论】:

如果使用此设置,请使用#import 这个解决方案适用于我(Cocoapods 0.39.0),使用#import "Analytics.h" Xcode 7.1 (7B91b) 只有在我为此路径设置recursive 后才分叉 它实际上与 xCode 9 和 #import "Analytics.h" 一起在用户标题搜索路径中使用此设置【参考方案4】:

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

更新: 我已经尝试了该教程,并且无需任何额外步骤即可正常工作。我的 pod 版本是 0.35.0。创建配置文件时,记得启用 GoogleAnalytics 服务。

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

【讨论】:

那个...虽然这对 cocoapods 安装分析没有帮助... 您还需要使用递归选项添加 $(SRCROOT)/Pods/Google。然后包括 #import "Analytics.h" 而不是 #import @RajatTalwar 谢谢!这对我有帮助。我在 Cocoapods 1.1.1 上。【参考方案5】:

如果其他人在尝试 #import 时遇到错误,并且其他在线解决方案对您没有帮助,您应该继续阅读。

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

我注意到部署信息下的常规选项卡上的项目有所不同,其中第二个目标(有效的目标)具有单独的 iPhone 和 iPad 选项,但第一个没有。网上还有人说他们复制目标时收到了这两个新选项。我的第二个目标最初也是第一个目标的副本。

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

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

希望这对某人有所帮助。

【讨论】:

【参考方案6】:

检查您是否有多个目标,在这种情况下,在您的 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

【讨论】:

【参考方案7】:

这也是我的 0.02 美元,因为这似乎是一个永无止境的故事。上面的建议都没有帮助。我收到了来自pod install 的这条晦涩的消息

[!] The `blabla [Release]` target overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Target Support Files/Pods-blabla/Pods-blabla.release.xcconfig'. This can lead to problems with the CocoaPods installation

最后我检查了我的project.pxbproj,发现我有这个条目:

HEADER_SEARCH_PATHS = "";`

显然这被视为“已定义”,所以我将其更改为

HEADER_SEARCH_PATHS = "$(inherited)";

并且繁荣 - Google 建议的所有内容都包括工作

#import <GoogleAnalytics/GAI.h>
#import <GoogleAnalytics/GAIDictionaryBuilder.h>
#import <GoogleAnalytics/GAIFields.h>

【讨论】:

【参考方案8】:
    运行pod update 清理构建文件 运行项目

【讨论】:

【参考方案9】:

从构建设置中删除有效的拱门

【讨论】:

以上是关于添加到 AppDelegate 时找不到 Google/Analytics.h 文件的主要内容,如果未能解决你的问题,请参考以下文章

出现 404 - 尝试通过 SPWeb 将超过 20MB 的文件添加到 SharePoint 时找不到

作为 sbt 依赖项添加时找不到 jboss 拦截器 api 1.1

错误 [IRForTarget]:在向 MKMapView 添加叠加层时找不到 Objective-C 间接 ivar 符号

部署到 AWS lambda 时找不到模块 ./dist/server

运行 Spring Boot 简单应用程序时找不到 Oracle 驱动程序

Invoke-RestMethod:发送到标头时找不到请求的身份验证数据