Я пытаюсь создать базовую OS 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
После небольшого поиска я понял, что мне нужно добавить Copy Files
раздел к этапам сборки моего контейнерного приложения, поэтому я сделал это и настроил его так ...
Тем не менее, я все еще получаю ошибку времени выполнения. Я, очевидно, что-то делаю не так, но ресурс библиотеки разработчиков Apple для этой ссылки ссылается на Xcode 2, так что это не очень полезно!
Что я пропустил?
ОБНОВИТЬ:
В журнале сборки я вижу, что мой TestMacFramework.framework
копируется в каталог .app contents / frameworks, но не устанавливается в каталог Library / Frameworks на HD
ОБНОВЛЕНИЕ 2:
Сборка ссылки правильно, если я вручную скопировать TestMacFramework.framework
в Library/Frameworks
каталог
источник
otool -L
говорит вам о том, где приложение ожидает найти структуру?/Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework (compatibility version 1.0.0, current version 1.0.0)
Ответы:
[Xcode 11+]
Единственное, что нужно сделать, это добавить фреймворк в
General->Frameworks, Libraries And Embedded Content
раздел наGeneral
вкладке цели вашего приложения.Убедитесь, что вы выбрали опцию «Вставить и подписать».
[Xcode v6 -> Xcode v10]
Единственное, что нужно сделать, это добавить фреймворк в
Embedded binaries
раздел наGeneral
вкладке цели вашего приложения.источник
Embedded binaries
раздела в моем проекте MacOS. В чем дело?Так что мне удалось заставить его работать, это довольно просто, когда у вас есть правильные инструкции. То, что я искал, было "частной" структурой, которая живет в комплекте приложений, а не записывается в папку системной библиотеки.
Построение Рамок
Включая рамки
источник
Это было довольно просто для меня, я просто добавил свой фреймворк во мои встроенные двоичные файлы под целями приложения
источник
Варианты выше, где я не могу включить. Я решил это, указав путь поиска Runpath
Это на вкладке « Настройки сборки ». В разделе « Связывание ». Измените « Пути поиска пути » на
$(inherited) @executable_path/Frameworks
источник
Я столкнулся с той же проблемой, но принятое решение не сработало для меня. Вместо этого решением было изменить имя установки фреймворка.
Ошибка в оригинальном сообщении:
Обратите внимание на первый путь после библиотеки не загружен . Каркас загружается с абсолютного пути. Этот путь происходит от имени установки фреймворка (иногда называемого rpath), которое можно проверить с помощью:
Когда фреймворк встроен в приложение, этот путь должен быть относительным и иметь следующую форму: @ rpath / MyFramework.framework / MyFramework . Если имя установки вашей платформы является абсолютным путем, оно может не загружаться во время выполнения, и будет выдана ошибка, аналогичная приведенной выше.
Решение состоит в том, чтобы изменить имя установки:
С этим изменением я больше не получаю ошибку
источник
Удаление полученных данных сохранило их для меня
источник
pod install
это сработало.Ни один из этих вопросов не решил это для меня. Проблема в конце была довольно простой. Похоже, это довольно серьезная ошибка XCode, которую я зарегистрировал проблему и исправил под ошибкой Apple: 29820370. Если вы боретесь (как кажется, есть несколько страниц с подобными проблемами), то было бы здорово, если вы можете поднять ошибку на репортере ошибок: https://bugreport.apple.com/ и сослаться на ошибку, которую я поднял, чтобы получить видимость. Я хочу вернуть Xcode в удовольствие, которое было раньше - и я уверен, что Xcode должен был исправить это сам.
Вот исправление: 1. Откройте Keychain - перейдите на Apple Worldwide Developer Cert. 2. Дважды щелкните по нему 3. Измените уровень разрешений с «всегда доверять», чтобы использовать системные значения по умолчанию 4. Сохраните и закройте его 5. Перезапустите Xcode, очистите и соберите свой проект, и он должен исчезнуть.
Снимок экрана ниже с правильными настройками: надеюсь, это поможет!
источник
в Xcode 11 добавить рамки в
General->Frameworks, Libraries And Embedded Content
после добавления убедитесь, что вы выбрали
Embed & Sign
опциюисточник
Когда вы перетаскиваете пользовательский фреймворк в проект под Xcode 10.1 , он предполагает что фреймворк является системным фреймворком, и помещает фреймворк в раздел «Связать двоичные файлы с библиотеками» в «Фазы сборки» под вашей целью.
Системные инфраструктуры уже есть на устройстве, поэтому они не копируются на устройство и, следовательно, не могут выполняться во время выполнения, поэтому KABOOM (сбой в __abort_with_payload и ошибка дезинформирования: «Причина: изображение не найдено»). Это потому, что код структуры не копируется на устройство ...
В действительности, чтобы Xcode связывал пользовательскую платформу и гарантировал, что она копируется вместе с вашим кодом на устройство iOS (реальное или симулятор), пользовательскую платформу необходимо переместить в «Копировать ресурсы комплекта». Это в конечном итоге упаковывает фреймворк вместе с исполняемым кодом, чтобы они были доступны на устройстве вместе.
Чтобы добавить пользовательский фреймворк в проект и избежать сбоя Apple:
Таким образом, пользовательская среда копируется вместе с вашим кодом на целевое устройство и становится доступной во время выполнения.
[от редакции: можно подумать, что Xcode будет достаточно умен, чтобы выяснить разницу между одной из его системных платформ, которые не нужно копировать на устройство, и пользовательской платформой, которая, о, я не знаю, в иерархии корневых каталогов проекта ... 🙄]
источник
Должен быть 'Run Script' в 'Build Phases' с этим: '/ usr / local / bin / carthage copy-frameworks'
В «Входных файлах» этого «Run Script» вы должны добавить путь к своим библиотекам. Как это:
источник
Если вы случайно сбросили связку ключей, это может произойти из-за отсутствия сертификатов Apple в связке ключей. Я последовал за этим, чтобы решить мою проблему.
У меня была та же проблема, и я смог ее исправить, повторно загрузив WWDR (Apple Worldwide Certification Authority). Загрузите отсюда: http://developer.apple.com/certificationauthority/AppleWWDRCA.cer
источник
Если вы используете Xcode 11 , убедитесь, что у вас есть инфраструктура, добавленная в Frameworks, Libraries и Embed Content под Target settings - General. Измените статус «Внедрить» с «Не вставлять» на «Вставить и подписать»
источник
Что решил это для меня было изменение
abstract_target
вtarget
для главной цели в моей Podfile. Я ранее установил его,abstract_target
и это вызвало описанную ошибку. Теперь это работает как шармисточник
Для Xcode 8, некоторые устаревшие продукты будут удалены из папки производных данных, обратитесь к этому решению .
Apple: в macOS 10.12 и более поздних версиях XCode очищает устаревшие производные данные, предварительно скомпилированные заголовки и кеш модулей. (23282174)
Система сборки Xcode поддерживает удаление устаревших файлов некоторых типов артефактов сборки, которые были созданы в предыдущей сборке, но с тех пор были удалены из проекта.
Основываясь на мысли автора, я нашел этот журнал сборки из своего дела.
После создания новой фазы копирования файла и копирования целевой устаревшей платформы в место назначения Frameworks , указанный выше журнал удаления исчезает после перестроения.
Просто проясните мою ситуацию и причину, надеюсь, это кому-нибудь пригодится.
источник
Для меня это было решением после многих часов поиска!
По какой-то причине, в разработке собственной платформы 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 и, возможно, перезапустите ваш Mac для хорошей меры. Это наконец положило конец этому кошмару. Скорее всего, это не имеет ничего общего с вашим кодом, особенно если вы получаете сообщение Build Successful при попытке его запустить. FYI
источник
Возникла проблема при попытке запустить бета-версию Xcode 9 и вернуться к Xcode 8. Простая очистка цели позволила решить проблему.
источник
У меня была та же проблема по другой причине. Я создал новую конфигурацию для отладки и выпуска (в разделе ПРОЕКТ -> вкладка Информация -> Конфигурация). И мне пришлось изменить скрипт оболочки pod frameworks (Pods- "appName" -frameworks.sh, в разделе "Файлы поддержки целей"), чтобы он работал.
[Xcode 9]
источник
Единственное, что сработало для меня:
Цель> Фазы сборки> [CP] Встраивать модули Pods Снимите флажок «Показывать переменные среды в журнале сборки» и «Запускать сценарий только при установке»
источник
Я перепробовал много исправлений, но мне помогло удалить отсутствующую цель, указанную на вкладке сборки схемы сборки. Вы можете добраться до него, открыв окно редактирования текущей схемы.
Изменить: Моя цель тестирования пользовательского интерфейса не работает, и решение, которое я нашел, состояло в том, чтобы удалить его и сгенерировать его снова.
источник
открыть xcode -> general -> Embedded Binaries -> добавить QBImagepicker.framework и RSKImageCropper -> очистить проект
просто добавьте QBImagePicker.framework и RSKImageCropper.framework во встроенных двоичных файлах работал для меня
источник
Я думаю, что нет определенного способа решения этой проблемы, поскольку она может быть вызвана другой причиной. У меня также была эта проблема на прошлой неделе, я не знаю, когда и в чем именно причина этой проблемы, только когда я запускаю его на симуляторе с XCode или пытаюсь установить его на телефон, тогда он сообщает об ошибке такого рода, но когда я запустить его с реакцией-родной run-ios с терминалом, нет проблем.
Я проверил все способы, опубликованные в Интернете, такие как продление сертификата, изменение настроек в XCode (все способы, упомянутые выше), на самом деле все настройки в XCode уже были установлены так, как было запрошено ранее, ни один из способов не работает для меня. До этого утра, когда я удаляю стручки и переустанавливаю, ошибка наконец-то появится через неделю. Если вы также используете cocoapod, а затем ошибка просто появилась без какой-либо конкретной причины, может быть, вы можете попробовать мой путь.
источник
Я столкнулся с этой проблемой только при работе на реальном устройстве (iPhone SE). На симуляторе проект работал как положено.
Я попробовал все исправления из этой самой ветки и отсюда . Никто из них не работал для меня.
Для меня проблема была решена после перезагрузки iPhone (так!).
Я сделал:
И это наконец работает. :)
Если любое другое решение не помогает, не забудьте попробовать его.
источник
Xcode 11: этапы сборки -> встроить рамки
источник