2012-09-26 23 views
19

Ho appena aggiornato l'SDK iOS di Facebook nel mio progetto dalla 3.0 alla 3.1. Il progetto non si compila più. Invece Ottengo i seguenti errori del linker:Facebook iOS SDK 3.1 con XCode 4.2 errori del linker

Undefined symbols for architecture i386: 
    "_ACFacebookAppIdKey", referenced from: 
     -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o) 
    "_ACFacebookAudienceEveryone", referenced from: 
     -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o) 
    "_ACFacebookAudienceFriends", referenced from: 
     -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o) 
    "_ACFacebookAudienceKey", referenced from: 
     -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o) 
    "_ACFacebookAudienceOnlyMe", referenced from: 
     -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o) 
    "_ACFacebookPermissionsKey", referenced from: 
     -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o) 
    "_OBJC_CLASS_$_ASIdentifierManager", referenced from: 
     objc-class-ref in FacebookSDK(FBSettings.o) 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Il Facebook docs dicono chiaramente:

L'SDK si basa su altri tre quadri (AdSupport, conti e sociali) per utilizzare il Facebook incorporate in iOS6.

Tali quadri non esistono in Xcode 4.2. C'è qualche soluzione, posso scaricare (dove?) E aggiungere i framework manualmente al mio progetto e sarà sufficiente per sbarazzarmi degli errori di compilazione o devo passare a Xcode 4.5?

risposta

21

Tali framework fanno parte di iOS 6 (beh, ad eccezione di Accounts, che è da iOS 5). Non potrai utilizzarli senza eseguire l'aggiornamento a Xcode 4.5 e, di conseguenza, iOS 6 SDK.

È ancora possibile impostare il target di implementazione su iOS 4.3, se ciò è motivo di preoccupazione.

penso che le opzioni sono:

  1. Aggiornamento a Xcode 4.5, o
  2. Usa Facebook SDK 3.0.
+0

Questa risposta è corretta! –

+4

Ho riscontrato lo stesso problema su xcode 4.5. – marcog

+13

@marcog Hai aggiunto i Framework? project -> target -> build fasi -> link binary con librerie -> + -> seleziona AdSupport, Account e Social – borisdiakur

0

Sobri ha ragione. Effettua l'upgrade a Xcode 4.5 o usa l'SDK 3.0 o Se vuoi usare 3.1, scarica il sorgente da github, modifica il file di build (in pratica rimuovi i riferimenti ai framework forniti da iOS 6.0) e ricostruisci l'SDK. In questo modo puoi utilizzare SDK 3.1 e eseguirlo su versioni precedenti di XCode.

6

L'SDK si basa su altri tre framework (AdSupport, Account e Social).

Per aggiungere questi, passare alla sezione "Framework e librerie collegate" del riquadro Riepilogo della destinazione e aggiungerli.

+0

leggi l'intera domanda per favore. Non ci sono quadri di questo tipo (ad eccezione degli account) in xcode 4.2 – borisdiakur

+0

Sì, dovresti usare xcode 4.5 – Burak

9

Per rendere le cose chiare:

Per XCode 4.5:

Se si utilizza FB SDK3.0, avete solo bisogno di aggiungere account e quadri FacebookSDK.

Se si utilizza FB SDK3.1, è necessario aggiungere i framework Account, FacebookSDK, Social e AdSupport.

Se si utilizza FB SDK3.2 ++, controllare da soli quali altri framework potrebbero essere necessari o meno. ;)

Speranza che lo riassuma bene per tutti.

0

Le seguenti operazioni possono essere utili per risolvere questo problema

  1. Scarica Facebook SDK per iOS 3.0 dai link presenti nella URL http://developers.facebook.com/ios/features/whats-new-ios-sdk-3/
  2. Aggiungere il quadro FacebookSDK dalla directory Documenti Mac
  3. Aggiungi sqlite3 per proiettare

Poi, ho provato il codice http://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/ con le seguenti modifiche (come è for Facebook iOS SDK 3,1)

  1. Sostituire openActiveSessionWithReadPermissions con openActiveSessionWithPermissions
  2. Sostituire [FBSession.activeSession handleDidBecomeActive]; con [FBSession activeSession];

Questo ha funzionato per me. Provalo una volta.

Grazie, prodeveloper.

+0

Non funziona per me ... – pocjoc