Неверная поддержка Swift - файлы не соответствуют Xcode 10.1 - PullRequest
0 голосов
/ 08 ноября 2018

Я знаю, что есть похожие вопросы! Но они старые. Мы выпустили iTunes раньше, никогда не сталкивались с проблемой. У нас есть множество подпроектов, а также Cocoapods. Не уверен, в чем может быть проблема.

enter image description here

1 Ответ

0 голосов
/ 11 ноября 2018

Xcode 10.1 имеет эту строку в примечаниях к выпуску:

App Store и TestFlight не принимают заявки, содержащие arm64e. Xcode удалит контент arm64e из вашего приложения, когда вы распространяете его из окна Организатора.

В нашем случае это был ключ к исправлению. Наш CI использует xcodebuild для компиляции и архивирования IPA, а затем использует fastlane для его загрузки. Первый шаг - распаковать архив IPA.

Это дает нам стандартные библиотеки Swift в папке SwiftSupport и в папке frameworks приложения. Используя эту заметку о выпуске в качестве подсказки, мы обнаружили, что стандартные библиотеки в Xcode 10.1 поставляются с 4 архитектурами:

% file /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/libswiftCore.dylib 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/libswiftCore.dylib: Mach-O universal binary with 4 architectures: [arm_v7:Mach-O dynamically linked shared library arm_v7] [arm64]
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/libswiftCore.dylib (for architecture armv7):  Mach-O dynamically linked shared library arm_v7
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/libswiftCore.dylib (for architecture armv7s): Mach-O dynamically linked shared library arm_v7s
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/libswiftCore.dylib (for architecture arm64):  Mach-O 64-bit dynamically linked shared library arm64
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/libswiftCore.dylib (for architecture cputype (16777228) cpusubtype (2)):  Mach-O 64-bit dynamically linked shared library arm64

Обратите внимание на последний, который находится в неизвестной архитектуре. Это arm64e. Если вы загрузите эти файлы как есть, TestFlight / iTunesConnect отклонит ваш двоичный файл с сообщением, которое вы получаете.

Для нас решением было скопировать стандартные библиотеки, использовать lipo, чтобы удалить ломтик arm64e, а затем подписать их нашим сертификатом распространения. Затем мы можем упаковать архив IPA и загрузить его.

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

...