Ответ 1
[Протестировано в iOS/macOS - Xcode 6 → 10.2.1]
Единственное, что нужно сделать, это добавить фреймворк в раздел " Embedded binaries
" на вкладке " General
" целевого приложения.
Я пытаюсь создать базовую ОС 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, так что это не очень полезно!
Что я пропустил?
UPDATE:
В журнале сборки я вижу, что мой TestMacFramework.framework
копируется в каталог .app contents/frameworks, но он не устанавливается в каталог Library/Frameworks на HD
ОБНОВЛЕНИЕ 2:
Правило сборки правильно, если я вручную скопирую TestMacFramework.framework
в каталог Library/Frameworks
[Протестировано в iOS/macOS - Xcode 6 → 10.2.1]
Единственное, что нужно сделать, это добавить фреймворк в раздел " Embedded binaries
" на вкладке " General
" целевого приложения.
Так что мне удалось заставить его работать, это довольно просто, когда у вас есть правильные инструкции. Я искал структуру 'private', которая живет в комплекте приложений, а не записывается в папку системной библиотеки.
Создание структуры
Включая 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, очистите и соберите свой проект, и он должен исчезнуть.
Снимок экрана ниже с правильными настройками: Надеюсь, это поможет!
Я столкнулся с тем же вопросом, но принятое решение не сработало для меня. Вместо этого решение должно было изменить имя установки рамки.
Ошибка в исходном сообщении:
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
С этим изменением я больше не получаю ошибку
В "Сборка фаз" должен быть "Запустить Script" с помощью этого: '/usr/local/bin/carthage copy-frameworks'
В "Input Files" этого "Run Script" вы должны добавить путь к своим библиотекам. Вот так:
Если вы случайно reset ваш брелок, это может произойти из-за отсутствия сертификатов Apple в цепочке ключей. Я выполнил этот, чтобы решить мою проблему.
У меня была такая же проблема, и я смог ее исправить, повторно загрузив WWDR (Apple Certification Authority). Загрузите здесь: http://developer.apple.com/certificationauthority/AppleWWDRCA.cer
Когда вы перетаскиваете пользовательский фреймворк в проект под Xcode 10.1, он предполагает, что фреймворк является системным фреймворком, и помещает фреймворк в раздел "Связать двоичные файлы с библиотеками" "Фазы сборки" под вашей целью.
Системные инфраструктуры уже находятся на устройстве, поэтому оно не копируется на устройство и, следовательно, не может выполняться во время выполнения, поэтому KABOOM (сбой в __abort_with_payload и ошибка дезинформирования: "Причина: образ не найден"). Это потому, что код фреймворка не копируется на устройство...
В действительности, чтобы Xcode связывал пользовательскую платформу и гарантировал, что она копируется вместе с вашим кодом на устройство iOS (реальное или симулятор), пользовательскую платформу необходимо переместить в "Копировать ресурсы комплекта". Это в конечном итоге упаковывает фреймворк вместе с исполняемым кодом, чтобы они были доступны на устройстве вместе.
Чтобы добавить пользовательский каркас в проект и избежать сбоев Apple:
Таким образом, пользовательская структура копируется вместе с вашим кодом на целевое устройство и становится доступной во время выполнения.
[от редакции: вы могли бы подумать, что Xcode будет достаточно умен, чтобы выяснить разницу между одной из его системных платформ, которые не нужно копировать на устройство, и пользовательской платформой, которая, о, я не знаю, в иерархии корневых каталогов проекта... 🙄]
Если вы используете Xcode 11, убедитесь, что у вас есть фреймворк, добавленный в Frameworks, Libraries и Embed Content в разделе Target settings - General. Изменить статус встраивания с - "Не встраивать" на "Встраивать & Подписать'
Для Xcode 8 некоторые устаревшие продукты будут удалены из папки данных с производными данными в этом решении.
Основа на мысли автора, я нашел этот журнал сборки из своего дела.
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, указанный выше журнал удаления исчезает после восстановления.
Просто уточните мою ситуацию и причину, надеюсь, что это будет полезно для кого-то.
Для меня это было решением после многих часов поиска!
По какой-то причине, в разработке пользовательской Framework Swift 2.3, Xcode 8 удалил параметр DYLIB_INSTALL_NAME_BASE
из файла project.pbxproj
. Немного перейдите в настройку Build Settings / Dynamic Library Install Name Base
, чтобы вернуться к @rpath
.
Я обнаружил, что эта проблема связана только с подписями кода и сертификатами, а не с самим кодом. Чтобы убедиться в этом, создайте основное приложение с одним представлением и попробуйте запустить его без каких-либо изменений на вашем устройстве. Если вы видите тот же тип ошибки, это показывает, что ваш код в порядке. Как и вы, вы обнаружите, что ваши сертификаты недействительны. Скачайте все снова и исправьте все истекшие. Затем, когда вы получите базовое приложение, чтобы не сообщать об ошибке, попробуйте приложение снова после выхода из Xcode и, возможно, перезапустите свой Mac для хорошей оценки. Это, наконец, положило конец этому кошмару. Скорее всего, это не имеет никакого отношения к вашему коду, особенно если вы получаете сообщение "Создать успешное" при попытке запустить его. FYI
Появилась проблема при запуске Xcode 9 beta и возвращении к Xcode 8. Простая очистка на целевом сервере решила проблему.
У меня была такая же проблема по другой причине. Я создал новую конфигурацию для Debug и Release (в разделе PROJECT → Info → Конфигурация). И мне пришлось изменить оболочку оболочки pod script (Pods- "appName" -frameworks.sh в разделе Файлы поддержки целей), чтобы она работала.
[Xcode 9]
Единственное, что сработало для меня:
Цель> Фазы сборки> [CP] Встраивать модули Pods Снимите флажок "Показывать переменные среды в журнале сборки" и "Запускать сценарий только при установке"
Я перепробовал много исправлений, но мне помогло удалить отсутствующую цель, указанную на вкладке сборки схемы сборки. Вы можете добраться до него, открыв окно редактирования текущей схемы.
Изменение: Моя цель тестирования пользовательского интерфейса не работает, и решение, которое я нашел, состояло в том, чтобы удалить его и сгенерировать его снова.
открыть xcode → general → Embedded Binaries → добавить QBImagepicker.framework и RSKImageCropper → очистить проект
просто добавьте QBImagePicker.framework и RSKImageCropper.framework во встроенных двоичных файлах работал для меня
Что для меня решило, так это изменил abstract_target
на target
для основной цели в моем Podfile. Ранее я установил его на abstract_target
и это вызвало описанную ошибку. Теперь это работает как шарм
Я думаю, что нет определенного способа решить эту проблему, поскольку она может быть вызвана другой причиной. У меня также была эта проблема на прошлой неделе, я не знаю, когда и в чем именно причина этой проблемы, только когда я запускаю его на симуляторе с Xcode или пытаюсь установить его на телефон, тогда он сообщает об ошибке такого рода, но когда я запустить его с реакцией-родной run-ios с терминалом, нет проблем.
Я проверил все способы, опубликованные в Интернете, такие как обновление сертификата, изменение настроек в XCode (все способы, упомянутые выше), на самом деле все настройки в XCode уже были установлены так, как было запрошено ранее, ни один из способов не работает для меня. До этого утра, когда я удаляю стручки и переустанавливаю, ошибка наконец-то появится через неделю. Если вы также используете cocoapod, а затем ошибка просто появилась без какой-либо конкретной причины, может быть, вы можете попробовать мой путь.
Xcode 11 :
в Xcode 11 добавить фреймворк в General->Frameworks, Libraries And Embedded Content
после добавления убедитесь, что вы выбрали опцию Embed & Sign