Проблемы при компиляции приложения iOS 5 с помощью Google Analytics / GANTracker - PullRequest
4 голосов
/ 27 марта 2012

При попытке установить Google Analytics и скомпилировать мой проект iOS 5, я получаю следующее сообщение об ошибке:

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

Ответы [ 4 ]

3 голосов
/ 03 апреля 2012

Если вам все еще интересно, чем вызвана ваша проблема, скорее всего, ваша библиотека libGoogleAnalytics скомпилирована только для одной архитектуры (ARM), а не i386 (для симулятора).

Так как же определить, какие архитектуры являются частью двоичного кода?Для этой цели можно использовать otool , например, следующую команду (на терминале):

otool libGoogleAnalytics.a -f

Дает мне следующий вывод (обратите внимание: я создалполный двоичный файл библиотеки Google 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 голосов
/ 06 мая 2012

Просто убедитесь, что CFNetwork.framework указан в разделе «Связать двоичные файлы с библиотеками» в «Фазах сборки» вашей текущей цели.

Это решило мою проблему.

0 голосов
/ 03 апреля 2012

У меня была та же проблема, и я решил ее, добавив все, что вы добавили, а также добавив libGoogleAnalytics_NoThumb.a, о котором вы не упомянули.Я нашел это здесь:

http://code.google.com/apis/analytics/docs/mobile/download.html

0 голосов
/ 28 марта 2012

Если GANTracker отсутствует в ваших источниках компиляции? Перейдите к настройкам вашего проекта, затем к цели сборки вашего приложения, затем к этапам сборки и убедитесь, что все ваши зависимости присутствуют в соответствующих разделах.

build phases image

...