2012-03-27 84 views
4

当试图安装谷歌分析和编译我的iOS 5的工程,我得到以下错误信息:问题编制的iOS 5应用程序时,与谷歌Analytics(分析)/ GANTracker

Undefined symbols for architecture i386: 
"_OBJC_CLASS_$_GANTracker", referenced from: 
objc-class-ref in AppDelegate.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

,代码将无法编译。 我的构建目标是iOS 5中,我链接下面的库:
- libsqlite3.dylib
- libz.dylib
- libGoogleAnalytics.a
- CFNetwork的
- 和GANTracker.h

和投入:

#import "GANTracker.h" 
#define kGANAccountId @"UA-XXXXXXX-X" 
static const NSInteger kGANDispatchPeriodSec = 10; 
@implementation AppDelegate 
@synthesize window = _window; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
[[GANTracker sharedTracker] startTrackerWithAccountID:kGANAccountId 
             dispatchPeriod:kGANDispatchPeriodSec 
              delegate:nil]; 

NSError *error; 
if (![[GANTracker sharedTracker] setCustomVariableAtIndex:1 
                name:@"iPhone1" 
                value:@"iv1" 
               withError:&error]) { 
    // Handle error here 
} 

if (![[GANTracker sharedTracker] trackEvent:@"my_category" 
            action:@"my_action" 
             label:@"my_label" 
             value:-1 
            withError:&error]) { 
    // Handle error here 
} 

if (![[GANTracker sharedTracker] trackPageview:@"/app_entry_point" 
            withError:&error]) { 
    // Handle error here 
} 

任何我已经按照一切:http://code.google.com/mobile/articles/analytics_end_to_end.html

我错过了一个库或框架吗? 我正在使用Xcode版本4.3.1

+0

您是否添加了CFNetwork Framework? – malinois 2012-03-27 20:09:26

+0

是的,编辑后。 – dvdfrddsgn 2012-03-27 20:11:56

+0

正确答案张贴在这里:[http://stackoverflow.com/questions/9863336/error-message-when-linking-google-analytics-to-ios-app/10099445#10099445][1] [1]:http://stackoverflow.com/questions/9863336/error-message-when-linking-google-analytics-to-ios-app/10099445#10099445 – dvdfrddsgn 2012-04-16 20:43:49

回答

0

如果GANTracker从您的编译源中丢失?转到您的项目设置,然后是应用程序的构建目标,然后是构建阶段,并确保所有依赖项都存在于相应的部分。

build phases image

+0

GANTracker是一个.h文件。他们可以在这里添加吗?我需要的所有框架和库都在这里...... – dvdfrddsgn 2012-03-27 20:18:52

+0

是的,在编译源代码部分。 – JoePasq 2012-03-27 21:35:30

+0

做到这一点,现在我得到这个错误太:警告:没有规则来处理文件“$(PROJECT_DIR)/ EVO的-STIK联盟/资源/系统配置/ GANTracker.h”型sourcecode.ch为i386硬件架构 – dvdfrddsgn 2012-03-27 21:37:43

3

如果你仍然不知道是什么原因导致您的问题,最有可能您libGoogleAnalytics库只编译为一个架构(ARM),而不是I386(对于仿真器)。

那么如何找出哪些体系结构是二进制文件的一部分呢?为此可以使用otool,例如,下面的命令(对终端):

otool libGoogleAnalytics.a -f

给我下面的输出(请注意:我创建了谷歌Analytics(分析)图书馆自己的肥二进制):

Fat headers 
fat_magic 0xcafebabe 
nfat_arch 3 
architecture 0 
    cputype 7 
    cpusubtype 3 
    capabilities 0x0 
    offset 68 
    size 243208 
    align 2^2 (4) 
architecture 1 
    cputype 12 
    cpusubtype 6 
    capabilities 0x0 
    offset 243276 
    size 231504 
    align 2^2 (4) 
architecture 2 
    cputype 12 
    cpusubtype 9 
    capabilities 0x0 
    offset 474780 
    size 229552 
    align 2^2 (4) 
Archive : libGoogleAnalytics.a (architecture i386) 
Archive : libGoogleAnalytics.a (architecture armv6) 
Archive : libGoogleAnalytics.a (architecture armv7) 

在过去的3显示支持的体系结构。您可以使用lipo命令行工具创建自己的“胖”二进制文件。

0

只要确保CFNetwork.framework列在“与库链接二进制文件”下列出您当前目标的“构建阶段”。

这解决了我的问题。

相关问题