最近提交iOS Application到Test Flight的時(shí)候遇到這個(gè)奇怪的錯(cuò)誤:
說(shuō)是應(yīng)用包內(nèi)多了這個(gè)"libswiftRemoteMirror.dylib"的文件夏醉,打開(kāi)應(yīng)用程序.app
包后创葡,的確發(fā)現(xiàn)多了很多 libswift
開(kāi)頭的類(lèi)包:
你會(huì)看到,在這個(gè)應(yīng)用程序包內(nèi):
直接目錄下多了
libswiftRemoteMirror.dylib
Framwork文件夾下多了十幾個(gè)libswift
開(kāi)頭的類(lèi)庫(kù)
而我們應(yīng)用自己的SDK Framwork 同樣存在這個(gè)問(wèn)題
研究了一下發(fā)現(xiàn)這是iOS用來(lái)在 Objective-C 項(xiàng)目中支持 Swift 而引入的標(biāo)準(zhǔn)類(lèi)庫(kù),而我們這個(gè)之前是一個(gè)純 OC 的項(xiàng)目儒喊,這次加入了幾個(gè) Swift 文件供汛,從而導(dǎo)致打包時(shí)自動(dòng)添加了這些 lib 文件。
根據(jù)其他人碰到的問(wèn)題可以總結(jié)到:
libswiftRemoteMirror.dylib
應(yīng)該只有在手動(dòng)打包時(shí)才會(huì)出現(xiàn) (即生成 .app 再壓縮 Playload)胁勺,使用 iOS Archive 直接打包并不會(huì)出現(xiàn)另外應(yīng)用內(nèi)可以通過(guò)下面這個(gè)設(shè)置強(qiáng)制不生成
libswift
文件:
另外通過(guò)使用XCode直接生成空項(xiàng)目查看的方式發(fā)現(xiàn)世澜,如果直接使用 Swift 項(xiàng)目,即使關(guān)掉了這個(gè)設(shè)置署穗,這些類(lèi)庫(kù)還是會(huì)自動(dòng)產(chǎn)生的寥裂,所以可以認(rèn)為嵌洼,這個(gè)設(shè)置只是對(duì)于一個(gè) OC-Swift 混編項(xiàng)目有用。
如果你的項(xiàng)目使用了Swift遇到這種問(wèn)題封恰,那只有采用下面兩個(gè)方法之一:
使用 Archive 的方式生成提交
手動(dòng)刪除libswiftRemoteMirror.dylib
后重新 codesign 再提交
對(duì)于我們來(lái)說(shuō)麻养,因?yàn)檫@一直是一個(gè)純OC的項(xiàng)目,并且需要編譯成 Framework 供其他項(xiàng)目使用俭驮,且不希望它帶上 libswift 文件導(dǎo)致文件過(guò)大回溺,所以我們最終采用的方法是移除了 Swift 文件,并強(qiáng)制設(shè)置 Always Embed Swift Standard Libraries
為 No
Reference
iOS提交ipa包時(shí)出現(xiàn)"The binary file XXX libswiftRemoteMirror.dylib is not permitted"
Xcode9 xcodebuild 命令行打包遇到的坑與解決方案