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

Google/Analytics.h file not found when adding to AppDelegate

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

  1. 已将 $(SRCROOT)/Pods/GoogleAnalytics 添加到构建设置中的用户 Header 搜索路径。

  2. 已将 libGoogleAnalyticsServices.a 添加到 link 二进制文件中,其中包含处于构建阶段的库。

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

我真的不想做 2 和 3,因为它们可以摆脱 Cocoapods。

我到底错过了什么?

当您将 $(SRCROOT)/Pods/GoogleAnalytics 添加到构建设置中的用户 Header 搜索路径时,还有 select recursive 选项。它将允许您的项目在 GoogleAnalytics 及其所有 sub-directories.

中搜索

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

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

问题

  1. the official documentation 上的代码示例建议 安装 1.0.0。哪个甚至没有编译二进制文件 arm64。
  2. 似乎至少有三个独立的 pods 与 遗传算法。 GoogleAnalytics-iOS-SDK, GoogleAnalytics, Google/Analytics.

解决方案

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

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

#import <Google/Analytics.h>

进一步讨论

我 运行 解决了两组问题:

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

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

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

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

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

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

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

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

希望这对某人有所帮助。

这是 cocoapods 中的一个错误。

您需要将 $(SRCROOT)/Pods/Google 和 $(SRCROOT)/Pods/Google 具有递归选项的分析添加到您的用户 Header 搜索路径。

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

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

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

Swift 3

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

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

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

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

还有我的 0.02 美元,因为这似乎是一个永无止境的故事。 None 以上建议确实有帮助。我从 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 = "";`

很明显这个被当做"defined",所以我改成了

HEADER_SEARCH_PATHS = "$(inherited)";

繁荣 - 所有 Google 建议包括工作

#import <GoogleAnalytics/GAI.h>
#import <GoogleAnalytics/GAIDictionaryBuilder.h>
#import <GoogleAnalytics/GAIFields.h>
  1. 运行 pod update
  2. 清理构建文件
  3. 运行 项目

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