Ошибка модуля сборки iOS8 для Facebook для FBSDKCoreKit

Я пытаюсь добавить SDK для Facebook в приложение iOS 8 Objective-C в Xcode. Я сделал установку в соответствии с инструкциями FB-dev. Тем не менее, я получаю сообщение «Не удалось создать модуль FBSDKCoreKit» при добавлении заголовка в файл AppDelegate.m.

#import "AppDelegate.h" #import  

Основываясь на том, что я читал в другом месте

  1. Я уже очистил сборку и переустановил Xcode.
  2. Я также заново установил установщик Facebook SDK и попытался добавить его в пустой проект (в случае, если в приложении было что-то поврежденное).
  3. Я дважды проверил plist и файлы FB файлов фреймов в инструкциях, но ничего не показалось пропавшим.

Я в тупике.

FBSDKCoreKit не может быть создан из-за ошибки «включить немодульный заголовок внутри фрейм- модуля » в заголовочный файл FBSDKAppLinkResolver.h: в строке #import .

Решение из compiler errors Swift: « немодульный заголовок внутри фрейм- модуля» (переключение CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = ДА) не помогло мне.

Мое решение:

  1. Создать в карте модуля файлов Bolts.framework: Модули / module.modulemap (как в FBSDKCoreKit.framework)
  2. Поместите такой код внутри

     framework module Bolts { umbrella header "Bolts.h" export * module * { export * } explicit module BFAppLinkResolver { header "BFAppLinkResolver.h" link "BFAppLinkResolver" export * }} 

Интересным фактом является то, что в FBSDKCoreKit такая схема реализована Facebook, почему они не применили ее в Bolts …

Не уверен, что у него есть побочные эффекты, но установка параметра «Разрешить немодульное включение в модульные модули» в YES в настройках Build решила проблему для меня. Надеюсь, это сработает и для вас.

Просто сделав следующее, позвольте мне создать приложение успешно.

В настройках сборки Установите флажок «Разрешить немодульное включение в frameworks модуля» в YES

И я не хотел устанавливать «Включить модули» (c и Objective-C) на NO

введите описание изображения здесь

Для Objective-C я использовал Paul Lehn: https://developers.facebook.com/bugs/362995353893156/

  1. Добавьте флаг -ObjC в настройку сборки других компоновщиков вашего проекта. (если вы не хотите добавлять конфигурацию проекта, для classов кнопок инициализации)
  2. «Разрешить немодульное включение в модульные модули» в YES в настройках сборки
  3. Установите «Включить модули» (c и Objective-C) на No

(также не забывайте добавлять фреймворки, для меня это было: «AdressBook» «QuartzCore» «CoreLocation» «CoreGraphics», а если еще не добавлено, также «UIKit» «Foundation» «CoreData»)

и, наконец, он работал для меня

все это используется для связанного FBSDK в пользовательской папке в папке проекта, а не с ~ / Documents / FacebookSDK

Удалить каталог модhive из FacebookCoreKit.framwork.

введите описание изображения здесь

От Криса Пана (команда Facebook): https://developers.facebook.com/bugs/362995353893156/

В выпуске 4.0.1 были добавлены модули модhive (которые должны были устранить необходимость создания заголовков мостов), но похоже, что это вызвало некоторые другие проблемы совместимости. Мы работаем над правильным исправлением, но еще одним обходным решением является удаление карт модhive вручную из каждого пакета FBSDK * Kit.framework; например, rm -r ~/Documents/FacebookSDK/FBSDKCoreKit.framework/Modules/ (и повторяются для FBSDKLoginKit и FBSDKShareKit)

Насколько мне известно, у нас есть 2 варианта решения этой проблемы:

  1. Удалите все карты модhive, как сказал Крис.
  2. Добавьте временный (неофициальный) файл карты модуля в папку Bolts.framework (в папке FacebookSDK). Вы должны проверить, отсутствует ли эта папка или нет.

Если у вас возникла проблема с «FBSDKCoreKit», вы можете попробовать следующие решения:

  1. Goto Build Настройка и поиск «разрешить немодульные» и Set

    «Разрешить немодульное включение в frameworks» флаг в YES

введите описание изображения здесь

  1. Перейдите в папку Document / FacebookSDK

    затем перейти к FBSDKCoreKit.framework

    В этой папке «Удалить модули». Затем добавьте в свой проект библиотеку FacebookSDK.

  2. Задайте путь поиска Framework к «~ / Documents / FacebookSDK»

    Шаги по поиску пути поиска Framework

    Настройте параметры проекта и найдите «путь поиска каркаса».

    Затем добавьте “~ / Documents / FacebookSDK”

введите описание изображения здесь

Редактировать:

пожалуйста, откройте путь поиска Framework в приложении Facebook и скопируйте все пути, упомянутые там в вашем приложении. В отличие от пути, который я прикреплл ниже, снимки экрана

введите описание изображения здесь

Это устранит вашу проблему

Получив эту проблему, вам нужно установить

 Enable Modules (C and Objective-C) 

к НЕТ .

Я столкнулся с такой же проблемой. Проблема заключалась в том, что мой каталог проекта содержал пробел в названии «Application Demo». Вот почему всякий раз, когда я перетаскиваю фреймворки Facebook, он добавлял пространство в пути поиска Framework в настройках. Удалите это пространство, разрешив проблему.

TL; DR Удалите ссылку на Bolts.framework в своем проекте.

Ни один из этих или других ответов не работал для меня (в моем случае). Для моего проекта мы переключались с более старого Facebook-sdk, и у нас была версия Bolts.framework.

Чтение документации

SDK автоматически загружает свои фреймворки и зависимости ресурсов.

Как таковой, я думаю, что происходит столкновение. Был файл Bolts.framework, который у меня был раньше, а затем новый, который появился, когда я загрузил новый пакет FacebookSDK (в этом случае – 4.7).

Удаление моего Bolts.framework устраняет проблему (обязательно очистите перед перестройкой).

Вероятно, вы импортируете папку «Образцы», которая поставляется с SDK для Facebook, в ваш проект. Удалите ссылки на эти файлы из своего проекта, и он должен работать. Не нужно менять флаги в настройках сборки.

Я должен направить вас на этот текущий открытый вопрос, назначенный на Facebook: https://developers.facebook.com/bugs/362995353893156/ . Ни один из ответов здесь не помог мне, поэтому я предполагаю, что мы просто сидим уток:

Как на момент написания, сообщение от Facebooks Chris Pan :

«В выпуске 4.0.1 добавлены модули модhive (которые должны были устранить необходимость создания заголовков мостов), но похоже, что это вызвало некоторые другие проблемы совместимости. Мы работаем над правильным исправлением, но еще одним обходным решением является удаление карт модhive вручную из каждого набора FBSDK * Kit.framework, например, rm -r ~/Documents/FacebookSDK/FBSDKCoreKit.framework/Modules/ (и повторить для FBSDKLoginKit и FBSDKShareKit) ”

Kosala Ubayasekara заставила его работать, но поскольку это открытая проблема, вы можете просто подождать, пока не будет ясно официальное исправление:

  1. В настройках сборки в модулях Apple LLVM:

    1. Установить Разрешить немодульное включение в Framework-модули “, установив значение NO
    2. Включить модули (C и Object C) в положение NO.
  2. Создайте заголовок моста, чтобы включить заголовки SDK для Facebook

  3. Заголовок связывания ссылок в настройках сборки: Swift Compiler – Генерация кода.
  4. Импортируйте FBSDKCoreKit в файл делегирования приложения и реализуйте основные требования к SDK для Facebook в соответствии с документацией FB

Тот же вопрос был со мной. … Для меня это не работает. Я установил. модhive, флагов и других вещей … но ничего не помогает.

Но для меня этот вопрос решается

ПЕРЕМЕЩАЙТЕ свою папку фреймов ПОСЛЕ или ВЕРНУТЬ папку, в которой находится файл .pch.

Когда моя папка frameworks @ myapp/{frameworkFolder}/fbframeworks.
Он показывал проблемы.

Я перемещаю его в myapp/myapp/modal/{fbframework}/. Затем этот вопрос был решен. (файл my.pch находится в myapp / myapp.)

Может быть, то же самое может помочь любому, кто имеет такую ​​же проблему.

У меня такая же проблема, я использовал новейший Facebook SDK (FacebookSDKs-iOS-20160316) на Xcode 6.4, он постоянно дает мне эту ошибку всякий раз, когда я AppDelegate.m следующий код в файл AppDelegate.m : #import

Когда я переключился на Xcode 7.2, проблема решена, ошибка исчезла. Угадайте, что это может быть проблема, совместимая с версией

Если вы столкнулись с той же проблемой со мной, вы можете попробовать использовать Xcode 7.2 для ее создания. Проблема в том, что Xcod 6.4 никогда не сможет использовать, если вы храните в своем проекте sdk Facebook.

Надеюсь это поможет!

Для тех, кто пришел сюда и сделал ту же ошибку новобранца, что и я. Может быть, я смогу сэкономить некоторое время. Я работаю над старым проектом, который в основном состоит из кода Objective-C. Мы пытаемся внедрить новый материал в Swift.

Это то, что я пытался в моем коде Swift

 import FBSDKCoreKit class SomeClass { func doSomething { FBSDKAppEvents.logEvent("Some Event") } } 

Но компилятор жаловался, что он не может скомпилировать модуль и т. Д.

Как я это решил

  • Удалите import FBSDKCoreKit из моего кода Swift.
  • Отредактировано наше Bridging-Header.h и импортировано FBSDKCoreKit : #import

Убедитесь, что вы также импортировали frameworks Bolts, это сработало для меня.

  • Как добавить userInfo в UIAlertView?
  • Объектив-C Категория Причинение непризнанного селектора
  • Как получить разницу во времени в iPhone
  • Потяните, чтобы обновить UITableView без UITableViewController
  • Как получить текущее название города?
  • Как анализировать длительность ISO-8601 в Objective C?
  • Ошибка UICollectionView Assertion
  • Круговые контрольные бары в IOS
  • Как проспать от сна программно, если крышка закрыта?
  • Как отключить горизонтальную прокрутку UIScrollView?
  • Создание пользовательского UIKeyBoard для iPhone
  • Interesting Posts

    В чем разница между SCSS и Sass?

    Как я могу создать новую строку в строке в sh?

    Для Android требуется уровень соответствия компилятора 5.0 или 6.0. Вместо этого найдено «1.7». Используйте Android Tools> Fix Project Properties

    Метод доступа после завершения анимации UIImageView

    Моя камера Android Uri возвращает нулевое значение, но исправление Samsung на месте, помощь?

    Блокнот ++: как добавить возврат каретки (нажатие клавиши ввода) после определенного символа

    Использует Random и OrderBy хороший алгоритм тасования?

    Ошибка MediaRecorder: -38

    loop on list with remove

    Затенение графика плотности ядра между двумя точками.

    Каков правильный способ удаления термопасты из ЦП?

    как избежать перекрестной политики домена в jQuery ajax для использования службы wcf?

    Когда я должен использовать @synthesize явно?

    Что такое mysql error 1025 (HY000): ошибка при переименовании ‘./foo’ (errno: 150) означает?

    Как я могу обмениваться Интернетом через сеть Ad-Hoc?

    Давайте будем гением компьютера.