macos xcode - OS X Framework Library не загружена:«Изображение не найдено»




unknown reason (15)

Я пытаюсь создать базовую ОС X Framework, прямо сейчас у меня есть только созданная тестовая среда: TestMacFramework.framework и я пытаюсь импортировать ее в новый проект приложения OS X.

Я создал файл .framework и импортировал его в новый проект. Структура, по-видимому, поддерживает связь, и я могу ссылаться на публичный файл заголовка, добавленный в фазу сборки фреймов.

Однако, когда я пытаюсь запустить приложение-контейнер, я получаю следующую ошибку:

dyld: Library not loaded: /Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework
  Referenced from: /Users/samharman/Library/Developer/Xcode/DerivedData/TestMacContainer-dzabuelobzfknafuhmgooqhqrgzl/Build/Products/Debug/TestMacContainer.app/Contents/MacOS/TestMacContainer
  Reason: image not found

После небольшого поиска в Google я понял, что мне нужно добавить раздел « Copy Files » в фаз сборки контейнера, поэтому я сделал это и настроил его так ...

Тем не менее, я все еще получаю ошибку времени выполнения. Я, очевидно, делаю что-то неправильно здесь, но ресурс библиотеки разработчиков Apple для этого ссылается на Xcode 2, так что это не очень полезно!

Что я пропустил?

ОБНОВИТЬ:

Я могу видеть в журнале сборки, что моя TestMacFramework.framework копируется в каталог .app contents / frameworks, но она не устанавливается в каталог Library / Frameworks на HD

ОБНОВЛЕНИЕ 2:

TestMacFramework.framework правильно связывается, если я вручную TestMacFramework.framework в TestMacFramework.framework Library/Frameworks


Answers

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

Ошибка в исходном сообщении:

dyld: Library not loaded: /Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework
  Referenced from: /Users/samharman/Library/Developer/Xcode/DerivedData/TestMacContainer-dzabuelobzfknafuhmgooqhqrgzl/Build/Products/Debug/TestMacContainer.app/Contents/MacOS/TestMacContainer
  Reason: image not found

Обратите внимание на первый путь после загрузки библиотеки . Структура загружается с абсолютного пути. Этот путь исходит из имени установки рамки (иногда называемого rpath), которое можно проверить, используя:

otool -D MyFramework.framework/MyFramework

Когда среда встроена в приложение, этот путь должен быть относительным и этой формы: @ rpath / MyFramework.framework / MyFramework . Если ваше установочное имя вашей инфраструктуры является абсолютным путем, оно не может быть загружено во время выполнения, и будет произведена ошибка, аналогичная приведенной выше.

Решение заключается в изменении имени установки:

install_name_tool -id "@rpath/MyFramework.framework/MyFramework" MyFramework.framework/MyFramework 

С этим изменением я больше не получаю ошибку


У меня была такая же проблема по другой причине. Я создал новую конфигурацию для Debug и Release (в разделе PROJECT -> Info -> Конфигурация). И мне пришлось изменить сценарий оболочки оболочки pod (Pods- «appName» -frameworks.sh в разделе «Файлы поддержки целей»), чтобы заставить его работать.

[Xcode 9]


[из Xcode 6 -> 7.3]

(Да, все еще работаю над Xcode 10, iOS и macOS)

Единственное, что нужно сделать, это добавить фреймворк в раздел « Embedded binaries » на вкладке « General » вашего целевого приложения.


Я обнаружил, что эта проблема связана только с подписями кода и сертификатами, а не с самим кодом. Чтобы убедиться в этом, создайте основное приложение с одним представлением и попробуйте запустить его без каких-либо изменений на вашем устройстве. Если вы видите тот же тип ошибки, это показывает, что ваш код в порядке. Как и вы, вы обнаружите, что ваши сертификаты недействительны. Скачайте все снова и исправьте все истекшие. Затем, когда вы получите базовое приложение, чтобы не сообщать об ошибке, попробуйте приложение снова после выхода из Xcode и, возможно, перезапустите свой Mac для хорошей оценки. Это, наконец, положило конец этому кошмару. Скорее всего, это не имеет никакого отношения к вашему коду, особенно если вы получаете сообщение «Создать успешное» при попытке запустить его. FYI


Для меня это было решением, после многих часов поиска!

По какой-то причине, в разработке пользовательской платформы Swift 2.3, Xcode 8 удалил параметр DYLIB_INSTALL_NAME_BASE из файла project.pbxproj . Немного перейдите в Build Settings / Dynamic Library Install Name Base чтобы вернуться к @rpath .

(от https://forums.developer.apple.com/thread/4687 )


Это было довольно просто для меня, я просто добавил рамки для своих встроенных двоичных файлов в соответствии с целевыми приложениями


Возникла проблема при попытке Xcode 9 beta и возвращении к Xcode 8. Простой Clean на целевом компьютере решил проблему.


Для Xcode 8 некоторые устаревшие продукты будут удалены из папок с производными данными, относящихся к этому решению .

Apple: В macOS 10.12 и более поздних версиях Xcode очищает устаревшие данные, предварительно скомпилированные заголовки и кеширование модулей. (23282174)

Система сборки Xcode поддерживает устаревшее удаление файлов некоторых типов артефактов сборки, которые были созданы в предыдущей сборке, но с тех пор были удалены из проекта.

Основываясь на мысли автора, я нашел этот журнал построения из своего дела.

Remove stale build products

/bin/rm -rf /Users/usename/Library/Developer/Xcode/DerivedData/myapp-esvvhwwwwngijeemhatmklwzoxnb/Build/Products/Debug-iphonesimulator/myapp.app/Frameworks/AliyunVodPlayerSDK.framework
/bin/rmdir /Users/usename/Library/Developer/Xcode/DerivedData/myapp-esvvhwwwwngijeemhatmklwzoxnb/Build/Products/Debug-iphonesimulator/myapp.app/Frameworks

После создания новой фазы файла копии и копирования целевого устаревшего фреймворка в место назначения Frameworks , вышеупомянутый журнал удаления исчезает после восстановления.

Просто уточните мою ситуацию и причину, надеюсь, что это поможет кому-то.


В «Сценарии сборки» должен быть «Сценарий запуска» с этим: '/ usr / local / bin / carthage copy-frameworks'

В «Input Files» этого «Run Script» вы должны добавить путь к своим библиотекам. Как это:


Поэтому мне удалось заставить его работать, это довольно просто, когда у вас есть правильные инструкции. То, что я искал, было «частной» структурой, которая живет в комплекте приложений, а не записывается в папку системной библиотеки.

Создание структуры

  1. Добавить цель создания Cocoa Framework
  2. В пределах этих настроек «Настройки сборки» настройте «Каталог установки» на «@executable_path /../ Frameworks»
  3. Создайте библиотеку и получите доступ к .framework из каталога архива или продуктов

Включая Рамочную

  1. Перетащите созданный файл .framework в проект Xcode, обязательно отметьте «Скопировать файлы в каталог»,
  2. В целевой задаче для приложений добавьте новую «Фазу сборки файла копирования»,
  3. Установите 'Destination' в 'Frameworks'
  4. Перетащить созданный .framework

Варианты выше, где я не могу включить. Я решил это, указав путь поиска Runpath

Это находится на вкладке « Настройки сборки ». В разделе « Связывание ». Измените « Пути поиска пути » на $(inherited) @executable_path/Frameworks


Ни одна из этих проблем не решила это для меня. Проблема в конце концов была довольно легкой. Похоже, что это довольно крупная ошибка Xcode, в которой я зарегистрировал проблему и исправил ошибку Apple: 29820370. Если вы боретесь (как кажется несколько проблем с подобными проблемами), было бы здорово, если бы вы могли поднимите ошибку на репортере ошибок: https://bugreport.apple.com/ и укажите ошибку, которую я поднял, чтобы получить видимость. Я хочу вернуть Xcode в удовольствие, которое было раньше - и я уверен, что Xcode должен был зафиксировать себя.

Вот исправление: 1. Откройте Keychain - перейдите в Apple Worldwide Developer Cert. 2. Дважды щелкните по нему. 3. Измените уровень разрешений на «всегда доверять», чтобы использовать системные значения по умолчанию. 4. Сохраните и закройте его. 5. Перезапустите Xcode, очистите и создайте свой проект, и он должен исчезнуть.

Снимок экрана ниже: Надеюсь это поможет!


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

Edit: Моя цель тестирования пользовательского интерфейса тоже не работала, и решение, которое я нашел, это удалить его и сгенерировать его снова.


Единственное, что сработало для меня:

Целевая задача> Сформировать фазы> [CP] Вставить модули Pods Снимите флажок «Показывать переменные среды в журнале сборки» и «Запустить скрипт только при установке»


С точки зрения веб-разработчиков:

  1. Библиотека может быть легко заменена другой библиотекой. Но рамки не могут.

    Если вам не нравится библиотека выбора даты jQuery, вы можете заменить ее другим выбором даты, например, выбрать дату или дату.

    Если вам не нравится AngularJS, на котором вы создали свой продукт, вы не можете просто заменить его другими каркасами. Вы должны переписать всю свою базу кода.

  2. В основном библиотека занимает гораздо меньше кривой обучения по сравнению с Framework. Например: underscore.js является библиотекой, Ember.js является основой.





macos frameworks xcode5