通过CocoaPods使用Google Analytics时,"链接器命令失败,退出代码为1"

Sim*_*eer 13 google-analytics ios cocoapods swift

我正在尝试将Google Analytics添加到使用Swift编写的iOS应用中.我已经按照指南通过CocoaPods添加框架并添加了一个桥接标题,但我仍然得到:

Linker command failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

我的podfile确实有use_frameworks!所以我想知道这与它有什么关系......我可以看到,在Analytics网站上没有其他信息.

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

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
Run Code Online (Sandbox Code Playgroud)

并且搜索该问题会导致Google更新以支持位代码,但当时尚未更新可可pod框架.

dok*_*un1 10

转到您的构建设置并立即切换目标设置ENABLE_BITCODE = YES.

  • 谢谢,但该选项已设置为YES.我认为冲突是可可豆荚版本的分析不支持位代码,但最新版本应该.我目前正在手动添加,如果有效则会更新. (2认同)
  • 对我来说,将此设置更改为"NO"是适当的修复. (2认同)

sta*_*abs 9

我有同样的问题.幸运的是,你可以使用谷歌分析启用BitCode,但由于谷歌如何设置他们的CocoaPods支持,它有点令人困惑.

实际上你可以使用2个CocoaPods:

  • '谷歌分析'
  • '谷歌分析'

第一个是"最新",但它与更大的Google pod相关联,因此它不支持Bitcode.第二个仅适用于Analytics,并且支持BitCode.但是,由于后者不包含额外的Google pod,因此有关如何设置的一些说明不正确.

您必须使用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")
Run Code Online (Sandbox Code Playgroud)

其余的Google分析API可以使用v3文档(您不需要使用v2).

撰写本文时,"Google/Analytics"cocoapod仍然不支持BitCode.看这里

  • `BitCode` 是帮助我的关键字。多谢,伙计 (2认同)

luc*_*eer 7

有这个问题,但它与bitcode设置无关.我不知何故最终在我的XCode项目的Frameworks文件夹中出现了重复的框架文件.我删除了所有红色(和重复)的框架文件.这解决了"Apple Mach O,链接器命令失败并退出代码1"错误.


小智 5

这对我有用:

你必须从目标的Linked Frameworks和Libraries部分删除libPods.a库.


Atl*_*dal 5

确保在使用pod 时打开.xcworkspace文件而不是来自 xCode Project 菜单的项目文件。这应该可以解决链接问题。