Я пытаюсь отправить приложение с Xcode6 GM, и я получаю эту ошибку при проверке. Приложение имеет расширение действия и динамическую структуру, совместно используемую расширением и самим приложением.
У меня нет файла с именем Frameworks в проекте, поэтому я действительно не уверен, что это должно означать. Кто-нибудь получил эту проблему или есть идеи?
Ответы:
Оказывается, ошибка связана с использованием Swift (и приложение, и расширение используют Swift).
Для приложения я должен был установить:
и для расширения:
Xcode 8 и 9
Похоже, это было переименовано
Always Embed Swift Standard Libraries
в Xcode 8 и 9. Итак, для приложения:и для расширения:
источник
@executable_path/../../Frameworks
Единственное решение, которое сработало для меня, было добавить этот скрипт запуска к цели расширения приложения:
Источник: https://github.com/CocoaPods/CocoaPods/issues/4203
источник
dyld: Library not loaded: ... Image not found
кто-нибудь может мне помочь?Так что 3 шага, чтобы исправить это из настроек сборки
Embedded Content Contains Swift Code: YES
Embedded Content Contains Swift Code: NO
@executable_path/../../Frameworks
источник
В моем случае я только что обновился до CocoaPods 1.0.1, и это, похоже, новая ошибка.
Обновление Pod добавляет скрипт запуска к цели моего Extension, которая создает папку Frameworks. Я нашел его, когда собирался добавить скрипт запуска @ Roman, чтобы удалить его.
Решением было удалить этот скрипт из фазы сборки моего расширения. Вот тот, который должен был пойти ...
источник
1.1.0.rc.2
решения проблемы для меня.Удалите каждую фазу сборки для вашего расширения,
embed
в названии которого есть слово.Дополнительно:
Yes
для цели расширения.источник
Ни один из приведенных выше ответов не работал для меня. Это произошло потому, что ошибка была вызвана не родительским приложением или его расширением. Скорее всего, виновата одна из связанных библиотек.
Для подтверждения сначала архивируйте с помощью Xcode, затем с помощью Организатора выберите запись и найдите с помощью Показать в Finder. Это покажет
.xcarchive
файл.Выберите этот файл и выберите «Показать содержимое пакета».
Выберите .app в папке «Продукты / Приложения» и снова выберите «Показать содержимое пакета».
Найдите нарушающий модуль в папке Frameworks. Например, если ошибка:
Тогда в
Frameworks/MyLib.framework
следующем, вероятно, будет видно:Они присутствуют, потому что связанная библиотека - или модуль - который включает в себя родительское приложение, имеет
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
Найдите зависимый модуль в Xcode и обновите флаг:
Обратите внимание, что после решения этой проблемы приложение может быть отклонено с помощью пояснительного электронного письма из iTunes Store:
Снова это возвращается к
EMBEDDED_CONTENT_CONTAINS_SWIFT
флагу. Убедитесь, что только родительское приложение имеет этот наборYES
. И приложение, и расширение WatchKit должны иметь этот флагNO
. Это подробно описано в ответе @ Майка выше.источник
В моем случае была одна библиотека CocoaPod «Blockly», в которой для «Всегда вставлять стандартные библиотеки Swift» было указано «Да». Сделав НЕТ для варианта, это сработало.
источник
В моем случае решение состояло в том, чтобы удалить мою инфраструктуру из встроенных двоичных файлов моего расширения и добавить ее в связанные модули и библиотеки моего расширения. (И то, и другое можно найти на вкладке Общие в расширении.)
источник
Если сценарий Embed Pods Frameworks и сценарий Романа существуют в одной и той же цели.
Пожалуйста, проверьте, находится ли фреймворк Embed Pods перед другим. Если нет, просто переместите сценарий Романа в последний.
источник
Мне не удалось найти какие-либо настройки для,
Embedded Content Contains Swift Code
но я смог найти настройкуAlways Embed Swift Standard Libraries
и установил для нее значение НЕТ, чтобы моя платформа действительно исправила эту проблему.источник
cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /" if [[-d "Каркасы"]]; тогда rm -fr
источник
Если вы используете CocoaPods, я бы рассмотрел удаление фазы сборки фреймов Embed на проблемной цели (расширении), это решило проблему для меня.
источник
Я получил ту же ошибку, и это потому, что я копировал фреймворк в комплект расширений. Как выясняется, фреймворки, используемые расширением, должны быть скопированы в комплект основного приложения и связаны только в настройках сборки расширения (не копируются). Убедитесь, что в сборке расширения указан путь поиска «@executable_path /../../ Frameworks». Я думаю, что путь был добавлен автоматически XCode 10.
источник
Я нашел много вопросов, подобных этому, и ни один из них не помог мне решить мою проблему, так что, надеюсь, это может кому-то помочь.
Я создаю приложение с расширением Intent (для ярлыков Siri) и использую инфраструктуру для кода, совместно используемого расширением и моим приложением, в соответствии с рекомендациями Apple.
Я добавил свой фреймворк в свое расширение в разделе «Фреймворки и библиотеки» настроек «Общие» для цели. Когда вы добавляете фреймворк здесь, есть две колонки. Один говорит имя фреймворка, а другой называется «Вставить». У меня ничего не отображалось в столбце «Вставить», поэтому я подумал, что это нормально, но мне пришлось явно выбрать параметр «Не вставлять» для этого столбца для моей платформы. Когда я сделал это и заархивировал в Xcode, я мог видеть во время проверки, что платформа больше не была указана в моем ipa-контенте под каждой целью, но только один раз, и проверка прошла успешно.
источник
У меня была эта проблема в первый раз с XCode 7.1.1 для моего приложения с расширением Today (в моем проекте нет Swift). Сценарий ( https://github.com/CocoaPods/CocoaPods/issues/4203 ) не работает для меня.
Понижение версии cocoapods до версии 0.39.0.beta.3, запуск
pod install
, а затем повторное архивирование решили эту проблему.источник
Я получал эту же ошибку, а также
Моя проблема была с
SquareReaderSDK.framework
определенно, но я должен был добавить новый скрипт запуска в соответствии с их инструкциями:источник
Ни один из параметров сборки, перечисленных здесь, не решил эту проблему для меня. Тем не менее, я заставил это работать, переместив некоторые фреймворки из «Встроенных двоичных файлов» в «Связанные фреймворки и библиотеки».
Похоже, что мое основное приложение и одна из моих пользовательских фреймворков имели одинаковую зависимость фреймворка в обоих, и это похоже на «Нет», но перемещение его в моем основном приложении из встроенной области в связанную область позволило мне успешно загрузить приложение с без ошибок
источник