Недопустимая поддержка Swift/недействительная реализация быстрой

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

Неверная поддержка Swift - пакет содержит недопустимую реализацию Swift. Возможно, приложение было создано или подписано с помощью несовместимых или предустановленных инструментов. Посетите developer.apple.com для получения дополнительной информации.

Я использую xCode Version 6.0.1 (6A317), Swift iOS SDK 8.0 и просто создаю приложение с помощью xcode.

Где я могу найти какую-либо информацию о том, как получить правильную реализацию быстрой? Apple не говорит ничего конкретного.

спасибо

Ответ 1

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

  • Установите флаг EMBEDDED_CONTENT_CONTAINS_SWIFT в YES в целевых настройках
  • Убедитесь, что на этапах сборки не было никаких других странных целей.
  • Logout все учетные записи Apple Developer из Xcode и входа в систему только с тем, с которым вы хотите нажать приложение.
  • Архив и отправьте приложение with Xcode и НЕ с загрузчиком приложений.

Почему мне нужно выйти из всех учетных записей Apple Developper?

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

UPDATE:

Так как Xcode 7.1, а новые версии Swift я снова получил ошибку. Текущее обходное решение состоит в том, чтобы сделать следующее:

  • Создайте архив локально на Xcode (не работает на моем CI)
  • В Organizer экспортируйте его как сборку AppStore.
  • Используйте Application Loader для загрузки двоичного файла.

Через несколько минут (~ 10) сборка должна быть доступна на iTunesConnect.

Ответ 2

Проблема может исходить от cocoapods, если вы используете стручки Swift. Чтобы исправить это, используйте ветку xcode7-invalid-swift-support-fix (использование). Или сделайте это вручную, отредактировав Подпрограммы/Целевые файлы поддержки /Pods/Pods -frameworks.sh и комментируя блок после

 # Embed linked Swift runtime libraries

Дополнительная информация:

Ответ 3

Решение для xcodebuild

  • создать временную папку

  • распаковать файл ipa в папку temp

  • создать папку SwiftSupport внутри папки temp
  • скопировать swift libs из приложения Payload/* app/framworks в папку SwiftSupport
  • пакет ipa файла содержит внутреннюю папку temp (у нас есть папки Payload и SwiftSupport).

Здесь моя оболочка script для добавления Swift libs в ipa

https://github.com/huhuvipi/VH_ipa_packger

Если вы существующий ipa файл, вы просто:

path/to/package_ipa.sh /path/to/ipafile

Ответ 4

Вы строите с помощью командной строки (xcodebuild)?

Если да: Я столкнулся с той же проблемой. Проблема в том, что сгенерированный файл ipa недействителен. Отсутствует папка SwiftSupport. Папка добавляется XCode, когда проект с Swift построен с помощью Xcode Gui.

Проблема описана в этом форуме разработчиков яблочного разработчика со ссылкой на открытый билет радиолокатора: https://devforums.apple.com/message/1042117#1042117

Ответ 5

У вас установлена ​​другая версия Xcode?

Откройте свой последний Xcode, затем перейдите к настройкам (меню Xcode → Настройки), перейдите на вкладку "Местоположения" и убедитесь, что средства командной строки соответствуют вашей версии Xcode.

Ответ 6

Если вы создаете через xcodebuild или Xcode Server (или что-то другое, кроме окна Organizer в Xcode), IPA отсутствует SwiftSupport. См. это обсуждение проблемы.

Решение по существу заключается в том, чтобы экспортировать IPA самостоятельно. CaveJohnson имеет команду экспортировать IPA с правильным SwiftSupport, поэтому вы можете построить IPA, например:

cavejohnson xcodeGUITricks --archive-path my.xcarchive --new-ipa-path myapp.ipa

Ответ 7

У меня была одна и та же проблема и все было предложено, но всегда не удалось... Мои приложения генерируют SwiftSupport Folders, я просто решил с этим решением:

Спасибо, что отправили этот файл .ipa. Проблема вызвана libswiftXCTest.dylib в каталоге SwiftSupport. Этот dylib используется при тестировании целей и является нормальным для включения в состав сборки, но сборка архива для App Store не должна включать этот dylib.

Чтобы решить эту проблему, выполните следующие действия:

  • Откройте проект Xcode
  • Выберите продукт > Схемa > Изменить схему
  • Нажмите "Сборка" на левой боковой панели
  • Для вашей тестовой цели снимите флажок "Архив"
  • Нажмите кнопку "Закрыть"
  • Выберите продукт > Архив
  • Отправить последний архив в App Store

Ответ 8

Проверьте подписание кода. У меня была эта ошибка при автоматическом подписании. Я размещаю профиль моего dev для профиля dev и production для версии выпуска, и ошибка исчезла.

Ответ 9

Простое решение:

Привет, у меня была такая же проблема, и ниже это решение:

Просто установите флаг EMBEDDED_CONTENT_CONTAINS_SWIFT в NO в настройке сборки Target, Project и везде, как testTarget.

Ответ 10

У меня тоже была эта проблема

Я попытался установить флаг EMBEDDED_CONTENT_CONTAINS_SWIFT в YES и NO. Оба не работали для меня.

В конце концов я попробовал это с CaveJohnson, упомянутым Дрю. Но это тоже не сработало.

Наконец, я создал новый проект и ввел свои быстрые файлы и фреймворки и т.д. Вот и все!

Решение в моем случае: Создать новый проект

Ответ 11

Хорошо, я работаю над этим уже много часов и наконец нашел решение.

Чтобы предварительно задать ответ, вот что я сделал: - попробовал все в предыдущих ответах - провел час по телефону с поддержкой Apple Tech. - прочитайте каждый форум разработчиков Apple, связанный с "недействительным быстрым" в своей сети разработчиков. Пробовал каждое из предлагаемых решений.

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

Ответ 12

Я обнаружил, что смена "Встроенного содержимого содержит Swift Code" от YES до NO в основных настройках сборки приложения (и при условии, что он установлен на YES в расширении) будет выполняться на часах (и на телефоне). В то же время, когда я загрузил этот двоичный файл, Apple, должно быть, внесла изменения в бэкэнд ITC, поскольку мои другие загруженные сборки, которые были отмечены как "Invalid Binary", были возвращены в "Обработка", а затем передали экран "Неактивен".

Итак, я отправил сборку с надписью "Встроенный контент со сводным кодом" YES в расширении только для просмотра.

Основное приложение: Встроенное содержимое содержит Swift Code = YES (если это быстрый проект, иначе NO)

Расширение WatchKit: встроенное содержимое содержит Swift Code = YES (если это быстрый проект, еще нет)

Приложение WatchKit: встроенное содержимое содержит Swift Code = NO (в любом случае)

Ответ 13

Здесь решение при использовании командной строки http://www.matrixprojects.net/p/xcodebuild-export-options-plist/

В основном все, что нужно сделать, - это создать файл plc buildOptions xcodebuild, который выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>teamID</key>
        <string>MYTEAMID123</string>
        <key>method</key>
        <string>app-store</string>
        <key>uploadSymbols</key>
        <true/>
</dict>
</plist>

Наиболее важным ключом является метод app-store

И затем запустите сборку xcode с архивом

xcodebuild -scheme MyApp -archivePath builds/MyApp.xcarchive archive

После этого запустите xcrun с экспортным архивом

xcrun xcodebuild -exportArchive -exportOptionsPlist exportPlist.plist -archivePath builds/MyApp.xcarchive -exportPath builds

Ответ 14

У меня была такая же проблема. Решение, которое работало для меня, состояло в том, чтобы обновить мой xcode, а затем создать новый проект и скопировать все мои работы в этот проект

Ответ 15

серьезно. Я потратил два дня на эту проблему, и я пробовал все вышеперечисленные методы. Ничего не работает! Я использовал моего друга Мак. И на этот раз он работает. После этого я понял, что загрузил xcode из центра разработчика не в магазин приложений Mac. Поэтому я удалил весь xcode с моего mac и переустановил xcode из магазина приложений, и он сработал. И нет никакой разницы между двумя версиями, которые разделяют точно такой же номер версии.

Ответ 16

После того, как обновление проекта Swift в новом xcode получило аналогичную ошибку, и ниже мое решение.

Откройте файл project.pbxproj и удалите строку ниже.

EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;

и смог успешно отправить приложение.

Ответ 17

У нас была аналогичная проблема после обновления до Xcode 7. Пришлось добавить опцию -exportOptionsPlist и поставить method и teamID. Перепутано, но работает сейчас.

Ответ 18

Пятиэтажное решение:

  • Перейдите к настройкам сборки и введите флаг Встроенный контент содержит Swift Code YES, если ваш код содержит частичный код быстрого доступа или полностью выполнен в Swift
  • Архивируйте свою сборку с помощью Xcode- > Product- > Archive
  • Экспортируйте сборку архива, вы внезапно увидите, что размер сборки разницы будет 40+ МБ, потому что XCode добавил папку SwiftSupport, которая отсутствовала
  • Теперь загрузите эту сборку, используя загрузчик приложений
  • Если это не работает, проверьте, что если у вас есть несколько XCode в вашей системе goto Xcode- > Preferences- > Location- > Command Lines Tools имеет тот же самый последний или тот же Xcode из выпадающего списка на котором вы сделали кодировку и вола, которую она сделала.

Это немного недостаток, так как быстрый переносит багаж и должен быть совместим с более ранней версией и кодом Objective C.

Мои много часов были потрачены впустую, надеюсь, что вы найдете это полезным;)

Ответ 19

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

Каждый продолжает говорить, чтобы установить EMBEDDED_CONTENT_CONTAINS_SWIFT = NO или =YES

У меня было приложение для iPhone, полностью написанное в Objective-C, и приложение Watch Kit, полностью написанное в Swift.

Я установил EMBEDDED_CONTENT_CONTAINS_SWIFT = NO для всех (Project Target, приложение для iPhone, тесты, UITests и WatchKit)

Место, где я устанавливаю EMBEDDED_CONTENT_CONTAINS_SWIFT = YES, находится в расширении WatchKit. Это решило мою проблему, и я смог загрузить в App Store через Xcode.

Надеюсь, это поможет кому-то!

Ответ 20

Я смог исправить это, открыв архив, перейдя в SwiftSupport и удалив папку для WatchOS, потому что она пуста. Я предполагаю, что моя цель Watch была настроена на включение Swift, поэтому она включала в себя папку, но ничего не генерировала внутри нее. Таким образом, iTC увидел пустую папку и ошибки. Удалив пустую папку, она сработала.

Ответ 21

Для меня это то, что работало для распространения.

Перейти → Xcode- > product- > Archive- > Export

После этого будет создана папка с текущей датой. Вы можете сохранить его где-нибудь для последующего использования. Затем откройте загрузчик приложений, и вы можете отправить на itunesConnect отсюда. Все будет очищено. Убедитесь, что вы создали файл Build (.ipa), нажав кнопку "Экспорт" в окне органайзера. Затем используйте загрузчик приложений для отправки сборки в iTunesConnect.

Надеюсь, это поможет. Дайте мне знать, если вам нужна дополнительная информация.

Ответ 22

Если у вас есть cocoapods, просто удалите все контейнеры и переустановите pod install.

Очень раздражает, так как у меня ошибка -22421 при загрузке непосредственно из поддержки Xcode и Invalid Swift при использовании Application Loader

Ответ 23

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

После большого количества циклов перестройки и загрузки оказалось, что это был Ad-Hoc-сертификат, который вызывал эту проблему. Использование fastlane и установка флага gym ad_hoc на false, а также использование Release Config для сборки (не уверен, какой из них исправлено), наконец, сработало. Вот моя строка gym:

identifier = "de.xxx.yyy"
config = "Release"
ad_hoc = false
scheme = "Schema"
gym(verbose: false, scheme: scheme, codesigning_identity: "iPhone Distribution: YTB)", configuration: config)