Ошибка проверки: в пакете содержится запрещенный файл 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", и ошибка исчезла.
Тем не менее, остается еще одна ошибка: "... содержит запрещенные вложенные пакеты". Я думал, что это было своего рода предупреждение об ошибке в результате оригинала. Я открою еще один вопрос для этого.