iOS開發(fā) 引用第三方庫出現(xiàn)duplicate symbol時(shí)的處理方法

該篇文章是我自己從我的新浪博客上摘抄過來的, 原文鏈接為: http://blog.sina.com.cn/s/blog_dcc636350102wat5.html
在iOS開發(fā)中挺勿, 難免會集成別人的三方類庫裁眯, 當(dāng)集成的三方類庫過多時(shí)智什, 難免會出現(xiàn)某些庫同時(shí)使用了同樣的函數(shù)庫漆枚,導(dǎo)致link的時(shí)候報(bào)錯提示duplicate symbol竞川。詳情見圖:

WeChat70cceb16ddfe204e57d204853e82c0cb.png

這樣的報(bào)錯讓我們覺得很麻煩棋嘲, 這樣的文件重復(fù)錯誤酒唉, 不是由自己的程序中的代碼造成的, 而是別人的三方類庫沸移, 也就是說痪伦,這種情況下, 我們沒有辦法通過修改自己的代碼而使問題得到解決雹锣。 我們就只能要求第三方(函數(shù)庫的提供方)提供源碼网沾, 然后自己修改,或者是讓三方代碼提供者自己修改了之后給我們蕊爵, 不管怎樣辉哥, 多少會覺得有點(diǎn)無理要求了。 那么我們就只能想想辦法自己解決了攒射, 也就是修改.a文件或者framework中的二進(jìn)制文件醋旦。

修改這樣的錯誤, 我們需要用到lipo 和 ar 工具会放。 不知道用法的可以網(wǎng)上稍微搜索一下饲齐。

那么我們現(xiàn)在就來修改一下吧。

一咧最、找到重復(fù)的庫文件(兩個庫文件重復(fù)找其中之一即可箩张, 三個庫文件, 找到重復(fù)文件的其中兩個窗市, .....以此類推)先慷,你可以直接在該項(xiàng)目下的文件夾進(jìn)行操作(不建議, 容易使程序出問題)咨察,你也復(fù)制這些庫文件到其它文件夾進(jìn)行操作论熙。我們這里復(fù)制到其它文件夾下進(jìn)行操作。需要復(fù)制的文件見圖:

WeChat8e77d0cb7659dcf92f5c8c1d3da7a880.png

二摄狱、打開終端脓诡, 并cd 到文件夾下无午, 使用 lipo -info ASIAIDCardReader (ASIAIDCardReader替換為自己的文件名稱)查看該文件下的架構(gòu)信息, 留待后用
WeChat4aeadeabbb51a622f9821697b642706f.png

三祝谚、我們可以看最后一行信息宪迟, 此處 Architecturesin the fat file, 說明此處是一個fat文件交惯, 我們需要對該文件先進(jìn)行瘦身次泽, 即分離出armv7、arm64和armv7s文件席爽。
使用命令 lipo ASIAIDCardReader -thin armv7-output ASIAIDCardReader.armv7 (ASIAIDCardReader.armv7 中ASIAIDCardReader 可替換為自己的文件名稱意荤,且該名稱可以自定義), 使用類似的方法(只需要將 .armv7修改為相應(yīng)的架構(gòu)信息后綴即可)只锻,分離出其它的文件
WeChat2ab7cfceab9595c6de73f5395dada6b4.png

四玖像、文件已經(jīng)分離出來, 下面我們使用ar 工具齐饮, 查看各文件下的二進(jìn)制文件(.o文件)捐寥。 此處我們可以使用 ar -t在終端中查看所有的.o文件
WeChat892041782d36b93fd9c51a30468480ca.png

也可以使用 ar -x將所有.o文件分離到指定的目錄文件夾。
WeChat68a9ade77fb79737b836531359a9f34a.png

根據(jù)我們最開始的錯誤定位祖驱,從上面我們都能輕易找到重復(fù)的文件 AsyncSocket.o和AsyncSocket相關(guān)的文件握恳,接下來就是對分離出來的文件進(jìn)行修改了。

五羹膳、使用命令 ar -d -sv ASIAIDCardReader.armv7s AsyncSocket.o,即刪除ASIAIDCardReader.armv7s下的 AsyncSocket.o二進(jìn)制文件(你只需要替換成你自己的庫文件名稱和.o文件即可)睡互,同樣對分離出來的.arm64根竿、.armv7s進(jìn)行同樣的操作陵像。


WeChat64329458334fb8ba067852a9b3256c20.png

六、文件修改好了寇壳, 接下來我們需要把修改好的文件醒颖,全部再組合成我們原來的framework下的fat文件。使用命令
lipo-create -output ASIAIDCardReaderASIAIDCardReader.armv7sASIAIDCardReader.arm64 ASIAIDCardReader.armv7(此處需要把所有分離出來的文件都加上)
為了使我們確認(rèn)還原了ASIAIDCardReader文件壳炎, 我們將復(fù)制文件夾下的該文件刪除泞歉, 再進(jìn)行操作。使用命令之后匿辩, 我們就能看到生成了一個新的 ASIAIDCardReader文件腰耙, 這就是我們修改之后,符合我們需求的文件了铲球。

七挺庞、將修改好的文件, 拖拽到原文件夾下稼病,替換原文件即可选侨。

注:其它由重復(fù)的framework掖鱼, 按照以上方法重復(fù)一遍即可。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末援制,一起剝皮案震驚了整個濱河市戏挡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晨仑,老刑警劉巖褐墅,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異寻歧,居然都是意外死亡掌栅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門码泛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猾封,“玉大人,你說我怎么就攤上這事噪珊∩卧担” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵痢站,是天一觀的道長磷箕。 經(jīng)常有香客問我,道長阵难,這世上最難降的妖魔是什么岳枷? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮呜叫,結(jié)果婚禮上空繁,老公的妹妹穿的比我還像新娘。我一直安慰自己朱庆,他們只是感情好盛泡,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著娱颊,像睡著了一般傲诵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上箱硕,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天拴竹,我揣著相機(jī)與錄音,去河邊找鬼剧罩。 笑死栓拜,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播菱属,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼钳榨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了纽门?” 一聲冷哼從身側(cè)響起薛耻,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赏陵,沒想到半個月后饼齿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蝙搔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年缕溉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吃型。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡证鸥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出勤晚,到底是詐尸還是另有隱情枉层,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布赐写,位于F島的核電站鸟蜡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挺邀。R本人自食惡果不足惜揉忘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望端铛。 院中可真熱鬧泣矛,春花似錦、人聲如沸沦补。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽夕膀。三九已至,卻和暖如春美侦,著一層夾襖步出監(jiān)牢的瞬間产舞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工菠剩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留易猫,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓具壮,卻偏偏與公主長得像准颓,于是被迫代替她去往敵國和親哈蝇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容