Dcloud~引入第三方庫(ZipArchive)報錯,.o文件沖突
#####################################################################################
原文鏈接:https://zhuanlan.zhihu.com/p/94770774
##############
工程集成5+sdk編譯報錯duplicate symbol _OBJC_CLASS_$_ZipArchive in:?
項目遇到如下問題:解決方案如下:
1:項目是使用mui和原生混合開發(fā)的,現(xiàn)需要引入一個第三方庫 用原生進行解壓文件桌肴,但是引入后編譯時報錯,該如何解決识脆?
2:原生代碼如何才能使用到libcoreSupport.a 解壓壓縮文件的方法善已?
3:iOS解決兩個靜態(tài)庫(.framework或.a)中.o文件沖突
4:SDK/Libs/libcoreSupport.a(ZipArchive.o)
5:集成5+sdk時,編譯不過离例,提示libcoreSupport.a庫中引用了ZipArchive框架换团,而我們自己的工程中的某個framework也引用ZipArchive宫蛆,就造成編譯不過,有沒有人遇到耀盗,如何解決的想虎?
錯誤截圖
下邊是之前搜索進來的解決方案,可惜都只有問題叛拷,沒有答案
引入第三方庫(ZipArchive)報錯 - DCloud問答ask.dcloud.net.cn現(xiàn)有工程集成5+sdk編譯報錯duplicate symbol _OBJC_CLASS_$_ZipArchive in: ../Libs/libcoreSupport.a(ZipArchive.o)ask.dcloud.net.cn
接下來,福利來了裙椭,直接上代碼了署浩,如下步驟即可
1:進入.a文件的目錄
2:查看.a文件信息:
lipo -info libcoreSupport.a,終端會顯示該庫包含的cpu架構:armv7 x86_64 arm64
3:根據(jù)信息依次拆分文件armv7 x86_64 arm64
armv7拆分:->libcoreSupport_armv7.a
lipo -thin armv7 libcoreSupport.a -output libcoreSupport_armv7.a
執(zhí)行后筋栋,就會在文件夾中看到一個libcoreSupport_armv7.a的文件炊汤,如下圖
x86_64拆分:
lipo -thin x86_64 libcoreSupport.a -output libcoreSupport_x86_64.a
執(zhí)行后抢腐,就會在文件夾中看到一個libcoreSupport_x86_64.a的文件肴颊,如下圖
arm64拆分:
lipo? -thin arm64 libcoreSupport.a -output libcoreSupport_arm64.a
執(zhí)行后,就會在文件夾中看到一個libcoreSupport_arm64.a的文件授瘦,如下圖
4:依次刪除各個cpu架構需要刪除的.o文件
armv7刪除
ar -d -sv libcoreSupport_armv7.a ZipArchive.o
x86_64刪除
ar -d -sv libcoreSupport_x86_64.a ZipArchive.o
arm64刪除
ar -d -sv libcoreSupport_arm64.a ZipArchive.o
5:將第3步驟的拆分的cpu框架重新組成新的靜態(tài)庫
注意:將所有cpu架構的.a庫進行合并. 需要先把libcoreSupport.a文件刪除掉, 因為合并之后的文件名字也是libcoreSupport.a提完,這樣在項目中直接調用即可
lipo -create -output? libcoreSupport.a? libcoreSupport_arm64.a? libcoreSupport_arm64.a? libcoreSupport_armv7.a
執(zhí)行之后徒欣,會發(fā)現(xiàn)文件夾中又多了一個libcoreSupport.a文件蜗字,刪除以下幾個文件打肝。
到此,結束U恪6弦健!
重新編譯后運行成功