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

У меня та же проблема, что и у этого парня, этого парня и этого парня (примечательно, я на самом деле не уверен, все ли они парни как таковые).

Все они закончили тем, что нашли свои собственные решения, но ни один из них не относится к моей проблеме. Я использую Xcode 6.1 в своем приложении для iOS 8 со встроенным расширением. Приложение и расширение зависят от включенного фреймворка. Когда я пытаюсь отправить приложение в Магазин, появляется предупреждение о проверке "ERROR ITMS-9000: Invalid bundle. The bundle at 'xxxxx.appex' contains disallowed file 'Frameworks'".

Я даже не могу найти файл с именем Frameworks. Предполагается, что совместно используемая инфраструктура будет сохранена в /Library/Frameworks, что является рекомендуемым местом сохранения Apple. В проекте также используются Cocoapods, что кажется мне единственным возможным преступником, поскольку в его файлах конфигурации есть ссылки на $FRAMEWORK_PATH (хотя папка сборки не содержит файл или папку с таким именем).

4 ответа

Хорошо для будущих зрителей вот исправление:

Когда вы создаете свой собственный фреймворк iOS (я использую Xcode 6.1), когда вы создаете его, конечный продукт содержит папку "Frameworks" в самом комплекте фреймворка. т.е. MyFramework.framework/Frameworks. Это происходит, даже если вы не указали фазу сборки файлов копирования / встраивания.

Что вам нужно сделать, это зайти в ваш пакет фреймворков, найти пустую папку фреймворков и удалить ее. Это никоим образом не должно влиять на функциональность вашего приложения. Затем создайте свое приложение и убедитесь, что у встроенного фреймворка нет запланированной папки Frameworks.

Ваш архив теперь не должен содержать папку, в которой возникли проблемы, и ошибка должна исчезнуть!

Я изменил настройки сборки> Упаковка> Определить модули, для которых в моем расширении установлено значение YES, и посмотреть цель приложения. У меня отлично работает.

В моем случае решение было следующим:

Попробуйте создать там скрипт "проблемная цель" -> Build Phases ", затем нажмите на + и выберите New Run Script PhaseСкрипт запуска должен идти после всех остальных. Вставьте туда:

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

Затем очистите проект и попробуйте создать архив еще раз. Эти ответы были предоставлены в следующем выпуске:

Я надеюсь, что это поможет вам.

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

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

Другие вопросы по тегам