Недопустимая поддержка 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 для загрузки спа в магазин приложений.