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