无效的Swift支持 - 文件与Xcode 10.1不匹配

Dhe*_*raj 9 xcode xcodebuild xcode-command-line-tools xcode10

我知道那里有类似的问题!但是,他们已经老了.我们之前已经发布过iTunes,从未遇到过问题.我们有很多子项目和cocoapods.不确定可能是什么问题.

在此输入图像描述

Sco*_* K. 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
Run Code Online (Sandbox Code Playgroud)

注意最后一个,它是一个未知的架构.那是arm64e.如果您按原样上传这些文件,TestFlight/iTunesConnect将拒绝您的二进制文件和您收到的消息.

对我们来说,解决方案是复制标准库,用于lipo删除arm64e切片,然后使用我们的分发证书对其进行签名.然后我们可以重新打包IPA存档并上传它.

希望有所帮助.目前尚不清楚如何构建提交的应用程序,因此对您来说可能更难以处理,但对我们来说,一旦我们意识到正在发生的事情,就不难修改我们的构建脚本.

  • 非常感谢!我们在 Xcode 10.1 机器上也有类似的东西。我们正在使用下面的 `lipo` 命令 `sudo lipo /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/libswiftCore.dylib -remove arm64e -output /Applications/Xcode .app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/libswiftCore.dylib` 我们是否需要为所有 dylib 执行此操作以消除错误并再次生成我们的 ipa? (2认同)