答案 0 :(得分:6)
Xcode 10.1在发行说明中包含以下内容:
App Store和TestFlight不接受包含arm64e的提交。当您从管理器窗口进行分发时,Xcode将从应用中删除arm64e内容。
对于我们来说,这是修复它的关键。我们的CI使用xcodebuild来编译和存档IPA,然后使用fastlane上载它。第一步是解压缩IPA存档。
这样做可以在SwiftSupport文件夹和应用程序的frameworks文件夹中为我们提供Swift标准库。使用该发行说明作为提示,我们发现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 slice,然后用我们的发行证书签名。然后,我们可以重新打包IPA存档并上传。
希望有帮助。目前尚不清楚您如何构建提交的应用程序,因此对您来说可能很难处理,但是对我们来说,一旦意识到发生了什么,就不难修改构建脚本。