Ошибка проверки: неверный пакет. В комплекте с... содержит запрещенный файл 'Frameworks'

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

У меня нет файла под названием "Frameworks" в любом месте проекта, поэтому я действительно не уверен, что это означает. Кто-нибудь получил эту проблему или идеи? here's what the error looks like

Ответ 1

Оказалось, что ошибка связана с использованием Swift (как приложение, так и расширение используют Swift).

Для приложения мне пришлось установить:

Embedded Content Contains Swift Code: YES

и для расширения:

Embedded Content Contains Swift Code: NO

Xcode 8 и 9

Похоже, что это было переименовано в Always Embed Swift Standard Libraries в Xcode 8 и 9. Итак, для приложения:

Always Embed Swift Standard Libraries: YES

и для расширения:

Always Embed Swift Standard Libraries: NO

Ответ 2

Единственное решение, которое сработало для меня, заключалось в том, чтобы добавить этот Run Script в цель расширения приложения:

cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then 
    rm -fr Frameworks
fi

введите описание изображения здесь Источник: https://github.com/CocoaPods/CocoaPods/issues/4203

Ответ 3

Итак, 3 шага, чтобы исправить это из настроек сборки

  • Контейнерное приложение: Embedded Content Contains Swift Code: YES
  • Расширение: Embedded Content Contains Swift Code: NO
  • Расширение: Путь поиска пути Путь = @executable_path/../../Frameworks

Ответ 4

В моем случае я просто обновился до CocoaPods 1.0.1, и это, похоже, новая ошибка.

Обновление Pod добавляет запуск script к моей цели расширения, которая создает папку Frameworks. Я нашел это, поскольку я собирался добавить @Roman запустить script, чтобы удалить его.

Решение заключалось в том, чтобы удалить этот script из моей фазы сборки расширения. Вот то, что нужно было...

введите описание изображения здесь

Ответ 5

Удалите каждую фазу сборки для вашего расширения, в

которого есть слово embed.

Дополнительно:

  • Встраиваемый контент содержит код Swift должен быть установлен в Yes для цели расширения.

Ответ 6

Ни один из вышеперечисленных ответов не работал у меня. Это произошло потому, что ошибка была вызвана не родительским приложением, а его расширением. Скорее, одна из связанных библиотек была виновата.

Чтобы подтвердить, сначала архив с помощью Xcode, затем с помощью Organizer выберите запись и найдите с помощью Show in Finder. Это покажет файл .xcarchive.

Выберите этот файл и выберите "Показать содержимое пакета".

Выберите .app в папке Продукты/Приложения и снова выберите "Показать содержимое пакета".

Найдите повреждающий модуль в папке Frameworks. Например, если ошибка:

ERROR ITMS-90206: "Invalid Bundle. The bundle at 'MyApp.app/Frameworks/MyLib.framework' contains disallowed file 'Frameworks'."

Затем в Frameworks/MyLib.framework будет видимо следующее:

../Frameworks/libswiftContacts.dylib
../Frameworks/libswiftCore.dylib
../Frameworks/libswiftCoreData.dylib
../Frameworks/libswiftCoreGraphics.dylib
../Frameworks/libswiftCoreImage.dylib
../Frameworks/libswiftCoreLocation.dylib
../Frameworks/libswiftDarwin.dylib
../Frameworks/libswiftDispatch.dylib
../Frameworks/libswiftFoundation.dylib
../Frameworks/libswiftLocalAuthentication.dylib
../Frameworks/libswiftObjectiveC.dylib
../Frameworks/libswiftPassKit.dylib
../Frameworks/libswiftUIKit.dylib
../Frameworks/libswiftWebKit.dylib

Они присутствуют, потому что связанная библиотека или модуль, которые включает родительское приложение, имеет EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;

Найдите зависимый модуль в Xcode и обновите флаг:

введите описание изображения здесь

Обратите внимание, что, преодолев эту проблему, приложение все равно может быть отклонено с объяснительным письмом из магазина iTunes Store:

Invalid Swift Support - The Watch OS application has Swift libraries at both...

Снова это возвращается к значку EMBEDDED_CONTENT_CONTAINS_SWIFT. Убедитесь, что только родительское приложение установлено на YES. Оба приложения и расширения WatchKit должны иметь этот флаг для NO. Это подробно описано в ответе @Mike выше.

Ответ 7

В моем случае решение заключалось в том, чтобы удалить мою фреймворк из моих внутренних встроенных двоичных расширений и добавить их в мои расширения Linked Frameworks и Libraries. (Оба они можно найти на вкладке "Общие расширения" ).

Ответ 8

В моем случае была одна библиотека CocoaPod "Blockly", которая указывала Yes для "Always Embed Swift Standard Libraries". После создания НЕТ для параметра он работал. введите описание изображения здесь

Ответ 9

Если Embed Pods Frameworks script и Roman script существуют в одной и той же цели.

Пожалуйста, проверьте, размещены ли рамки Embed Pods перед другим. Если нет, просто переместите Roman script в конец.

Ответ 10

Мне не удалось найти какие-либо настройки для Embedded Content Contains Swift Code, но мне удалось найти параметр Always Embed Swift Standard Libraries, и для этого я установил значение NO для моей инфраструктуры.

Ответ 11

  • Контейнерное приложение: настройка сборки → Встроенный контент содержит быстрый код: ДА
  • Расширение: настройка сборки → встроенный контент содержит быстрый код: НЕТ
  • Расширение: построить фазу → добавлено следующее Запустить Script в

cd "$ {CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/" если [[-d "Frameworks]]]; тогда rm -fr Frameworks ц

  1. (важно) Расширение: построить фазу → переместите Запустить Script на Последний (после Embed Pods Frameworks script)

Ответ 12

Если вы используете CocoaPods, я бы подумал об удалении фазы построения фреймворков Embed на проблемной цели (расширении), это устранило проблему для меня.

Ответ 13

Я нашел много вопросов, подобных этому, и ни один из них не помог мне решить мою проблему, так что, надеюсь, это кому-нибудь поможет.

Я создаю приложение с расширением Intent (для ярлыков Siri) и использую инфраструктуру для кода, совместно используемого расширением и моим приложением, в соответствии с рекомендациями Apple.

Я добавил свой фреймворк в свое расширение в разделе "Фреймворки и библиотеки" настроек "Общие" для цели. Когда вы добавляете фреймворк здесь, есть две колонки. Один говорит имя фреймворка, а другой называется "Вставить". У меня ничего не отображалось в столбце "Внедрить", поэтому я подумал, что это нормально, но мне пришлось явно выбрать параметр "Не встраивать" для этого столбца для моей платформы. Когда я сделал это и заархивировал в Xcode, я мог видеть во время проверки, что платформа больше не была указана в моем ipa-контенте под каждой целью, но только один раз, и проверка прошла успешно.

Ответ 14

У меня была эта проблема в первый раз с XCode 7.1.1 для моего приложения с расширением Today (в моем проекте нет Swift). script (https://github.com/CocoaPods/CocoaPods/issues/4203) не работал у меня.

Уменьшение кокаподов до версии 0.39.0, 3, запуск pod install, а затем повторная архивация решает проблему.

Ответ 15

Я получал эту же ошибку, а также

Запрещенная ошибка вложенных пакетов

Моя проблема была именно с SquareReaderSDK.framework но я должен был добавить новый скрипт запуска в соответствии с их инструкциями:

FRAMEWORKS="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
"${FRAMEWORKS}/SquareReaderSDK.framework/setup"

Ответ 16

Ни один из параметров сборки, перечисленных здесь, не решил эту проблему для меня. Тем не менее, я заставил это работать после перемещения некоторых фреймворков из "Встроенных двоичных файлов" в "Связанные фреймворки и библиотеки".

Похоже, что мое основное приложение и одна из моих пользовательских фреймворков имели одинаковую зависимость фреймворка в обоих, и это, кажется, Нет Нет, но перемещение его в моем основном приложении из встроенной области в связанную область позволило мне успешно загрузить ошибок нет.

Ответ 17

Я получил ту же ошибку, и это потому, что я копировал фреймворк в комплект расширений. Как выясняется, фреймворки, используемые расширением, должны быть скопированы в комплект основного приложения и связаны только в настройках сборки расширения (не копируются). Убедитесь, что у вас есть путь поиска '@executable_path/../../Frameworks' в сборке расширения. Я думаю, что путь был добавлен автоматически XCode 10.

Ответ 18

Я сталкиваюсь с этой проблемой в Xcode - 11. В моем проекте у меня есть пользовательский фреймворк, который был добавить как Embed & подписать, и это должно быть Не вставлять. Смотрите картинку ниже.enter image description here