Пакет в… содержит запрещенный файл 'Frameworks' - PullRequest
1 голос
/ 04 февраля 2020

Я пытаюсь развернуть библиотеку .dylib, обернутую в платформу, и у меня возникает следующая проблема: «ОШИБКА ITMS-90206:« Неверный пакет. Пакет на X.app/Frameworks/PoemsRecommender.framework » содержит запрещенный файл 'Frameworks'. "

Похоже, что есть фреймворк, вложенный в каркас: shared

То, что я пробовал:

  • Удалить папку «Frameworks» в фазе «Выполнить сценарий» (на самом деле это помогает при отправке, но приложение аварийно завершает работу, поскольку не может найти dylib, находящийся в папке Frameworks)
  • Изменить «Frameworks» для «Общие рамки» в «Вставить рамки»
  • Отключить «Всегда вставлять Swift ..»

1 Ответ

2 голосов
/ 10 февраля 2020

Причина

Сообщение об ошибке указывает, что вы пытаетесь упаковать каркас, в который встроены свои собственные каркасы.

В настоящее время это не поддерживается посредством традиционного встраивания каркаса

Исправлено, к сожалению, связывание всех фреймворков отдельно в вашей основной цели.

Как узнать?

Когда вы видите эту ошибку X.app/Frameworks/PoemsRecommender.framework contains disallowed file 'Frameworks'."

Apple is явно сказано, что фреймворк, который встраивает папку «Frameworks», запрещен. Здесь большое обсуждение здесь , которое углубляется в детали.

Рекомендуемое решение

Упакуйте свои фреймворки отдельно и свяжите их все вручную. У Apple есть хорошие рекомендации здесь

Не рекомендуется, но вы достигнете своей цели

Если вы должны использовать одну платформу, потребуется немало работы. По сути, вы хотите создать инфраструктуру Umbrella, которая будет маскировать все базовые платформы. Это может запутаться, если вы когда-нибудь решите связать эти подструктуры в других частях вашего приложения. Поскольку ваш вопрос по деталям неясен, я не могу установить, повлияет ли это на вас.

Существует ряд ресурсов , которые могут помочь вам в трудоемком процессе.

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

Я делал это в прошлом, и мы столкнулись с множеством проблем, и я бы не рекомендовал такой подход. В прошлом у нас был SDK с белой маркировкой, который состоял из ряда внутренних структур, которые были связаны общей целью. Чаще всего это было трудно поддерживать и трудно понять новым членам команды. В конце концов мы только что перешли на несколько фреймворков.

Я думаю, что у Apple есть свои инструменты для поддержки того, как они это делают, но, к сожалению, это не доступно для нас, крестьян.

...