幾個(gè)月之前偶然遇到過這個(gè)問題,當(dāng)時(shí)并沒有額外做記錄,今天研究阿里云視頻直播再次遇到了炒考,大家工作中應(yīng)該也會(huì)遇到,而一般這類型問題的答案中比較少提到這一點(diǎn)孽水。以此記錄吧票腰,希望能幫到需要的人。
首先女气,Undefined symbols說明某些文件未參與編譯杏慰,如果是你工程里暴露出來的類,可以直接在build phases里炼鞠,把類添加進(jìn)來即可缘滥。
如果不是暴露出來的類,比如pod 進(jìn)來的谒主,target-》build setting -》other link flags 添加一個(gè)$(inherited) 即可完成自動(dòng)引用朝扼。
如果是蘋果的庫(kù)文件或者自己手動(dòng)拖入的庫(kù),可以手動(dòng)導(dǎo)入霎肯,比如
具體可以在build phases 里?"Link Binary With Libraries"添加想要的庫(kù)擎颖。
以上這幾種方式,可以解決絕大部分的此類問題观游。但還有一種可能搂捧,就是這個(gè)沒能參與編譯的動(dòng)態(tài)或者靜態(tài)庫(kù),根本不支持你目前選擇編譯安裝的模擬器或者真機(jī)的cpu 架構(gòu)懂缕。這句話可能有點(diǎn)繞口難理解允跑,關(guān)于這部分我希望后續(xù)我可以進(jìn)行詳盡補(bǔ)充,但目前可以這樣理解:iOS 設(shè)備cpu架構(gòu)分為好幾種,而在打包庫(kù)的時(shí)候是針對(duì)不同架構(gòu)cpu生成不同的包文件聋丝,如果想要支持各種機(jī)型索烹,模擬器,你需要打包不同的包并進(jìn)行合并弱睦,這樣的framework或者.a靜態(tài)庫(kù)才能支持所有iOS 設(shè)備和模擬器百姓。
舉個(gè)例子,
我查看了alithirdparty.framework 這個(gè)庫(kù)支持的cpu 架構(gòu)是armv7 和arm64.此時(shí)當(dāng)你在項(xiàng)目中引入了這個(gè)庫(kù)每篷,且你使用了模擬器編譯的時(shí)候就會(huì)出現(xiàn)類似圖下的錯(cuò)誤瓣戚。
因?yàn)槟M器的架構(gòu)是x86_64,這個(gè)庫(kù)不支持。這種情況下的報(bào)錯(cuò)焦读,因?yàn)槭堑谌綆?kù),你是沒辦法處理的舱权。只能選擇它支持的架構(gòu)進(jìn)行編譯安裝矗晃。如果是你自己打包的靜態(tài)庫(kù)或者動(dòng)態(tài)庫(kù)就簡(jiǎn)單了,你可以分別打包模擬器或者真機(jī)庫(kù)并進(jìn)行合并宴倍,再將合并后的文件導(dǎo)入項(xiàng)目中即可张症。
有疑問的同學(xué),可以留言鸵贬,希望我的記錄能對(duì)你有一點(diǎn)啟發(fā)俗他。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?sophie ? ? 2018-6-8