谷歌分析库IOS版

18

当我添加Google Analytics库时,出现了这个警告

Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_NSAttributeDescription", referenced from:
      objc-class-ref in libGoogleAnalytics.a(GAICoreDataUtil.o)
      objc-class-ref in libGoogleAnalytics_debug.a(GAICoreDataUtil.o)
  "_OBJC_CLASS_$_NSFetchRequest", referenced from:
      objc-class-ref in libGoogleAnalytics.a(GAIDataStore.o)
      objc-class-ref in libGoogleAnalytics_debug.a(GAIDataStore.o)
  "_NSSQLiteErrorDomain", referenced from:
      l003 in libGoogleAnalytics.a(GAIDataStore.o)

请帮助我


一,这些不是警告,而是错误。二,这与Xcode有什么关系?不是Xcode在抱怨,而是它的底层编译器... - user529758
11个回答

41
libGoogleAnalytics.a添加到您的目标设置[Build phases]-[Link Binary with Libraries]。还要检查是否将libsqlite3.0dylib(GA存储跟踪数据的位置)和CFNetwork.framework添加到其中,因为它们是Google Analytics/iOS (version 2.0 beta 3)所需的。
附注:对于Google Analytics/iOS版本3.0,需要使用CoreData framework

你节省了我很多时间。谢谢 @jki - astone26
@sagimann 你是对的,因为Analytics 3.0需要CoreData框架。 - jki
最终我添加了CoreData.framework、libz.dylib和libGoogleAnalytics.a,只有在这之后它才能正常工作。 - Uygar Y
为什么他们的入门文章没有提到需要libGoogleAnalytics.a?! - Iulian Onofrei

13

我曾经遇到过与 NSAttributeDescription 相关的问题。文档中说明此函数来自 CoreData.framework,所以我添加了这个框架,这样就不会再出现错误了。


9
与iOS v2的Google Analytics SDK相关的问题。
我不确定要写哪个主题,因为没有确切的问题--我已经自己解决了--发现(这似乎是最接近的一个(不确定是否应该打开一个新的),但对某人可能有帮助。
问题:
我之前(1.5.1)安装在“SDKs / GoogleAnalytics SDK”单独文件夹中的SDK。在进行v2迁移后,我将新文件放入“SDKs / GoogleAnalytics SDK v2”中。按照迁移的所有说明(来自Google网站)(详细说明只是从第一个文件夹中删除先前对文件的引用并添加新的引用),我开始在编译时收到以下错误消息:
未定义的符号(针对体系结构armv7):“_OBJC_CLASS _ $ _ GAI”,引用自:AppDelegate.o ld中的objc-class-ref:找不到符号(使用-v查看调用时退出代码1)。
我浏览了谷歌(和stackoverflowing)的前几页,最受欢迎的解决方案建议是“将“仅构建活动架构”属性设置为“是”(我的活动架构是“armv7 armv7s”)。但那完全没用。
解决方案:
然而,奇迹发生了。我注意到链接器路径中列出了一个旧目录“SDKs / GoogleAnalytics SDK”。因此,在删除该目录之后(因为我不知道目录列表在设置中存在的位置),一切都开始编译并像魅力一样工作(对我来说,将“仅构建活动架构”设置为“是”也不必要)。

1
也许它被列在“构建设置>库搜索路径”中。 - Adri
1
可能是这样 - 很难找到问题的核心。但事实是,我已经按照迁移指南所说的做了一切,没有看到你提到的选项的参考。 - Agat

7
在构建设置中添加-lGoogleAnalyticsServices -> 其他链接器标志。

这正是我的问题所在。需要添加框架/添加其他……/选择文件“libGoogleAnalyticsServices.a”,然后完成,错误消息就会消失。该文件在“入门指南”文档中没有提到。 - Travis M.

6

我遇到了与上述类似的错误,实际上更多(SDK 2.0 beta 4)。在添加Analytics库/头文件后,与这两个框架链接解决了这些问题:

CoreData.frameworkSystemConfiguration.framework


4

我跟着这篇教程做。教程里建议添加以下代码:

#import "GAI.h"
#import "GAIFields.h"

将内容添加到NameofTheProject-Prefix.pch文件中。

除了CoreData.frameworkSystemConfiguration.framework之外,还需要添加libz.dylib。这样可以解决所有问题。


添加libz.dylib解决了我的问题。谢谢。 - Gopinathan

3

我之前遇到了问题,因为没有添加libGoogleAnalytics_debug.a文件。把这个文件添加进去后重新构建项目,问题就解决了。


0
我遇到了一个奇怪的问题。由于某种原因,libGoogleAnalytics.a 在应该在Link Binary With Libraries中的情况下出现在Copy Bundle Resources中。
希望这能帮助到某些人。

0

我遵循了所有建议,但在 XCODE 5.1.1 上仍然出现错误。

对我来说,错误出现在目标 > 构建设置 > 架构 > 架构中。

我将值替换为 ARCHS_STANDARD_32_BIT,错误就消失了。

也许 libGoogleAnalytics 库没有编译成64位架构。

希望这能帮助到某些人。或者获取最新的编译成64位的库。


0

如果使用 Cocoapods,请确保 Other linker flags 只有 $(inherited) 标志,并删除任何子 architecture 标志。

对于 framework search pathsLibrary search paths,也只设置 $(inherited) 标志。

在头文件桥接文件中放置 #import <Google/Analytics.h>


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