Рамка Parse и Facebook SDK "Болты"
У меня есть приложение с установленными фреймворками Parse и Facebook. Parse был установлен путем перетаскивания файлов в папку "Frameworks" проекта и выбора "скопировать при необходимости", в то время как SDK для Facebook был установлен путем перетаскивания, а не выбора опции копирования. Оба отображаются в списке Связанные двоичные файлы. Проблема заключается в том, что болты включены в оба SDK. Я попытался использовать только один Facebook, создав следующие ошибки Link-O:
Undefined symbols for architecture x86_64:
"_BFTaskMultipleExceptionsException", referenced from:
___53+[PFObject(Private) deleteAllAsync:withSessionToken:]_block_invoke214 in Parse(PFObject.o)
___65+[PFObject(Private) _deepSaveAsync:withCurrentUser:sessionToken:]_block_invoke311 in Parse(PFObject.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Я удалил ссылку на Facebook и попытался перетащить Parse one, но ошибка сохранилась. Я также получил предупреждение, что
ld: warning: ignoring file /Users/milesper/Documents/FacebookSDK/Bolts.framework/Bolts, missing required architecture x86_64 in file /Users/milesper/Documents/FacebookSDK/Bolts.framework/Bolts (2 slices)
хотя я удалил файл из SDK.
Как мне очистить проект и ссылку на версию "Болты"? Есть ли что-то еще, что я должен делать?
Ответы
Ответ 1
Ну, я нашел его. Проблема заключалась в том, что старые файлы (которые теперь были удалены) ссылались на "Флаг путей поиска библиотек". Благодаря этому сообщению за предоставленную мне идею. Все, что мне нужно было сделать, это удалить старые пути, и теперь он работает снова.
EDIT: Похоже, что в некоторых ситуациях также имеет место порядок путей поиска (см. ниже).
Ответ 2
Вызывает порядок, в который вы включаете/выполняете поиск в рамках вашего проекта.
Вот что я сделал для работы с Parse 1.6.4 и FacebookSDK без CacoaPods
- Используйте последнюю версию болтов. (1.1.4)
- Ваши пулы include должны быть заказаны, чтобы сначала найти Bolt, затем FacebookSDK, затем Parse
![Ordering your search paths]()
Ответ 3
Это сработало для меня Временное решение для Parse 1.6.4 и Facebook SDK 3.23
Добавьте в свой AppDelegate.m или другой класс следующую константу после импорта и перед секцией реализации: NSString *const BFTaskMultipleExceptionsException = @"BFMultipleExceptionsException";
Объяснение ошибки fooobar.com/questions/551305/...
Один хак, который я нашел для работы с отсутствующими символами, просто переопределял отсутствующий символ снова в моем коде.
Строка BFTaskMultipleExceptionsException определяется здесь следующим образом:
NSString * const BFTaskMultipleExceptionsException = @ "BFMultipleExceptionsException"; Так что, возможно, просто попробуйте поместить эту строку в свой код?
Из истории на github, похоже, что это было добавлено в Bolts около 19 дней назад. Версия 1.1.4 Bolts была выпущена 14 дней назад (1.1.3 была с октября прошлого года). Так что это, вероятно, вызвано несоответствием версии болтов, которые вы заметили.
Другой вариант может заключаться в том, чтобы получить более старую версию Parse, прежде чем был выпущен Bolts 1.1.4.
Предположительно, это будет исправлено, как только новый SDK для Facebook будет доступен с помощью болтов 1.1.4.
Ответ 4
та же проблема здесь.
У меня были оба фреймворка без проблем, пока я не добавил SDK SponsorPay, который должен добавить -ObjC в "Другие флаги компоновщика" в целевые "Настройки сборки".
Итак, по моему опыту эта проблема возникает только тогда, когда присутствует флаг -ObjC.
Я попробовал все решения, представленные здесь, но ничего не сработало для меня. Надеюсь, что кто-то может принести больше света, как решить эту проблему, даже если флаг -ObjC активен.
EDIT:
Вопрос, связанный с этим, я поставлю ссылку здесь, в случае, если кому-то будет полезно: Противоречивые рамки на -ObjC
Ответ 5
У меня была проблема, я просто удалю Parser.framework в
Связанная структура и библиотеки и работайте хорошо.