Помилка перевірки: невірний пакет. Пакет у ... містить заборонений файл "Frameworks"


165

Я намагаюся подати програму з Xcode6 GM, і я отримую цю помилку під час перевірки. У додатку є розширення дій та динамічна рамка, яка ділиться між розширенням та самим додатком.

У мене немає файлу під назвою "Frameworks" ніде в проекті, тому я дійсно не впевнений, що це має означати. Хтось стикався з цим питанням чи має якісь ідеї?ось як виглядає помилка


Як щодо папки під назвою Frameworks?
borrrden

У проекті під назвою Frameworks є група, але папки немає. Я її видалив, повторно архівував, і я все одно отримую ту саму помилку.
Майк

Відповіді:


308

Виявляється, помилка пов'язана з використанням 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

7
Ти мій рятівник. "Вбудований" означає розширення в пакеті, і оскільки розширення не містить більше розширень, воно не містить швидкого коду.
Кріс Трумен

2
Це не вирішило проблему для мене. Я також використовую CocoaPods. Хтось бачив проблеми, пов’язані з цим? Будь-які інші ідеї?
timschmitz

8
Не забувайте за допомогою розширень WatchKit, щоб переконатися, що шлях Шлях пошуку Runpath@executable_path/../../Frameworks
пан Роджерс,

1
@MrRogers Це вирішило мою проблему після відповіді. У мене є програма objC зі швидкими годинниками. Не вдалось би встановити вкладений вміст, однак він отримав відмову від apple. Налаштувавши вбудований вміст правильно, програма зламала. Цей шлях пошуку - це те, що його зафіксувало.
Beau Nouvelle

1
Це не працювало для мене, мені потрібно було зробити щось інше, і я був у розширенні Target, яке має проблему, я стерв сценарій на "[CP * Embed Pods Frameworks" після цього. Це працює правильно !!
А. Треджо

122

Єдине рішення, яке працювало для мене, - додати цей сценарій запуску до цілі розширення додатка:

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

введіть тут опис зображення Джерело: https://github.com/CocoaPods/CocoaPods/isissue/4203


7
У моєму додатку не використовується Swift, тому це було єдиним виправленням, яке працювало і для мене.
Ден Лофні

6
Варто зазначити, що це потрібно лише додати до розширення, а не до основної цілі.
theDuncs

3
Це дійсно вирішує проблему, але це дає ще одну проблему, яка полягає в тому, що я не можу запускати додаток на тренажері, ані на своєму пристрої. Це дає помилку: dyld: Library not loaded: ... Image not foundхто-небудь може мені допомогти?
Субхан Саріф

4
Це тільки я чи це такий розум?
bkbeachlabs

1
Кріпляться на перевірку .ipa але збій на установку з повідомленням про помилку dyld: Бібліотека не завантажується: @ RPATH / AFNetworking.framework / AFNetworking посилальні з: / вару / контейнери / Bundle / Application / .... Причина: зображення не знайдено
Алім

45

Отже, 3 кроки, щоб виправити це в налаштуваннях збірки

  1. Додаток для контейнерів: Embedded Content Contains Swift Code: YES
  2. Розширення: Embedded Content Contains Swift Code: NO
  3. Розширення: Шлях пошуку Runpath = @executable_path/../../Frameworks

2
Container vs Extension, я новачок у Xcode. де це, є подовжувачі какао-стручків? або де розташовані ці дві речі?
Серж Педроза

16

У моєму випадку я щойно оновив до CocoaPods 1.0.1, і, здається, це нова помилка.

Оновлення Pod додає сценарій запуску до цілі мого розширення, який створює папку Frameworks. Я знайшов це, коли я збирався додати сценарій запуску @ Романа, щоб видалити його.

Рішенням було видалити цей скрипт із фази збірки мого розширення. Ось той, на який потрібно було піти ...

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


7
Вирішили це за мене! Знову ж таки, це CocoaPods коштує мені більше години, щоб спробувати зрозуміти, що не так. У мене з цим продуктом серйозні стосунки любові та ненависті.
fguchelaar

2
Модернізація Cocoapods 1.1.0.rc.2вирішила проблему для мене.
Otávio

1
Видалення рамки Embed Pods в рамках збірки клавіатури розширення клавіатури працювало для мене! Я використовую Xcode 8 та CocoaPods v1.0.1. Дякую!
Штормова фабрика

13

Видаліть кожну фазу збірки для свого розширення, що має embedслово у своєму заголовку.

Додатково:

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

11

Жодна з наведених відповідей не працювала для мене. Це було через те, що помилка була викликана не батьківським додатком або його розширенням. Вірніше, одна з пов'язаних бібліотек була винною.

Для підтвердження спочатку архівуйте за допомогою Xcode, а потім за допомогою Організатора виберіть запис та знайдіть його за допомогою 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. Це детально описано у відповіді @ Майка вище.


10

У моєму випадку була одна бібліотека CocoaPod "Blockly", яка вказувала Так для "Завжди вбудовувати стандартні бібліотеки Swift". Зробивши "НІ" для опції, воно спрацювало.введіть тут опис зображення


9

У моєму випадку рішенням було видалити мій фреймворк із вбудованих бінарних файлів мого розширення та додати його до пов’язаних рамок і бібліотек мого розширення. (І те, і інше можна знайти на вкладці Загальні розширення.)


7

Якщо вставити сценарій Pods Frameworks і сценарій Романа існують в одній цілі.

Будь ласка, перевірте, чи вбудовані рамки вкладишів розташовані перед іншими. Якщо ні, просто перемістіть сценарій Романа до останнього.


ти дивовижний @Reeonce Zeng, врятуй мій день!
mgyky

Чи повинен я зберегти обидва сценарії там або лише останню частину? "$ {SRCROOT} / Pods / Target Support Files / Pods-Orsys WatchKit Extension / Pods-Orsys WatchKit Extension-frameworks.sh" cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /" if ["frame [ ]; потім rm -fr Frameworks fi

@stack, слід додати новий етап сценарію запуску та заповнити: `cd" $ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} / "if [[-d" Frameworks "]]; потім rm -fr Frameworks fi `
Reeonce Zeng

що ви маєте на увазі під запуском нового сценарію? у нас вже є сценарій. гаразд ? замінивши старий сценарій, чи повинен я запустити один раз проект із заміною вашого тексту. Чи потрібно мені вибрати опцію "запустити скрипт при встановленні програми" там?

будь ласка, допоможіть мені трохи більше. Я отримав помилку для розширення wathckit. У моєму проекті розширення годинника в моїх проектах немає параметра "виправити додаток, що заборонено ...". де я можу його знайти? У мене є лише "Embed pods frame" і "copy copy frame Framework". Будь ласка, допоможіть.

6

Я не зміг знайти жодних налаштувань для, Embedded Content Contains Swift Codeале я зміг знайти налаштування, Always Embed Swift Standard Librariesвстановивши це значення "НІ", оскільки мої рамки вирішили цю проблему.


4
  1. Додаток для контейнерів: Налаштування збірки -> Вбудований вміст містить швидкий код: ТАК
  2. Розширення: Налаштування збірки -> Вбудований вміст містить швидкий код: НІ
  3. Розширення: Фаза збірки -> додано наступний сценарій запуску в

cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /" if [[-d "Frameworks"]]; то rm -fr Рамки fi

  1. (важливо) Розширення: Фаза збірки -> перемістіть Запуск сценарію до останнього (після вбудови сценарію Pods Frameworks)

"до останнього" був для мене важливим твором, дякую.
Енді Обусек

3

Якщо ви використовуєте CocoaPods, я б розглянути можливість видалення фази збірки Embed фреймворків із проблемної цілі (розширення), це вирішило для мене проблему.


2

Я отримував таку ж помилку, і це тому, що я копіював рамку в розширення. Як виявляється, рамки, які використовуються розширенням, слід скопіювати в пакет основного додатка і пов'язати лише в налаштуваннях збірки розширень (не скопіювати). Не забудьте у збірці розширень мати шлях пошуку "@executable_path /../../ Frameworks". Я думаю, що XCode 10 автоматично додав шлях.


1

Я знайшов багато таких питань, і жодне не допомогло мені виправити свою проблему, тому, сподіваюся, це може допомогти комусь.

Я створюю додаток, який має розширення "Намір" (для ярликів Siri) і використовую рамку для коду, який використовується між розширенням та моїм додатком, як рекомендує Apple.

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


0

У мене ця проблема була вперше з XCode 7.1.1 для мого додатка, який має розширення сьогодні (у моєму проекті немає Swift). Сценарій ( https://github.com/CocoaPods/CocoaPods/isissue/4203 ) не працював для мене.

Поновлення cocoapods до версії 0.39.0.beta.3, запущена pod installта повторна архівація вирішила проблему.


0

Я отримував цю саму помилку разом із a

Вимкнено помилку вкладених пакетів

Моя проблема полягала в SquareReaderSDK.frameworkконкретному, але мені довелося додати новий сценарій запуску відповідно до їхніх інструкцій:

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

0

Жодна з перелічених тут налаштувань збірки не вирішила цю проблему для мене. Однак я отримав це для роботи після переміщення деяких фреймворків із "Вбудованих бінарних файлів" на "Пов'язані рамки та бібліотеки".

Здається, що в моєму головному додатку та в одній із моїх спеціальних фреймворків однакова рамкова залежність була і в обох, і, здається, це немає ні, але переміщення його в моєму головному додатку із вбудованої області до області зв’язку дозволило мені успішно завантажувати додаток із немає помилок.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.