ITMS-90426: Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using th...

前言

最近上架一个项目,在使用Transporter 上传IPA包的时候,遇到了 "ITMS-90426: Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using the current public (GM) version of Xcode and resubmit it." 的错误,苹果官方提示,不要使用IPA包的方式进行上传,请直接使用Xcode 上传.

但是因为项目管理的原因,我本地并没有此项目的相关证书,无法直接使用Xcode 上传,因此采用了另外一种方式进行处理,现在记录一下处理的方式.

操作步骤

第一步:获取IPA中依赖的Swift包.
复制一个IPA包,改后缀名为 zip,然后进行解压缩,得到Payload文件夹.打开这个文件夹,可以看到APP的安装包,目录如下:

Payload

右键显示包内容,进入APP的资源目录,里面包含项目中的图片,bundle 等资源,找到 Frameworks 文件夹,查询所有的 swift 包,复制到一个文件夹,这里我把这个文件夹命名为 swift引用 .

第二步,创建一个 Xcode Swift dylib 文件夹,保存Xcode中获取的Swift dylib.
我们第一步获取的 swift 包和Xcode中的包有区别的,所以我们需要去Xcode中获取原始的 Swift dylib.
打开 iphoneos 目录

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos 

在这个目录下,找到和 swift引用 文件夹中名字一致的swift 包,复制到 Xcode Swift dylib 文件夹.
PS: 这里我的Xcode版本是12.5 ,打开这个路径,发现并没有相关的包,研究后发现,需要对路径做一定的修改,路径中的swift需要更改swift-5.0,更改后的路径为:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/iphoneos 

到这里,我们就准备好了生成 Swift Support 文件夹所需要的依赖包,下面我们进行生成操作.

第三步,在IPA包中生成 Swift Support 文件夹.
我们创建一个名为 Create Swift Support 的文件夹,把IPA包拷贝到此文件夹,把我们第一步得到的Payload文件夹,也拷贝到此文件夹.
Create Swift Support 创建一个文件夹,命名为 SwiftSupport的文件夹,打开这个文件夹.
继续在这个文件夹内创建名为 iphoneos 的文件夹,打开这个文件夹,把
"Xcode Swift dylib" 文件夹中的 Swift 包,复制到 iphoneos 文件夹下.
我们通过 终端,cd 到 Create Swift Support 文件夹,可以看到如下的目录:

***.ipa
Payload
SwiftSupport

下面我们进行最重要的两步操作: 删除 .DS_Store 文件,生成 SwiftSupport 文件.

我们在终端执行:

$ find . -type f | grep .DS_Store

可以看到类似如下的输出:

.DS_Store
./Payload/.DS_Store
./Swift Support/iphoneos/.DS_Store

删除所有输出的 .DS_Store文件,例如:

$ rm ./Payload/.DS_Store

删除完所有的.DS_Store文件后,我们就可以在IPA中生成 Swift Support 文件夹了:

$ zip -r ***.ipa Payload SwiftSupport

等命令执行完之后,我们就得到了我们需要的包含 SwiftSupport 文件夹的IPA包.

验证

最后,我们验证一下:
复制 Create Swift Support 文件夹下的IPA包到桌面,更改后缀名为.zip,双击,解压缩,得到 Payload 文件夹.
打开Payload 文件夹,可以看到如下目录:

Payload
SwiftSupport

其中 SwiftSupport -> iphoneos 文件夹与 Payload 中的 Frameworks 文件夹下的swift包 一致.

至此,IPA包处理完成,继续上传即可.

你可能感兴趣的:(ITMS-90426: Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using th...)