'Фреймворк не знайдений' у Xcode


76

Я знаю, що про це просили пару разів. Я дотримувався вказівок із них:

Додавання фреймворків до проекту в Xcode 5 та додавання * відносних * шляхів

xcode4: Помилка посилання: Каталог не знайдений для опції

Все-таки Xcode видає цю помилку:

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

Ось моя поточна конфігурація:

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

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

Фреймворк болтів - це те, що я можу використовувати Parse SDK. Я завантажив пустий проект звідси: https://parse.com/apps/quickstart#parse_data/mobile/ios/native/new

Це працює. Я намагався скопіювати всі параметри конфігурації, але це все одно не працює.


Натомість ви можете використовувати кокоподи. github.com/ParsePlatform/Parse-SDK-iOS-OSX
BenJammin

Відповіді:


78

Спробуйте видалити Bolts.frameworkзі зв’язаного фреймворку та повторно додати його. Крім того , в вашому Framework Search Pathтримати шлях до Bolts.frameworkяк $(PROJECT_DIR)/Boltsякщо він знаходиться всередині папки болтів на своєму шляху до директорії проекту.


1
Щоб знайти шлях до фреймворку, перейдіть до свого проекту, виберіть ціль, а потім перейдіть до створення налаштувань. Шукайте, frameworkдоки жирним шрифтом не побачите шлях пошуку в рамках.
George_E

25

Я досить новачок у розробці iOS. Очевидно, ця проблема для мене була результатом відкриття проекту .xcodeproj Xcode замість робочої області Xcode .xcworkspace. Натомість я відкрив робочу область, і помилка зникла.


Це вирішує це для мене, але коли я відкриваю робочу область, я бачу лише файл ViewController.class. Коли я намагаюся відкрити інші файли, вони відкриваються у вигляді збоку, що насправді не може правильно прочитати файли xib. Чи знаєте ви, як це зробити?
Сем

8

видалити всі фреймворки з вбудованих двійкових файлів і повторно додати їх


5

Ось рішення:

Перетворіть атрибут "$ (PROJECT_DIR)" (може бути нерекурсивним за замовчуванням) у рекурсивний параметр у Виберіть проект Клацніть на Цільові клацання - Створіть пошук параметрів "Шлях пошуку в рамках" - Двічі клацніть на введенні.

Вилучено з https://stackoverflow.com/a/31298214/4493512


5

я теж отримував цю помилку, я перемістив файл фреймворку в кореневу папку проекту і знову додав до фреймворку, і проблема вирішена.


4

Я просто мав таку ж ситуацію (мені було важко усунути помилку збірки OP після додавання сторонніх фреймворків), і це здається помилкою Xcode(моя 8.3.2 (8E2002)).

Проблема полягала в тому, що ім’я папки у шляху до фреймворку містило пробіли. У цьому випадку Xcode неправильно захищав їх із зворотними скісними рисками, як це в Build Settings -> Framework Search Paths:

$(PROJECT_DIR)/Folder\ with\ spaces/Lib

Щоб виправити це, просто відредагуйте запис вручну, щоб видалити ці зворотні скісні риски та введіть цілий рядок у лапки, як це:

"$(PROJECT_DIR)/Folder with spaces/Lib"

4

Видаліть структуру, яка спричиняє проблему (видаливши посилання).

Потім додайте його знову, виконавши ці дії для додавання фреймворків і бібліотек FBSDK:

  1. натисніть проект
  2. Загальні налаштування
  3. взаємозв'язок і бібліотеки
  4. натисніть кнопку плюс і додайте все, що хочете

Я б міг подумати, що це спрацює само собою, але навіть після цього мені все одно довелося зняти прапорець "Цільове членство", запустити Продукт> Очистити, а потім знову встановити прапорець Цільове членство.
Майкл

4
  1. Видаліть посилання на фреймворк із налаштування проекту Xcode.
  2. Перемістіть фреймворк у папку проекту.
  3. Повторно додайте фреймворк у налаштуваннях проекту Xcode.
  4. очистіть проект і перекомпілюйте його.

1
Важливою частиною цих інструкцій для мене було те, що коли я переміщував фреймворк у папку проекту, а не запускав його в іншому місці у моїй файловій системі, Xcode автоматично додавав батьківську папку фреймворка до Framework Search Pathsналаштування збірки моєї цілі, коли я повторно додавав фреймворк до ціль у Xcode. Я вирішив додати Frameworksпапку в моєму проекті таким чином, що моя мета була Framework Search Pathsзапис наступним чином : "$(PROJECT_DIR)/Frameworks".
Adil Hussain

4

Якщо ви використовуєте, CocoaPodsспробуйте запустити:

pod deintegrate
pod update

3

Окрім видалення фреймворку з Podfileта Linked Frameworks and Libraries, мені також довелося видалити посилання на фреймворк у Other Linker Flags.


3

Жодне з вищезазначеного не працювало для мене, поки я не виявив, що у мене є порожній рядок "Будь-яка архітектура | Будь-який SDK" під "Шляхи пошуку / налагодження Framework" у розділі "Налаштування збірки".

Рядок видалено, і він працює!


2

1: - Видаліть фреймворк з проекту Xcode. Закрийте Xcode.

2: - Відкрийте свій проект у XCode і перейдіть до файлу в меню та виберіть Додати файли до "YourProjectName".

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

3: - Виберіть "YourFramwork.framework" у каталозі, де ви його зберігаєте.

4: - Поставте прапорець Копіювати елементи, якщо потрібно.

5: - Натисніть Додати.

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

Переконайтеся, що ви додали фреймворк як у вбудовані двійкові файли, так і в зв’язані фреймворки та бібліотеки в розділі Параметри цілі - Загальні. Як показано на наступних зображеннях: -

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

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


Важливою частиною цих вказівок для мене було те, що коли я скопіював фреймворк у свій проект перед тим, як додати його до моєї цілі, Xcode автоматично додав запис для нього у Framework Search Pathsналаштування збірки мого цілі . Я вирішив скопіювати структуру в Frameworksпапку в моєму проекті таким чином, що моя мета була Framework Search Pathsзапис наступним чином : "$(PROJECT_DIR)/Frameworks".
Аділ Хуссейн,

1

Коли ця помилка трапилася зі мною, це тому, що папка Pods знаходилась у iCloud і не мала локальної копії на моєму комп’ютері. Перейдіть до папки вашого проекту у Finder і перевірте, чи є символ iCloud в будь-якій з папок всередині нього!


1

Я зрозумів, що не запускав / будував свій фреймворк з Generic Device, що дивно призводить до цих проблем. Я просто повернув фреймворк назад, і він спрацював.


0

Мій фреймворк має довгу назву, як FrameworkSDK_Light-1.0.6.framework, тому я перейменував його на FrameworkSDK_Light.framework, і це вирішило мою проблему.


0

Я отримав повідомлення про помилку `` AdBrixRM framework not found ''. Я перевірив AdBrixRM.framework. Я помітив, що файл виконання "AdBrixRM" відсутній. Я скопіював цей файл у папку фреймворку, і проблема зникла.


0

Раніше я стикався з цією ж точною проблемою в минулому з Google Admob SDK. Зовсім недавно це сталося при спробі додати бібліотеки Validic. Я спробував той самий старий добрий трюк і цього разу, і це спрацювало одразу.

1) Видаліть фреймворки , якщо вони вже додані.

2) Знайдіть фреймворк у Finder і перетягніть їх безпосередньо на панель Навігатора проектів під вашим деревом проекту.

3) Створіть проект і Whooo!

Не знаю, що робить різницю, але додавання фреймворків офіційним шляхом, перейшовши до розділу "Пов’язані фреймворки та бібліотеки" на сторінці налаштувань проекту (TARGET), і посилання звідти не працює для мене. Сподіваюся, це допомагає.


0

Я виявив, що file.framework посилається на файл поза моїм проектом. Тому я перетягнув файл у свою папку фреймворків під своїм проектом, а потім позбувся попереднього файлу file.framework, і він працював.


0

Якщо ви використовуєте CocoaPods. Подібне сталося і зі мною. Хоча це питання давнє, хтось, як я, все ще може боротися. Отже, щоб допомогти: після pod installпопередження про файли проекту. Дотепер я не помічав. він говорить:

[!] Будь ласка, закрийте будь-які поточні сеанси Xcode і використовуйте ProjectFile.xcworkspaceдля цього проекту відтепер.

Отже, в основному, не продовжуйте працювати над .xcodeproj після встановлення Pods. Якщо ви зробите компоновщик, файли не знайдеться.


-1

Будь ласка, після додавання обох фреймворків також відкрийте кожен фреймворк Bolts and Parse та додайте Parse and Bolts до проекту, тоді проблема буде вирішена


Будь ласка, перегляньте, як правильно написати відповідь . Будь ласка, додайте кілька посилань та розширте пояснення.
Квінтін Бальсдон,

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.