Недопустимая поддержка Swift-файлы не совпадают
Я просто переписал приложение в Swift 2. Я пытаюсь загрузить приложение в iTunesConnect (через Xcode 7 GM) для внутреннего тестирования.
Я некоторое время боролся с ошибкой "недопустимая поддержка Swift" (у которой есть другие, связанные с этим вопросы) ... но теперь это изменилось на что-то немного другое.
ошибка от Apple теперь говорит:
Недопустимая Поддержка Swift
файлы libswiftCoreLocation.dylib, libswiftCoreMedia.dylib, libswiftCoreData.dylib, libswiftAVFoundation.dylib не соответствует
/ Полезная Нагрузка / Приложение.приложение / фреймворки / libswiftCoreLocation.dylib,/полезная нагрузка / приложение.приложение / фреймворки / libswiftCoreMedia.dylib,/полезная нагрузка / приложение.приложение / фреймворки / libswiftCoreData.dylib,/полезная нагрузка / приложение.приложение / фреймворки / libswiftAVFoundation.dylib нужна
убедитесь, что файлы правильно (?), перестроить приложение и повторно отправить его.
не применять пост-обработку
/ Полезная Нагрузка / Приложение.приложение / фреймворки / libswiftCoreLocation.dylib,/полезная нагрузка / приложение.приложение / фреймворки / libswiftCoreMedia.dylib,/полезная нагрузка / приложение.приложение / фреймворки / libswiftCoreData.dylib,/полезная нагрузка / приложение.приложение / фреймворки / libswiftAVFoundation.dylib нужна.
Я не смог найти подобные ошибки, выполнив поиск "не применять постобработку", "убедитесь, что файлы верны, перестроить приложение и повторно отправить его" и т. д.
кто-нибудь знает как я могу ", убедитесь, что файлы правильно " --или-- есть какие-либо другие рекомендации? Спасибо.
9 ответов:
та же проблема здесь. Я думаю, что это, скорее всего, ошибка инструментов разработчика, связанных с Битовым кодом.
Я нашел обходной путь для этого.
- архивируйте приложение с новым номером сборки: (
- найти в архиве (.xcarchive file) в Finder от организатора "показать в Finder"
- откройте пакет и найдите каталоги, такие как
Products/Applications/YourApp.ipa/Frameworks/иSwiftSupport/iphoneos/- скопировать все
libswiftXxx.dylibфайлыSwiftSupport/iphoneos/вProducts/Applications/YourApp.ipa/Frameworks/и заменить- теперь загрузить в App Store от организатора
С помощью этого процесса мне удается загрузить свою сборку. Теперь я жду отзыва.
Примечание:
Я использую CocoaPods, и нет.
Edit: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 "" | 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 "" | 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и вы должны будьте добры идти!
исправление для этой проблемы было объединено, и оно доступно на последней версии CocoaPods
0.39.0.beta.5https://github.com/CocoaPods/CocoaPods/pull/4268
чтобы получить последнюю версию CocoaPods run
gem install cocoapods --preкроме того, следуйте инструкциям по запуску неизданных функций: http://guides.cocoapods.org/using/unreleased-features
после того, как у вас есть последняя версия CocoaPods, запустите
pod installснова.
я использовал Fastlane gym 1.9.0 для создания своего приложения, и он продолжал отклоняться apple, потому что файлы не совпадали, тогда как если бы я загрузил через XCode 8, он был принят. Я проверил библиотеки swift в папке поддержки swift ipa и в папке фреймворков, я обнаружил, что библиотеки в папке поддержки swift были для swift 2.3, а в папке фреймворков это был swift 3. Поэтому в моем файле gym я добавил опцию 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
есть немного менее сложное решение, найденное на GitHub:
я осмотрелся в Pods-frameworks.sh и нашел раздел комментарии:
встраивать связанные библиотеки времени выполнения Swift
Комментируя блок кода, который копирует эти библиотеки (и подписывает их) кажется исправили мое представление беды. Я еще не нырял глубже, чтобы увидеть, если это просто копирование их что вызывает проблемы, или если это подпись кода. Я немного выбиваюсь из колеи.
- обновите cocoapods до последней версии, введите
sudo gem install cocoapodsв терминале.- выполнить
pod updateв каталоге вашего проекта.- Не забудьте поставить Включить Bitcode до нет на
Debugопция для всех ваших стручков.- основные
проблема исправлена, потому что следующий код в
Pods-frameworks.sh:# Embed linked Swift runtime libraries local basename basename="$(basename "" | 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
мое решение для этого:
Я использую Reveal через Cocoapods и Reveal необходимо отключить Bitcode. Поэтому я включил Reveal(должен работать для любой другой Framwork) только для отладки:
pod 'Reveal-iOS-SDK', :configurations => ['Debug']поскольку мое раскрытие теперь настроено только для отладки, я отключил Bitcode только для отладки.
С этими настройками все работает нормально, без каких-либо хаков...
Я видел, что эта ошибка возникает при интеграции библиотек, которые не поддерживают bitcode (например, текущая стабильная версия New Relic). Решение заключается либо в удалении библиотек, отключении bitcode (и, возможно, не сможет отправить в магазин), либо в ожидании обновленных двоичных файлов, поддерживающих bitcode из вашей библиотеки vender.
ошибка для меня заключалась в том, что я построил с профилем Adhoc вместо профиля App Store для загрузки spa в app store.

Comments