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

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

Все они нашли свои решения, но ни одна из них не относится к моей проблеме. Я использую 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 (хотя папка сборки не содержит файл или папку с этим именем).

Ответ 1

ОК для будущих зрителей здесь исправление:

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

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

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

Ответ 2

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

Ответ 3

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

Попробуйте создать script "проблемную цель" → "Сборка фаз", затем нажмите + и выберите New Run Script Phase, запуск script должен идти после всех остальных. Вставьте туда:

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

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

Надеюсь, это поможет вам.

Ответ 4

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

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