最近提交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 Libraries
为 No
Reference
iOS提交ipa包时出现"The binary file XXX libswiftRemoteMirror.dylib is not permitted"