ld: фреймворк не знайдено


234

Я намагаюся додати рамку до свого проекту IOS, але коли я будую, мені завжди було те саме повідомлення:

ld: фреймворк не знайдено

clang: error: команда linker не вдалася з кодом виходу 1 (використання -v для перегляду виклику)

Я спробував видалити свою Podsпапку, а потім запустити, pod install я відкриваю так, .xcworkspaceяк це написано в журналах встановлення pod, я очищаю проект на xcode, а потім намагаюся створити, але він не працює.

Мій підфіл виглядає так:

xcodeproj '/Users/guillaume/project/Mobile/iOS/FoodPin/FoodPin.xcodeproj'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'SwiftHTTP', '~> 0.9.2'

Моя версія xcode є 6.3.1

Дякую,


1
Ви перевірили, що libpods.aзнаходиться у ваших "Пов'язаних рамах та бібліотеках" вашої цілі? І у ваших фазах збірки теж?
КипінняВина

Вам вдалося це вирішити? У мене така ж помилка
Крістофер Франциско

@ChristopherFrancisco Я вирішив це, перевір мою відповідь.
Арбітур

1
Це як відповісти [1] вирішило мою проблему! Сподіваюся, що це допомагає [1]: stackoverflow.com/a/31161871/1557663
Маріо Карвальо,

@ MárioCarvalho Thats - просто довша та більш зручна для початківців версія моєї відповіді x)
Арбітур

Відповіді:


524

У Project Navigatorпапці Podsя мав Pods.frameworkтам, який був червоним. Він також був присутній у Росії Linked Frameworks and Libraries. Я видалив обидві посилання, і помилка зникла.

TL; DR

Видалити Pods.frameworkв:

  • Папка названа Pods
  • Linked Frameworks and Libraries

5
Я думаю, що я вирішив цю проблему після додавання use_frameworks! до мого Podfile і згодом коментуючи це. Видалення посилання на Pods.framework виправило проблему.
StephenT

2
@StephenT Так, я вважаю, що те, що я теж робив, спочатку використовую, use_frameworks!а потім без і, можливо, Pods.frameworkне було видалено належним чином протягом pod install. Може бути помилкою в какаоподах.
Арбітур

Це гарна відповідь, не впливає на прикладний додаток, він все ще працює добре
Габріель Гонкалвес

3
Якщо це не працює, спробуйте використовувати какао-дезінтеграцію. Це просто вирішило цю проблему для мене.
nickdnk

2
Після запуску установки встановлення я якось опинився в моїй папці Pods з файлом фреймворку "Pods_ <Назва проекту>". Видалення цього файлу, очищення та відновлення відновили цю помилку.
Калеб Фарукі

209

Зазвичай це викликано тим, що файл .xcodeproj відкритий замість .xcworkspace.

Якщо ви вперше запустите "pod install", він створить файл .xcworkspace, який включає ваш оригінальний .xcodeproj та проект Pods. Вам потрібно буде закрити .xcodeproj та відкрити .xcworkspace.

Це поширена проблема під час створення проекту за допомогою нового майстра проектів Xcode - я часто забуваю, що я не в робочій області, яка потрібна для того, щоб Cocoapods правильно зв’язався.


Дякую ! Вперше це бентежить мене
Фі Нгуен

6
Ваше пояснення набагато краще, ніж я бачив деінде. Я не розумів, що відбувається. Дякую!
Майкл Яворський

Якщо це зроблено в поєднанні з відповіддю Арбітура, це вирішує питання. Дякую!
користувач1577390

Це було саме моє питання. Дякую!
Антоніо Папалілло

у моєму проекті немає файлу .xcworkspace. що робити
Kartiikeya

126

Xcode 9, 10, 11, 11.5

встановіть https://github.com/CocoaPods/cocoapods-deintegrate

pod deintegrate

тоді

pod install

1
Працював як шарм! Дякую. Це позбулося старої посилання на перейменовану ціль, яка спричиняла цю помилку.
Алекс Обенауер

1
Ви - мій герой! ;)
Swissdude

1
Нічого, ти врятував мені день! застряг з вчорашнього дня і нарешті вирішив з Xcode 10. Дякую!
Purushottam Padhya

1
Це має бути правильна відповідь, це найбезпечніший підхід. Не робіть вручну кроків при використанні автоматизованих речей, таких як CocoaPods, якщо тільки це відомий помилка, яку неможливо виправити інакше.
Гобє

1
цей мені допоможи, чудовий чувак!
Sruit A.Suk

51

Я усунув цю помилку, видаливши червоні .frameworkфайли, які знаходились у папці Frameworksв project navigator. Я думаю, що це також автоматично видалило відповідні червоні записи в Linked Frameworks and Librariesрозділі Generalналаштувань.

Я прибирав / перевстановлював стручки, щоб виправити ще одну проблему. Можливо, ці червоні рамкові файли та записи були просто залишеними від попереднього встановлення стручка?


Так! Моя проблема була в "Пов'язаних рамах" та "Бібліотеках загальних налаштувань", і її було важко знайти, оскільки вона не з'являється під час пошуку тексту!
Алістер Купер

У моєму випадку рамкові файли не були навіть червоними, а просто сірими. Але видалення їх, здається, вирішило проблему!
Шахрай

29

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

Це трапляється, тому що я відкрив файл .xcodeproj, але ми мусимо відкрити проект файлом .xcworkspace.


27

Це сталося зі мною після оновлення мого Podfile та оновлення pod.

З якоїсь причини у мене в рамках проекту в рамках "Цілі"> Загальне> "Зв'язані рамки та бібліотеки" з'явився рамковий файл "Pods_ [ProjectName]".

Видалення цього, а потім очищення / відновлення виправили проблему.


2
Це відбувається, коли ви перемикаєте назви проектів і потрібно очистити старі. +1
Babbz77

Це працювало для мене. Я не змінював назв проектів, але додав Swift до тривалого проекту Objective-C.
Луффі

24

У мене було подібне питання як

framework not found Pods_OneSignalNotificationServiceExtension

Це було вирішено шляхом видалення наступного. Перейдіть до націленої OneSignalNotificationServiceExtension> Фази збірки> Посилання бінарного з бібліотеками та видалення Pods_OneSignalNotificationServiceExtension.framework Тут має бути порожньо. Сподіваюся, що це допоможе. Ура.


Це вирішило для мене проблему. Моя особлива ситуація полягає в тому, що я мав на меті iOS MyApp. Тоді мені потрібно було створити другу ціль, і були цілі MyAppFirst, MyAppSecond. Cocoapods змогла створити все, що було потрібно (Pods_MyAppFirst, Pods_MyAppSecond), але також намагалася зв’язатися з Pods_MyApp, якого більше не існувало. Я хочу зазначити, що під час спроби виправити я викинув файл робочої області та папку Pods, щоб їх відтворили з нуля, коли я виконував "pod -install", але це не допомогло.
xdeleon

@Sharukh Mastan Чи маєте ви уявлення, як це зробити після встановлення стручка? Кожен раз, коли я встановлюю модуль, Pods_OneSignalNotificationServiceExtension.framework повертається, щоб переслідувати мене у пов'язаних рамках та бібліотеках OneSignalNotificationServiceExtensionцілі.
Сетмр

@Sethmr Сумно, ні. У моєму випадку, однак, це не завжди відбувається після pod install, це випадково.
Шарух Мастан

@SharukhMastan Моя проблема була відкриття *.xcodeproj/*.xcworkspaceбільш ніж *.xcworkspaceз моїм сценарієм автоматизації vsts .yml. Я знаю краще з гуї, але все-таки звикаю до вимог до сценаріїв землі.
Сетмр

15

Я отримував цю помилку, тому що я перейменував свій проект і змінив назву проекту у файлі pod, але мій проект посилався на старе ім'я, якого там не було, і спричинив цю помилку. Я позбувся цього

pod deintegrate

слідом за ним

pod install

Так! У мене була така ж проблема при пониженні версії з 12.0 до 9.0. Наведене працювало після того, як я змінив цільову версію в своєму Podfile, щоб відповідати тому, що було в проекті.
Річард Боун

Хороша відповідь. Дякую.
whdals0

14

ви повинні видалити з проекту якийсь файл у вигляді цього зображення.

слід видалити файли pods.framework, а стручки позначити червоними файлами


10

Просто видаліть .framework зі списку "Ваш проект-> Загальні-> Пов'язані рамки та бібліотеки".


Це було все, у мене було два після того, як я перейменував проект. Дякую!
Джиммі

10

Це трапилося зі мною , тому що я змінив Deployment Targetу Generalале забув змінити Deployment Targetін Pods > General. Змініть ціль розгортання


Виправлено це також для мене, Xcode 11.2 / Cocoapods 1.8.4. Дратує, що повідомлення про помилку не схоже на першопричину ...
Джонатан Елліс

1
Виправлено це для мене - не мав уявлення, що мені потрібно змінити це в обох місцях. Дякую тонну!
hakazvaka

6

У моєму випадку я можу побудувати його на пристроях та симуляторі, але має ті ж помилки при архівуванні. Щоб вирішити це, я повинен

  • видалити Pods.framework
  • переконайтеся, що Pods-<project-name>.frameworkвона вбудована

Ви знайдете налаштування в TARGETS -> Linked Frameworks and Libraries.


Ви можете перевірити це: github.com/CocoaPods/CocoaPods/isissue/…
Esqarrouth

4

Крок 1

Перше, що вам потрібно буде зробити - це видалити Podfile, Podfile.lock, папку Pods та створене робоче поле.

Крок 2

Далі, в .xcodeproj, видаліть посилання на файли Pods.xcconfig та файл libPods.a.

Крок 3

На вкладці проекту "Фази збирання" видаліть розділ "Перевірити підрозділи" блоку (відкрити), розділ "Копіювати джерела поділів" (знизу) та "Вставити ресурси ресурсу" ("знизу")

Крок4

Видаліть Pods.framework.

Єдине, що ви можете зробити, це включити деякі бібліотеки, якими ви користувалися раніше. Це можна зробити, просто перетягнувши папки, які знаходяться у папках стручків у вашому проекті (я вважаю за краще помістити їх у папку "Підтримуючі файли").

Це працювало для мене.


Крок 3 працював у моєму випадку, крок 3 -> cmd + alt + shift + k.
ViruMax

4

Ви більш ніж ймовірно намагаєтеся змусити стручки працювати над вашим проектом? Єдиний спосіб зробити це - створити окремий проект, який використовує CocoaPods.

Закрийте всі робочі простори, які ви використовуєте.

Далі переконайтеся, що ваш Podfile повністю готовий до роботи.

У командному рядку, де б не був ваш файл, введіть команду:

pod deintegrate

Потім встановіть свій стручок по-агійськи.

pod install or pod update

Тепер ви можете використовувати нову робочу область вашого проекту, щоб розвиватися з. Знайдіть файл під назвою .workspace. Використовуйте цей файл!

Ось посібник із використання CocoaPods


Тільки цей працював на мене після боротьби 2 дні з помилкою.
Мітеш Добареєя,

3

Використовуючи Xcode 8.3, прийнята відповідь не працювала для мене. Я спробував багато інших рішень, але відповідь @Elliott Davies - це те, що вирішило для мене. Я додаю скріншот для наочності. Чомусь Xcode намагався зв’язати попередні установки підфілів, яких більше не було. Все, що я мав зробити, - це видалити зайві посилання і все працювало.Скріншот кадрів і бібліотек, пов'язаних з кодом


3

Це питання зводило мене з розуму, як це раптом сталося, не вносячи жодних змін у проект. Я спробував усі запропоновані рішення в цій темі (та інші пов'язані з цим), і жодне з них не вирішило проблему.

Єдине, що відрізнялося від моїх інших проектів (які склали чудово), полягало в тому, що назва цього проекту містила наголос (французький наголос, "é"). Я перейменував проект і всі пов'язані файли, і він, нарешті, спрацював!

Можливо, це пов’язано з оновленням до Xcode 10, тому що цей проект працював добре раніше ...

EDIT: також, здається, не вдалося використати проект із -назвою проекту…


1
Ти врятував мені життя
Флоріан Мак-Ланглейд

1
Врятувало і моє життя!
Ден

Будь-яке рішення, крім перейменування проекту?
наркоз

@anestis Я так не думаю. Щоб швидко перейменувати проект, я пропоную команди з цієї відповіді stackoverflow.com/a/48004237/4894980, які роблять дуже велику роботу!
AnthoPak

3

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

platform :ios, '11.0'

Я ненавмисно збільшив цільову версію з 10 на 11, в той час як мої цілі в Xcode залишилися встановленими на 10. Повернення до 10 вирішило для мене проблему.

Переконайтесь, що цільові версії iOS правильно встановлені.


Ти врятував мій день !! Дякую
Mayank Patel

3

Це те, як я вирішую свою проблему. і зараз це працює, коли я пишу цю відповідь:

По-перше, я спробую все найбільш виправити вище,

видаліть Pods_xxx.framework з бібліотек посилань та фреймворку на етапах збирання цілі корисно, і проблема зникне, але майбутня проблема - я більше не можу імпортувати Pods.framework.

А потім я намагаюся знову встановити конфігурацію простору xcworkspace, щоб я міг з'ясувати реальну проблему. тому я біжу

pod deintergate

а потім знову встановити мій стручок:

pod install

ця робота краще, але проблема все ще існує, але я з'ясував, що справжня проблема полягає в тому, що Pods_xxx.framworks не буде складено успішно сценарієм збірки cocoapods. Я думаю, що це справжній спосіб виправити проблему.

Нарешті, я намагаюся редагувати схему свого проекту:

Схема Pods не редагується

і я додаю схему Pods в управління:

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

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

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

і я думаю, тепер у вас виправлена ​​проблема "не знайдено Pods_xxxx.framework", але насправді у мене є ще одна проблема:

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

тож я переходжу до налаштування збірки та редагую "Framework Search Path"с "${inherited}", і тепер усі проблеми виходять, вітайте !!!! :)

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


Додавання цілі Pod та побудова цього фактично показали, що було не так зі збіркою стручка. У нашому випадку це був конфлікт швидкої версії. Дякую!
green0range

Я не дотримувався всіх кроків. Я просто додав цей ${inherited}шлях, потім зробив Product->Clean Build Folder, і це все, тепер він будується без сучка.
Starwave

2

Після видалення та оновлення стручка у мене все-таки виникла проблема.

Я виявив, що попередній розробник поставив прапор у " Налаштування збірки -> Інші прапорці Linker " з назвою Framework (в моєму випадку - кадр "OGVKit"), який створив проблему.

Після видалення цього прапора проект будується належним чином.


Дуже дякую! Ви завжди повинні стежити за речами, які є жирними в Налаштуваннях збірки!
Marcio Granzotto

2

Я відчув цю проблему, тому що я поставив не platformправильно.

Тож у моєму додатку macOS була встановлена ​​платформа:

platform :ios

замість

platform :osx

1

Я вирішив цю проблему, вибравши проект, який завантажили з нього CocoaPodsі створили його, ви можете натиснути Керувати схемами, щоб його можна було з’явити на панелі запуску. Тоді ви можете відновити свій проект. Сподіваюся, це допоможе.


1

У моєму випадку було посилання на бібліотеку, яку я видалив

Цілі> Налаштування збірки> Шляхи пошуку Runpath

Видалення бібліотеки з Podfile та оновлення її очевидно не видалило її, тому мені довелося це зробити вручну, і тепер все працює.


1

Жодна з попередніх відповідей не вказувала на корінну проблему в моїй ситуації. Тож сподіваюся, що це може бути корисним комусь іншому.

У моєму випадку мені в кінцевому підсумку довелося редагувати свій підфільм у корені мого проекту. Коли я вперше створив свій підфіл, швидкі статичні бібліотеки не підтримувалися. Тож я використовував use_frameworks!у своєму підфілі під кожною з цілей:

ПЕРЕД

...
target 'targetName' do
   use_frameworks!
   pod 'podName', '~> 0.2'
end

ПІСЛЯ

...
target 'targetName' do
   pod 'podName', '~> 0.2'
end

Я видалив use_frameworks!зі свого підфілю, який постійно встановлював рамки щоразу, коли я запускав встановити pod. Після видалення цього рядка переконайтеся, що запустіть pod installще раз, і видаліть будь-яку з червоних посилань .framework зі своєї папки Frameworks у Xcode. (Хоча моє виглядало інакше, як додано нижче.)

Зображення видалення файлів .framework, які більше не потрібні

Ви також можете прочитати більше use_framework! тут .


0

Якщо ви відкрили файл .xcworkspace і все ще отримали ту саму помилку:

delete all the contents of Pods directory and from command line write "pod install" to resolve the issue.

0

Видаліть папку фреймворків, створену після встановлення або оновлення pod


0

Інша річ, яка вирішила мою проблему, - це перейти під ціль -> Налаштування збірки -> Інші прапорці посилання та видалити "-фрейм" та рамкове "ім'я".

Це сталося, коли я намагався зняти стручок.


0

Я вирішив це, перетягнувши .frameworkфайл у пов'язані рамки та бібліотеки

Скажімо, у мене виникла ця проблема через помилку, FIRAnalyticsConnector not foundі я просто перетягнув FIRAnalyticsConnector.framworkфайл у Linked Framework і бібліотеки, і моя проблема була вирішена


0

Я намагався тут відповісти, і жодна з них не працювала. Я завершив роботу, збільшивши ціль розгортання з 10,0 до 11,0. Я поняття не маю, чому це виправлено, але я підозрюю, що це стосується оновлення до Xcode 10.2.1.


0

можливо, ви раптом відкриєте неправильний файл .xcodprj і вам слід відкрити .xcworkspace


Краще опублікувати таке, як коментар.
MR

0

Будь ласка, перевірте свій виконуваний файл введіть тут опис зображення

  1. Ім'я виконуваного файлу повинно виглядати так без будь-якого розширення.

  2. Деякі рамки, що показують подібне введіть тут опис зображення

  3. Використовуючи каталог терміналів goto .framework, використовуйте команду lipo -create FrameworkName-x86_64 FrameworkName-armv7 FrameworkName-armv7s FrameworkName-i386 FrameworkName-arm64 -output FrameworkName

після створення єдиного виконуваного файлу видаліть ці файли введіть тут опис зображення

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