Подтвердить что ты не робот

Facebook iOS SDK 3.1 с ошибками компоновщика XCode 4.2

Я только что обновил IOS SDK для Facebook в своем проекте от 3,0 до 3,1. Проект больше не компилируется. Вместо этого я получаю следующие ошибки компоновщика:

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)

Facebook docs ясно говорят:

SDK опирается на три другие структуры (AdSupport, Accounts и Social), чтобы использовать функции Facebook, встроенные в iOS6.

Эти рамки не существуют в Xcode 4.2. Есть ли какое-либо решение, например, можно загрузить (где?) И добавить фреймворки вручную в мой проект, и этого достаточно, чтобы избавиться от ошибок компиляции или мне нужно обновить до Xcode 4.5?

4b9b3361

Ответ 1

Эти фреймворки являются частью iOS 6 (ну, кроме Accounts, который относится к iOS 5). Вы не сможете использовать их без обновления до Xcode 4.5 и, следовательно, iOS 6 SDK.

Вы все равно можете установить целевой показатель развертывания до iOS 4.3, если это вас беспокоит.

Я думаю, что ваши варианты:

  • Обновление до Xcode 4.5 или
  • Используйте Facebook SDK 3.0.

Ответ 2

Чтобы все было ясно:

Для XCode 4.5:

Если вы используете FB SDK3.0, вам нужно только добавить учетные записи и рамки FacebookSDK.

Если вы используете FB SDK3.1, вам нужно добавить структуры Accounts, FacebookSDK, Social и AdSupport.

Если вы используете FB SDK3.2 ++, проверьте сами, какие другие фреймворки вам могут понадобиться или нет.;)

Надеюсь, что это подытожит для всех.

Ответ 3

SDK опирается на три другие структуры (AdSupport, Accounts и Social).

Чтобы добавить их, перейдите в раздел "Связанные рамки и библиотеки" целевой панели "Сводка" и добавьте их.

Ответ 4

Собри прав. Или обновите до Xcode 4.5 или используйте SDK 3.0, или если вы хотите использовать 3.1, затем загрузите источник из github, измените файл сборки (в основном удалите ссылки на фреймворки, предоставленные iOS 6.0) и перестройте SDK. Это позволяет использовать SDK 3.1, а также запускать его в старых версиях XCode.

Ответ 5

Следующие шаги могут быть полезны для решения этой проблемы.

Затем я пробовал код в http://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/ со следующими изменениями (как для Facebook iOS SDK 3.1)

  • Замените openActiveSessionWithReadPermissions на openActiveSessionWithPermissions
  • Замените [FBSession.activeSession handleDidBecomeActive]; на [FBSession activeSession];

Это сработало для меня. Попробуйте один раз.

Спасибо, prodeveloper.