使用CocoaPods集成Google Analytics时出现“链接器命令以退出码1失败”的错误

19

我正在尝试将Google Analytics添加到使用Swift编写的iOS应用程序中。 我已经按照通过CocoaPods添加框架的指南并添加了桥接头文件,但仍然出现以下错误:

Linker command failed with exit code 1

我的podfile确实有使用use_frameworks!,所以我想知道这是否与问题有关...根据我所看到的,分析网站上没有额外的信息。

编辑: 我注意到在查看完整的错误消息后会显示以下内容:

ld: '/Users/simon/Programming/VenueNow/Pods/GoogleUtilities/Libraries/libGTM_NSData+zlib.a(GTMNSData+zlib.o)' does not contain bitcode. 
You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64

搜索该问题会发现Google已经更新以支持位码(bit code),但是那时还没有更新可可豆框架(cocoa pods framework)。


对于其他遇到类似问题并使用了 Cocoapods 的人,请确保在过于深入追溯之前先运行 pod install - Sean
14个回答

12

前往您的构建设置,并将目标设置切换为ENABLE_BITCODE = YES


2
谢谢,但该选项已经设置为“是”。我认为冲突在于Analytics的Cocoa Pods版本不支持位码,但最新版本应该支持。我正在手动添加它,如果有效,我会更新。 - SimonTheEngineer
3
对我来说,将此设置更改为“NO”是适当的修复方法。 - taky2
在CMake或CLion中,我们该如何做到这一点?@taky2 - cpchung

9
我之前也遇到了这个问题。幸运的是,您可以在启用了BitCode的情况下使用Google Analytics,但由于Google设置了CocoaPods支持方式,它有点令人困惑。
实际上,您可以使用两个CocoaPods:
- 'Google/Analytics' - 'GoogleAnalytics'
第一个是“最新”的,但它与更大的Google pods绑定在一起,因此不支持Bitcode。第二个仅针对分析,支持BitCode。但是,由于后者不包括其他Google pods,因此设置说明中的某些内容是不正确的。
您必须使用v2方法设置分析:
// Inside AppDelegate:

// Optional: automatically send uncaught exceptions to Google Analytics.
GAI.sharedInstance().trackUncaughtExceptions = true

// Optional: set Google Analytics dispatch interval to e.g. 20 seconds.
GAI.sharedInstance().dispatchInterval = 20

// Create tracker instance.
let tracker = GAI.sharedInstance().trackerWithTrackingId("XX-XXXXXXXX-Y")

您可以使用Google Analytics v3文档来使用其余的Google Analytics API(无需使用v2)。

截至本文撰写时,“Google/Analytics” Cocoapod仍不支持位代码。 请参见此处


2
"BitCode" 是帮助我的关键词。谢谢,伙计。 - David Seek

7

我曾遇到过这个问题,但它与位码设置无关。在我的XCode项目的框架文件夹中,不知怎么地出现了重复的框架文件。我删除了所有红色的(以及重复的)框架文件。这解决了“Apple Mach O, Linker Command failed with exit code 1”错误。


6
这对我有用:

您需要从目标的“链接框架和库”部分中删除libPods.a库。


6

在使用pods时,请确保打开的是.xcworkspace文件,而不是从xCode项目菜单中打开的项目文件。这样可以解决链接问题。


2

关闭Xcode,重命名文件夹。然后创建一个以前的名称为新文件夹。运行项目,停止项目。删除新文件夹,重命名旧文件夹并重新运行。

我的iPad Pro模拟器也受到了这个问题的影响。这让我很沮丧,因为付出了很多努力...希望Google能在下一个SDK中解决这些错误。


1
当我将“iOS Deployment Target”从“IOS 10.0”更改为当前版本(我的手机为“iOS 10.2”)时,问题就解决了。
建立设置>部署>iOS部署目标。

0
尝试使用 pod deintegrate 命令删除任何 cocoapods pods 的痕迹,然后运行 pod install 命令。

0

我又通过 CocoaPods 添加了分析功能,并暂时禁用了位码。

希望未来的 CocoaPods 版本会支持它。


0

这通常发生在使用Cocoapods并从xcproject构建时,因为xcproject不知道Cocoapod库的存在。


所以,你有更多的信息吗?如何链接Cocoapod库? - SameerShaik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接