2018-11-06 "libswiftRemoteMirror.dylib"导致iOS应用提交失败

最近提交iOS Application到Test Flight的时候遇到这个奇怪的错误:


说是应用包内多了这个"libswiftRemoteMirror.dylib"的文件,打开应用程序.app包后,的确发现多了很多 libswift 开头的类包:

你会看到,在这个应用程序包内:

直接目录下多了 libswiftRemoteMirror.dylib
Framwork文件夹下多了十几个 libswift 开头的类库
而我们应用自己的SDK Framwork 同样存在这个问题

研究了一下发现这是iOS用来在 Objective-C 项目中支持 Swift 而引入的标准类库,而我们这个之前是一个纯 OC 的项目,这次加入了几个 Swift 文件,从而导致打包时自动添加了这些 lib 文件。

根据其他人碰到的问题可以总结到:

libswiftRemoteMirror.dylib应该只有在手动打包时才会出现 (即生成 .app 再压缩 Playload),使用 iOS Archive 直接打包并不会出现

另外应用内可以通过下面这个设置强制不生成 libswift 文件:

另外通过使用XCode直接生成空项目查看的方式发现,如果直接使用 Swift 项目,即使关掉了这个设置,这些类库还是会自动产生的,所以可以认为,这个设置只是对于一个 OC-Swift 混编项目有用。

如果你的项目使用了Swift遇到这种问题,那只有采用下面两个方法之一:

使用 Archive 的方式生成提交
手动删除 libswiftRemoteMirror.dylib 后重新 codesign 再提交

对于我们来说,因为这一直是一个纯OC的项目,并且需要编译成 Framework 供其他项目使用,且不希望它带上 libswift 文件导致文件过大,所以我们最终采用的方法是移除了 Swift 文件,并强制设置 Always Embed Swift Standard LibrariesNo

Reference

iOS提交ipa包时出现"The binary file XXX libswiftRemoteMirror.dylib is not permitted"

Xcode9 xcodebuild 命令行打包遇到的坑与解决方案

iOS 自动构建命令——xcodebuil

xcodebuild API

Embedding Content with Swift in Objective-C

推荐阅读更多精彩内容

  • 各位简书的作者、编辑朋友们, 我今天凌晨写文,忽然看到简书协议(草案)出台,感觉简书向着规范化又踏出了坚实的一步。...
    刀爷阅读 9,176评论 45 70
  • 秋意已浓,揺一撸凉意渐深的池水,于最 深的秋阳里,放飞囤积了一季的明媚;于更 深露重里,放逐曾几度流离的灵魂。排空...
    皎皎未眠阅读 72评论 3 1
  • 一场秋雨一场寒,气温也跟着降下来了,看来早晚要给俩宝准备外套了,因温差有点大!早晨醒来看到外面下雨了,心里...
    孙若菡妈妈阅读 73评论 0 1
  • /WEB-INF/web.xml Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。...
    Alex_1799阅读 1,033评论 0 1
  • 我至少有八条命,因为我死过七次了。虽然很虚弱,但我还活着。其实我并不知道自己有几条命,总之就是很多,有可能是九条,...
    朝九晚五的流浪情人阅读 62评论 0 0