Framework не найден GoogleToolboxForMac


82

После обновления Firebase с помощью "pod update" я получил такую ​​ошибку:

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, но я просто получаю немного информации.

К вашему сведению, я использую Swift 2.3 и Firebase 3.8.0.

Буду благодарен за любую помощь. Благодаря!


2
То же самое для меня .. кто-нибудь может помочь? Я весь день работал над этим: / Я заметил, что при использовании более старых версий той же библиотеки не используется GoogleToolboxForMac, и они отлично работают :(
Санти Иглесиас

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

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

Ответы:


168

У меня была такая же ошибка. После установки модулей вы увидите следующее сообщение.

[!] Пожалуйста, закройте все текущие сеансы Xcode и с этого момента используйте MyApp.xcworkspace для этого проекта.

Впервые я этого не заметил и пытался собрать проект с помощью обычного файла xcodeproj. Увидев это сообщение, я открыл нужный проект, и он работал нормально.

Как только вы откроете этот проект, вы заметите, что у вас есть два подпроекта. Один будет вашим проектом, а другой - проектом Pods.


40

Платформа не найдена

При использовании модулей мы обычно сталкиваемся с этой проблемой.

Для этого есть две основные причины

  1. Когда мы открываем файл .xcodeproj вместо .xcworkspace, как упомянул izaaz-yunus в этом ответе

  2. Когда для параметра Build Active Architecture Only установлено значение Да в настройках сборки

    Это относится к целевым проектам, а также ко всем целям в проекте модуля.

Скриншот основного проекта Установите для параметра Build Active Architecture Only значение No

Скриншот Pod Project введите описание изображения здесь

  1. Выберите настройки сборки (основного проекта, проекта модуля)
  2. Выберите каждую цель по очереди
  3. Установите для параметра Build Active Architectures значение No для каждой цели.

Наконец, очистите и перестройте свой проект.


есть ли опечатка, в №2 вы говорите «да», но на изображении показано «нет», спасибо @Vinay Kumar
greenridinghood

№2 сообщает, что вызывает проблему, а изображение показывает, как должны выглядеть настройки, чтобы проблема была решена
Винай Кумар,

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

18

В моем случае вся интеграция выполнена хорошо, и я много раз пытался удалить и переустановить модуль, но безуспешно.

Наконец, попробуйте выполнить шаг ниже

Projetc-> Управление схемами -> Установите флажок "Pods-MyProjectName"

И добиться успеха.


Я получил эту ошибку при запуске в симуляторе, но не получил ее на реальном устройстве.
mpwhitt

Это сработало для меня, но мне также пришлось явно создать проект модулей, прежде чем пытаться создать свой проект. Понятия не имею почему.
pieSquared

1
Я сделал это, но не могу запустить приложение на симуляторе?
Drailan John Terrible

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

14

GoogleToolboxForMac - это зависимость Firebase / Messaging. Подробности в подспек . При выполнении «обновления модуля» Cocoapods должен настроить ваше рабочее пространство для создания и связывания GoogleToolboxForMac.

Похоже, что-то на вашем рабочем месте в плохом состоянии. Помогает ли Product -> Clean? Как насчет удаления производных данных и ModuleCache (Xcode -> Настройки -> Местоположения -> Производные данные)?

В этом нет необходимости, но вы также можете попробовать явно добавить модуль GoogleToolboxForMac / Logger в свой Podfile.


Нет, это не сработало для меня ... открыв проект из рабочей области, работал!
Джайпракаш Дубей

2
@JayprakashDubey Этот ответ предполагает, что вы начинаете с рабочего пространства. См. Первый абзац. Ответ решает другой сценарий, который приводит к тому же симптому.
Paul

1
@PaulBeusterien Я перепробовал все, что вы здесь сказали, но все равно не могу построить.
Drailan John Terrible

6
это работает
1. выберите свой проект в каталогах
2. выберите Общие
3. Добавьте "GoogleToolboxForMac.framework" в связанные "структуры и библиотеки".

Связывание библиотеки явно решило эту проблему для меня. Спасибо!
Liquinaut

5

Это было исправлено добавлением $ (унаследовано) в Настройки сборки -> Поиск LIBRARY_SEARCH_PATHS.

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


куда поместить $ (унаследованный), я должен нажать +, а затем ввести $ (унаследованный)?
Drailan John Terrible

Да, вы можете нажать + и ввести $ (унаследовано) или просто дважды щелкнуть по редактируемому полю, а затем вы можете ввести $ (унаследовано)
TomV

Это устранило мою проблему! Спасибо @TomV
Spettacolo83


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

Если да, удалите и добавьте снова. В моем случае у меня были дублированные записи, и одна из них была затемнена (когда XCode не может найти их на диске).


0

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


0

Откройте your-project.xcworkspace в месте назначения вашего проекта.

1) Открыть терминал -> 2) $ cd / project_destination -> 3) $ открыть your-project.xcworkspace

или просто откройте файл в Finder


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

Swift 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 на «Нет» для целей проекта и Pods.
Игнасио Барреа
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.