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



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



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

604   9  

9 ответов:

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

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

  1. архивируйте приложение с новым номером сборки: (
  2. найти в архиве (.xcarchive file) в Finder от организатора "показать в Finder"
  3. откройте пакет и найдите каталоги, такие как Products/Applications/YourApp.ipa/Frameworks/ и SwiftSupport/iphoneos/
  4. скопировать все libswiftXxx.dylib файлы SwiftSupport/iphoneos/ в Products/Applications/YourApp.ipa/Frameworks/ и заменить
  5. теперь загрузить в 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.5

https://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
Комментируя блок кода, который копирует эти библиотеки (и подписывает их) кажется исправили мое представление беды. Я еще не нырял глубже, чтобы увидеть, если это просто копирование их что вызывает проблемы, или если это подпись кода. Я немного выбиваюсь из колеи.

  1. обновите cocoapods до последней версии, введите sudo gem install cocoapods в терминале.
  2. выполнить pod update в каталоге вашего проекта.
  3. Не забудьте поставить Включить Bitcode до нет на Debug опция для всех ваших стручков.
  4. основные

проблема исправлена, потому что следующий код в 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 только для отладки.

enter image description here

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

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

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

Comments

    Ничего не найдено.