Ошибки CocoaPods v0.39.0 с Facebook SDK v4.7

Старая конфигурация Cocoapods

Я использую Xcode 7 Beta 4. Первоначально я использовал Cocoapods версии 0.38.2, и когда я запустил pod install --verbose в терминале, он сказал, что загружает зависимости для Bolts, FBSDKCoreKit, FBSDKLoginKit, FBSDKShareKit, FBSDKMessengerShareKit и Pods для iOS 8.1. С этой настройкой мое приложение успешно скомпилировано. Ниже приведен файл Podfile и Objective-C, который я использовал для импорта SDK Facebook (чтобы Swift распознал его методы, на которые ссылаются, и классы Objective-C). Обратите внимание, что определенные версии, показанные в моем подфайле, также являются версиями, которые устанавливаются, даже если я не указал их явно во время написания этой статьи.

Подфайл

xcodeproj '/Users/<my_username>/MyApp/MyApp.xcodeproj'
pod "FBSDKCoreKit", "~> 4.7.0";
pod "FBSDKLoginKit", "~> 4.7.0";
pod "FBSDKShareKit", "~> 4.7.0";
pod "FBSDKMessengerShareKit", "~> 1.3.1";

MyAppObjCBridge.h

#ifndef MyAppObjCBridging_h
#define MyAppObjCBridging_h

#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
#import <FBSDKMessengerShareKit/FBSDKMessengerShareKit.h>
#import <FBSDKShareKit/FBSDKShareKit.h>

#endif

Проблемы, возникающие при обновлении до Cocoapods v0.39.0 (с v0.38.2)

В консоли появилось сообщение «Доступна версия CocoaPods 0.39.0. Для обновления используйте: gem install CocoaPods. Пока мы не достигнем версии 1.0, функции CocoaPods могут и будут меняться. Мы настоятельно рекомендуем вам всегда использовать последнюю версию.», поэтому я установил эту последнюю версию Cocoapods 0.39.0, выполнив sudo gem install cocoapods в терминале.

Но когда я скомпилировал свое приложение, оно дало мне следующие ошибки:

/Users//MyApp/MyApp/MyAppObjCBridging.h:14:9: Файл 'FBSDKCoreKit/FBSDKCoreKit.h' не найден

В Xcode я «Продукт > Очистить» (CMD+SHIFT+K), но это не имело никакого значения. Поэтому я запустил sudo gem uninstall cocoapods в Терминале (в котором 0.38.2 и 0.39.0 были указаны как установленные версии) и выбрал из списка версию 0.39.0, чтобы удалить последнюю версию и вернуться к 0.38.2. Затем я побежал pod install --verbose. Когда я попытался скомпилировать свое приложение, оно успешно скомпилировалось и снова запустилось в симуляторе.

Вопрос 1

Почему он выдает ошибку, что не может найти «FBSDKCoreKit/FBSDKCoreKit.h», когда я использую Cocoapods версии 0.39.0 вместо более старой версии 0.38.2?

вопрос 2

Если при использовании Cocoapods версии 0.38.2 (версия, которая компилируется с моим приложением) я решил добавить platform :ios, '9.0' в первую строку моего подфайла (над его существующим содержимым) и запустить pod install --verbose в Терминале, сообщения Терминала говорят мне, что он устанавливает каждый pod target для iOS 9.0 (вместо iOS 8.1) (например, - Installing targetFBSDKCoreKitiOS 9.0). Когда я затем запускаю свое приложение, оно успешно компилируется и открывается в симуляторе и отображает некоторые новые предупреждения, связанные с iOS9, большинство из которых я понимаю. Однако я не понимаю, почему это появляется. Почему появляется это предупреждение?:

ld: предупреждение: не найден каталог для параметра '-L/Users/Ls/code/swift/FreeWifiSearch/FreeWifiSearch/build/Debug-iphoneos'

Вопрос 3

При использовании Cocoapods версии 0.38.2 (версия, которая компилируется с моим приложением), если я решил добавить use_frameworks! в первую строку моего подфайла и platform :ios, '9.0' во вторую строку моего подфайла (над его существующим содержимым), а затем запустить pod install --verbose в Терминале сообщения Терминала сообщают мне, что он устанавливает каждую цель модуля для iOS 9.0 (вместо iOS 8.1).

Когда я затем запускаю свое приложение, появляются следующие ошибки:

  • Использование неразрешенного идентификатора «FBSDKLoginButton»
  • Использование неразрешенного идентификатора «FBSDKLoginManager»
  • Использование неразрешенного идентификатора «FBSDKLoginBehaviour»

Почему добавление use_frameworks! в начало моего подфайла не позволяет мне использовать идентификаторы Facebook SDK? (отмечая, что когда у меня нет use_frameworks! в верхней части моего подфайла, мое приложение успешно компилируется и запускается в симуляторе Xcode, и я могу успешно получить токен доступа Facebook SDK и войти в Facebook)


person Luke Schoen    schedule 12.10.2015    source источник


Ответы (2)


После публикации исходных вопросов было выполнено следующее, что не привело к ошибкам компилятора:

  • Обновлено с Xcode 7 Beta 4 до Xcode 7.1.1 путем загрузки последней версии из App Store.
  • Добавлены use_frameworks! и platform :ios, '9.0' в начало подфайла.
  • Цель развертывания изменена на iOS 9.0: «Настройки проекта» > «Цели» > «Общие» > «Информация о развертывании» > «Цель развертывания» > 9.0.
  • Обновлены CocoaPods до версии 0.39 с sudo gem install cocoapods
  • Переустановил модули с pod update --verbose
  • Добавлен import FBSDKLoginKit над классом, содержащим методы Facebook SDK.
  • Выполнена очистка (Shift+CMD+K) и запуск (CMD+R) в Xcode для тестирования на устройстве
person Luke Schoen    schedule 17.11.2015

Добавьте "${PODS_ROOT}/Headers/Public/FBSDKCoreKit/FBSDKCoreKit" в пути поиска заголовков вашей цели в настройках сборки.

Для меня сейчас все в порядке (CocoaPods 0.39, FBSDK 4.10)

person Han Chunlong    schedule 30.03.2016