Фреймворк не знайдено GoogleToolboxForMac


82

Після того, як я оновив свій Firebase за допомогою "оновлення стручка", я отримав таку помилку:

ld: warning: directory not found for option '-F/Users/bennysantoso/Library/Developer/Xcode/DerivedData/FCM-atfcxuircoryufazlomgwfgmvaqm/Build/Products/Debug-iphonesimulator/GoogleToolboxForMac'
ld: framework not found GoogleToolboxForMac
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Ось мій підфайл:

# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
pod 'Firebase/Core'
pod 'Firebase/Messaging'

target 'BB' do
  # Comment this line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for BB

  target 'BBTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'BBUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

Хтось знає про цю помилку?

Я шукаю стосунки GoogleToolboxForMac і Firebase, але я просто отримую трохи інформації.

FYI, я використовую Swift 2.3 і Firebase 3.8.0.

Буду вдячний за будь-яку допомогу, яку ви можете надати. Дякую!


2
Те саме для мене .. хтось може допомогти? Я весь день працював над цим: / Я помічаю, що використання старих версій однієї бібліотеки не використовує GoogleToolboxForMac і працює ідеально :(
Санті Іглесіас,

З інших відповідей stackoverflow я спробував додати все наступне до мого файлу pod, але все ще не працює: pod 'Google / Analytics' pod 'Firebase / Core' pod 'Firebase / AdMob' # Спроба виправити GoogleToolboxForMac, що відсутня помилка pod 'Firebase / Messaging 'pod' GoogleToolboxForMac / Logger 'pod' GoogleToolboxForMac ',' ~> 2.1 '
Чарлі Селігман,

Перш за все, формат вашого підфайлу старий (Q4 / 2016). Видаліть його та створіть новий за допомогою 'pod init'. Використовуйте робочу область, а не xcodeproj, як запропоновано нижче.
igraczech

Відповіді:


168

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

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

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

Відкривши цей проект, ви помітите, що у вас є два підпроекти. Один буде вашим проектом, а інший - проектом Pods.


40

Фреймворк не знайдено

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

Цьому є дві основні причини

  1. Коли ми відкриваємо файл .xcodeproj замість .xcworkspace, як згадував izaaz-yunus у цій відповіді

  2. Якщо для параметра Побудова активної архітектури встановлено значення Так у налаштуваннях збірки

    Це стосується цілі проектів, а також усіх цілей у проекті стручка

Знімок основного проекту Встановіть Build Active Architecture Only на No

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

  1. Виберіть Параметри побудови (основного проекту, обох проектів під)
  2. Виберіть кожну ціль по одній
  3. Встановіть для Активних архітектур значення Ні для кожної цілі

Нарешті очистіть і відновіть свій проект.


чи є помилка, на # 2 ви говорите "так", але на зображенні видно "ні", дякую @Vinay Kumar
greenridinghood

No2 розповідає, що спричиняє проблему, а зображення - як повинні виглядати налаштування для вирішення проблеми
Vinay Kumar

Всі інші рішення для мене не працюють, крім: встановіть Build Active Architecture Only на NO для всіх бібліотек
стручків

18

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

Нарешті, спробуйте виконати крок нижче

Projetc-> Керування схемами -> Установіть прапорець "Pods-MyProjectName"

І отримати успіх.


Я отримав цю помилку під час роботи в тренажері, але не отримав її на реальному пристрої.
mpwhitt

Це спрацювало для мене, але мені також довелося явно будувати проект pods перед тим, як спробувати створити свій проект. Не знаю, чому.
pieSquared

1
Я зробив це, але не можу запустити програму на симуляторі?
Дрейлан Джон Жахливий

2
Після побудови "Pods-ProjectName" я зміг запустити реальний проект на своєму пристрої ..
Тім Баас,

14

GoogleToolboxForMac - це залежність Firebase / Messaging. Деталі в підспеці . Виконуючи «оновлення стручків», Cocoapods повинні налаштувати робочу область для створення та зв’язування GoogleToolboxForMac.

Схоже, щось у вашому робочому просторі перебуває у поганому стані. Чи допомагає Продукт -> Чисте? А як щодо видалення похідних даних та ModuleCache (Xcode -> Налаштування -> Місцеположення -> Похідні дані)?

Це не повинно бути необхідним, але ви також можете спробувати явно додати pod 'GoogleToolboxForMac / Logger' до свого підфайлу.


Ні, це не спрацювало для мене ... відкриття проекту з робочої області спрацювало!
Jayprakash Dubey

2
@JayprakashDubey Ця відповідь передбачає, що ви починаєте з робочої області. Див. Перший абзац. Відповідь вирішує інший сценарій, який призводить до того самого симптому.
Paul Beusterien

1
@PaulBeusterien Я спробував усе, що ви сказали тут, але все ж я не можу побудувати.
Дрейлан Джон Жахливий

6
його роботи
1. виберіть свій проект в каталогах
2. виберіть Загальне
3. Додайте "GoogleToolboxForMac.framework" до пов'язаних "фреймворків та бібліотек"

Пов’язання бібліотеки явно вирішило це для мене. Спасибі!
Ліквінат

5

Це було виправлено шляхом додавання $ (успадковано) у Налаштування збірки -> Пошук LIBRARY_SEARCH_PATHS.

Це зрозуміло, оскільки під час оновлення файлу pod для найновіших версій бібліотек, від яких залежить ваш проект, висновок налагодження повідомляє, куди потрібно додати всі прапори $ (успадковані): LIBRARY_SEARCH_PATHS OTHER_LD_FLAGS GCC_PREPROCESSOR_DEFINITIONS


куди покласти $ (успадкований), чи слід натиснути +, а потім набрати $ (успадкований)?
Дрейлан Джон Жахливий

Так, ви можете натиснути + та ввести $ (успадковано) або просто двічі клацнути на поле, яке можна редагувати, а потім ви можете ввести $ (успадковане)
TomV

Це вирішило мою проблему! Дякую @TomV
Spettacolo83

2

Перейдіть до: target -> Build Settings -> Other Linker Flags -> remove framework "GoogleToolboxforMAC"і побудуйте проект.


1

У мене була та сама проблема, коли я намагався запустити її на своєму пристрої. На тренажері він працював нормально. Я спробував щось із наведеного, але мені це не вдалося. Я перевірив, що працюю .xcworkspaceзамість .xcodeprojфайлу, тому спробував цей. Виконайте такі дії, щоб:

  1. Відкрийте проект Xcode (проект cocoapods) за допомогою файлу .xc ...
  2. Виберіть проект Pods в навігаторі проектів (синій значок зліва).
  3. У розділі Цілі переконайтеся, що вибрано Pods-ProjectName (синій значок).
  4. Перейдіть до Параметри побудови та встановіть ціль розгортання iOS, на якій версії iOS ви збираєтеся запускати проект.

Примітка: Це те саме, що ви встановили Project->Targets->Deployment info->Deployment Target.

Можливо, хтось отримає від цього користь.


1

Якщо ви зіткнулися з тією ж помилкою, у своєму XCode перейдіть до:

Ваш проект > ваша ціль > Прокрутіть униз до Linked Framework і Libraries і перевірте, чи запис Бібліотеки не затемнений:

Знімок екрана XCode Linked Framework і Libraries

Якщо так, видаліть і додайте знову. У моєму випадку у мене були дубльовані записи, і один із них був затемнений (коли XCode не може знайти їх на диску).


0

Закрив проект, який я намагався побудувати після того, як я встановив pod, потім відкрив .workspace, і тоді все будується ідеально.


0

Відкрийте ваш-project.xcworkspace у місці призначення вашого проекту.

1) Відкрити термінал -> 2) $ cd / project_destination -> 3) $ відкрити your-project.xcworkspace

або просто відкрийте файл у пошуку


0

Переконайтеся, що ваші "Створення активних налаштувань архітектури" як для цілі проекту, так і для модуля однакові. Встановлення NO в обох випадках вирішило мою проблему.


0

Моя проблема полягала в тому, що у мене був скрипт / bin / sh, який копіював конкретні підсистеми, яких не існувало. Це був один із них. Видалення сценарію вирішило проблему збірки.


0

-Я шукаю на жорсткому диску файли GoogleToolboxForMac, знайдені в: / Users / Marco / Documents / iosapps / BomRetiro / Bom Retiro / Pods / Target Support Files

  • А потім я скопіював файли в цю папку: / Users / YourHomeFolder / Library / Developer / Xcode / DerivedData / Bom_Retiro-bsfjbazzzuwmuidqurdmjvdtnnsb / Build / Products

І тоді для мене вирішено відкрити файл usinf .xcworkspace.


0

Для тих, хто все ще має проблеми після всього цього. Я працюю над проектом Cordova, і проблема несподівано з’явилася після оновлення до XCode 11.5.

Нарешті я зміг це вирішити, відкривши файл pods.json у корені проекту та видаливши запис у "бібліотеках", який належить до "FirebaseMessaging". Ми цим не користувались, і я не знаю, як воно туди потрапило. Крім того, я скрізь змінив "Налаштування побудови" -> "Створювати лише активну архітектуру" на "Ні".

Потім я знову відкрив файл .xcworkspace, і збірка закінчилася.


-1

Свіфт 5 проста відповідь

Shift+Alt+Cmd+K  //Clean the project and Run again! 
//if not work restart Xcode and again clean it 
//Its will work happy coding

-6
    Friends, you must be confused with the exact result, as i was. So, i feel to share the 
screenshot that might be helpful. We all had to be careful that we need to change the flag for property **"Build Active architecture Only"** for **pod target** to **NO** And build, it would not show the linking error.

    See the attached screenshot.
    Screen Shot 1, Screen Shot 2, Screen Shot 3
    [Select Pods][1]
    [Select Targets in the pod][2]
    [Change flag to No][3]


  [1]: https://i.stack.imgur.com/E7mjX.png
  [2]: https://i.stack.imgur.com/wCwET.png
  [3]: https://i.stack.imgur.com/KVGKM.png

Не публікуйте цілі скріншоти, будь ласка, надайте лише викладену частину, друже.
igraczech

Це спрацювало, хоча було б краще пояснити рішення, а не публікувати знімки екрана. Рішення полягає в тому, щоб змінити значення Valid Arch Only на "No" у цілях проекту та Pods.
Ігнасіо Барреа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.