背景
近期我们提交了一个版本给苹果爸爸审核,此版本中几乎与上个版本一致,只是有一个新业务需求的迭代和几个小的体验上的优化,因此在收到被拒审邮件的时候也是非常震惊,心理默念这是又碰到哪个SB的审核员了?当然,作为苹果开发者这种事情也就见怪不怪了。因为每次遇到的审核员都不一样,关注点也不一样,所以即使是同一个包,让不同的审核员审核,也不一定都过。
邮件内容
ITMS-90433: Invalid Swift Support - The file libswiftAVFoundation.dylib doesn’t have the correct code signature. Make sure you’re using the correct signature, rebuild your app using the current public (GM) version of Xcode, and resubmit it. Don’t just modify the code signature of libswiftAVFoundation.dylib.
收到邮件的第一反应
通过“AVFoundation”这个我联想到了我们近期升级的TXLiteAVSDK_Professional SDK,只不过是在上一个版本升级的,不过版本的更新内容上我们是在这个版本提交时才注明说我们升级了相关SDK,所有我看到这个的第一反应是我们的升级的SDK有问题,目前我们用的SDK版本是腾讯开发者SDK,不是官网上的release版本的SDK,具体原因是因为官网上的SDK有bug,因此腾讯的开发者单独给我们升级了个版本(不要怪我指名道姓,因为作为用户,我很不满意😠),因此更加大了我的怀疑。
验证
首先我了解了下libswiftAVFoundation动态库,这个是一个系统的swift的动态库,并不是说腾讯的SDK中使用了,我们项目中自定义的播放器也会用的,为了验证我排查了我们的相关代码,确实是有的,并且我解压了我们的ipa包,发现在SwiftSupport中有很多这样的系统动态库,因此这个问题与腾讯SDK的关系就不大了(这里也给腾讯开发者道歉了)。
通过搜索找到了如下相关资料:
forum.ionicframework.com/t/ionic-ios… developer.apple.com/forums/thre… www.jianshu.com/p/1c2fac6b4…
解决办法
我们主要做了以下两步操作:
第一:首先我清理了我的xcode编译缓存,我的xcode是14版本,并且多次运行新旧SDK的版本,因此参考了清理缓存的建议。并且文章中也提到,清理缓存后打包就会通过。
第二:其次我排查了ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES这个设置(可以翻译为:- 始终嵌入swift标准库),发现我们这个在PROJECT中设置的为NO,为NO的具体原因我也不清楚,我刚接手项目2个月,问了问其他同事也不是很了解。因此将设置改为了YES。
最终:Your submission was accepted for release on the App Store.
结论
重新提审后,我们审核通过了。通过搜索发现,这个问题可能会多次遇到,如果遇到大家可以尝试清理xcode编译缓存,具体为什么因为缓存导致系统动态库签名失败的问题,目前仍然没有给出结论。清理缓存也是大家的主流做法。
希望对大家是个参考。