2012-03-27 2 views
4

Kompilieren Beim Versuch, Google Analytics zu installieren und zu meinem iOS 5-Projekt kompiliert, erhalte ich die folgende Fehlermeldung:Probleme, wenn iOS 5 App mit Google 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) 

und der Code wird nicht kompiliert. Mein Build-Ziel ist iOS 5, ich bin die Verknüpfung der folgenden Bibliotheken:
- libsqlite3.dylib
- libz.dylib
- libGoogleAnalytics.a
- CFNetwork
- und GANTracker.h

und Putting:

#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 
} 

Alle folgte ich alles in haben: http://code.google.com/mobile/articles/analytics_end_to_end.html

Fehle ich eine Bibliothek oder ein Framework? Ich benutze Xcode Version 4.3.1

+0

Haben Sie CFNetwork Framework hinzugefügt? – malinois

+0

Ja, editierter Beitrag. – dvdfrddsgn

+0

richtige Antwort gepostet hier: [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

Antwort

0

Wenn GANTracker in Ihren Kompilierquellen fehlt? Gehen Sie zu Ihren Projekteinstellungen, dann zum Build-Ziel Ihrer Anwendung, dann zu den Build-Phasen und stellen Sie sicher, dass alle Ihre Abhängigkeiten in den entsprechenden Bereichen vorhanden sind.

build phases image

+0

GANTRacker ist eine .h-Datei. Können sie hier hinzugefügt werden?Alle Frameworks und Bibliotheken, die ich benötige, sind übrigens hier ... – dvdfrddsgn

+0

Ja, im Compile Source-Bereich. – JoePasq

+0

Fertig, und jetzt bekomme ich diesen Fehler auch: Warnung: keine Regel zur Verarbeitung der Datei '$ (PROJECT_DIR)/Die Evo-Stik-Liga/Ressourcen/Systemkonfiguration/GANTRacker.h' vom Typ sourcecode.ch für die Architektur i386 – dvdfrddsgn

3

Wenn Sie noch fragen, was das Problem verursacht, wahrscheinlich Ihre libGoogleAnalytics Bibliothek nur für eine Architektur (ARM) und nicht i386 (für Simulator) kompiliert wird.

Wie also kann man herausfinden, welche Architekturen Teil der Binärdatei sind? Zu diesem Zweck kann otool verwendet werden, z.B. Der folgende Befehl (auf Terminal):

otool libGoogleAnalytics.a -f

gibt mir die folgende Ausgabe (Bitte beachten Sie: habe ich eine Fett binäre der Google Analytics-Bibliothek selbst):

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) 

Im letzten 3 Zeilen werden die unterstützten Architekturen angezeigt. Sie können Ihre eigenen "fetten" Binärdateien mit dem Befehlszeilentool lipo erstellen.

0

Stellen Sie nur sicher, dass das CFNetwork.framework unter "Link Binary with Libraries" in Ihrem aktuellen Ziel "Build Phasen" aufgeführt ist.

Das löste mein Problem.