Недопустимая поддержка Swift - файлы не совпадают

Я просто переписал приложение в Swift 2. Я пытаюсь загрузить приложение в iTunesConnect (через Xcode 7 GM) для внутреннего тестирования.

Я боролся с ошибкой "Invalid Swift Support" для awhile (у которой есть другие связанные вопросы)... но теперь она изменилась на нечто совсем другое.

Ошибка Apple теперь говорит:

Неверная поддержка быстрого доступа

Файлы libswiftCoreLocation.dylib, libswiftCoreMedia.dylib, libswiftCoreData.dylib, libswiftAVFoundation.dylib не соответствуют

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib,/Payload/App.app/Frameworks/libswiftCoreMedia.dylib,/Payload/App.app/Frameworks/libswiftCoreData.dylib,/Payload/App.app/Frameworks/libswiftAVFoundation.dylib

Убедитесь, что файлы верны (?), перестройте приложение и повторно отправьте его.

Не применяйте пост-обработку к

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib,/Payload/App.app/Frameworks/libswiftCoreMedia.dylib,/Payload/App.app/Frameworks/libswiftCoreData.dylib,/Payload/App.app/Frameworks/libswiftAVFoundation.dylib.

Я не смог найти похожие ошибки, выполнив поиск "Не применяйте пост-обработку", "Убедитесь, что файлы верны, перестройте приложение и повторно отправьте его" и т.д.

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

Ответ 1

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

Я только что нашел обходной путь для этого.

  • Архив вашего приложения с новым номером сборки: (
  • Найдите архив (файл .xcarchive) в Finder из организатора "Show in Finder"
  • Откройте пакет и найдите каталоги, такие как Products/Applications/YourApp.ipa/Frameworks/ и SwiftSupport/iphoneos/
  • Скопировать все libswiftXxx.dylib файлы из SwiftSupport/iphoneos/ в Products/Applications/YourApp.ipa/Frameworks/ и перезаписать
  • Теперь загрузите в App Store из организатора

С этим процессом мне удалось загрузить мою сборку. Теперь я жду просмотра.

Примечание:

Я использую CocoaPods, а параметр ENABLE_BITCODE - NO.

Ответ 2

Изменить: выпущен CocoaPods 0.39.0, который исправляет эту проблему!

Как отметил @orkenstein, более простое решение, комментируя некоторый код в Pod-frameworks.sh. Здесь я расскажу немного подробнее.

В каталоге проекта Xcode откройте Pods/Target Support Files/Pods/Pods-frameworks.sh

Прокомментируйте следующие строки:

# Embed linked Swift runtime libraries
local basename
basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
local swift_runtime_libs
swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
for lib in $swift_runtime_libs; do
  echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
  rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
  code_sign_if_enabled "${destination}/${lib}"
done

= >

# Embed linked Swift runtime libraries
# local basename
# basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
# local swift_runtime_libs
# swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
# for lib in $swift_runtime_libs; do
#   echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
#   rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
#   code_sign_if_enabled "${destination}/${lib}"
# done

Сохранить Pods-frameworks.sh, и вам должно быть хорошо, чтобы идти!

Ответ 3

Исправление этой проблемы было объединено и доступно на последней версии CocoaPods 0.39.0.beta.5

https://github.com/CocoaPods/CocoaPods/pull/4268

Чтобы запустить последнюю версию CocoaPods gem install cocoapods --pre

Кроме того, следуйте инструкциям по запуску неизданных функций: http://guides.cocoapods.org/using/unreleased-features

Как только у вас установлена ​​последняя версия CocoaPods, запустите pod install снова.

Ответ 4

Я использовал fastlane gym 1.9.0 для создания своего приложения, и он продолжал отклоняться от яблока, потому что файлы не совпадали, тогда как если я загрузил его через XCode 8, он был принят. Я проверил быстрые библиотеки в папке поддержки ipa swift и в папке Frameworks, я обнаружил, что libs в быстрой папке поддержки были для swift 2.3, в то время как в папке Frameworks она была быстрой 3. Так что в моем файле в спортзале я добавил toolchain вариант:

gym(
  scheme: "CoCadre", 
  configuration: "Production Release",
  clean: true,
  use_legacy_build_api: false,
  toolchain: "com.apple.dt.toolchain.Swift_2_3"
)

* Обратите внимание, что мне пришлось изменить use_legacy_build_api на false, чтобы использовать опцию toolchain

Чтобы использовать опцию toolchain, нужно установить use_legacy_build_api: false https://github.com/fastlane/fastlane/issues/6003#issuecomment-244792185

Ответ 5

Существует немного менее сложное решение, найденное на GitHub:

Я посмотрел в Pods-frameworks.sh и нашел раздел прокомментировал:

Встраивание связанных библиотек быстрой загрузки
 Комментирование блока кода, который копирует эти библиотеки (и их код), кажется устранили мои проблемы с подачей. Я еще не нырнул, но это просто копирование их, что вызывает проблемы, или если это подписывания кода. Я немного ухожу от своей глубины.

Ответ 6

  • Обновите свои коко файлы до последней версии, введите sudo gem install cocoapods в терминал.
  • Запустите pod update в каталоге проекта.
  • Не забудьте установить Включить биткод на НЕТ для Debug для всех ваших контейнеров.
  • Fixed

Проблема исправлена, потому что следующий код в Pods-frameworks.sh:

# Embed linked Swift runtime libraries
local basename
basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
local swift_runtime_libs
swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
for lib in $swift_runtime_libs; do
  echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
  rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
  code_sign_if_enabled "${destination}/${lib}"
done

было изменено на:

# Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
    local swift_runtime_libs
    swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
  for lib in $swift_runtime_libs; do
    echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
    rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
    code_sign_if_enabled "${destination}/${lib}"
  done
fi

Ответ 7

Мое решение для этого:

Я использую Reveal через Cocoapods, и Reveal нужно отключить биткод. Поэтому я включил Reveal (должен работать на любой другой фреймворк) только для Debug:

pod 'Reveal-iOS-SDK', :configurations => ['Debug']

Поскольку мой Reveal теперь настроен только для Debug, я отключил бит-код только для Debug.

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

С этими настройками все работает нормально, без хаков...

Ответ 8

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

Ответ 9

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