Dcloud~引入第三方庫(kù)(ZipArchive)報(bào)錯(cuò),.o文件沖突
#####################################################################################
原文鏈接:https://zhuanlan.zhihu.com/p/94770774
##############
工程集成5+sdk編譯報(bào)錯(cuò)duplicate symbol _OBJC_CLASS_$_ZipArchive in:?
項(xiàng)目遇到如下問題:解決方案如下:
1:項(xiàng)目是使用mui和原生混合開發(fā)的,現(xiàn)需要引入一個(gè)第三方庫(kù) 用原生進(jìn)行解壓文件,但是引入后編譯時(shí)報(bào)錯(cuò),該如何解決?
2:原生代碼如何才能使用到libcoreSupport.a 解壓壓縮文件的方法?
3:iOS解決兩個(gè)靜態(tài)庫(kù)(.framework或.a)中.o文件沖突
4:SDK/Libs/libcoreSupport.a(ZipArchive.o)
5:集成5+sdk時(shí),編譯不過,提示libcoreSupport.a庫(kù)中引用了ZipArchive框架,而我們自己的工程中的某個(gè)framework也引用ZipArchive,就造成編譯不過,有沒有人遇到,如何解決的?

錯(cuò)誤截圖
下邊是之前搜索進(jìn)來的解決方案,可惜都只有問題,沒有答案
引入第三方庫(kù)(ZipArchive)報(bào)錯(cuò) - DCloud問答ask.dcloud.net.cn現(xiàn)有工程集成5+sdk編譯報(bào)錯(cuò)duplicate symbol _OBJC_CLASS_$_ZipArchive in: ../Libs/libcoreSupport.a(ZipArchive.o)ask.dcloud.net.cn

接下來,福利來了,直接上代碼了,如下步驟即可
1:進(jìn)入.a文件的目錄

2:查看.a文件信息:
lipo -info libcoreSupport.a,終端會(huì)顯示該庫(kù)包含的cpu架構(gòu):armv7 x86_64 arm64

3:根據(jù)信息依次拆分文件armv7 x86_64 arm64
armv7拆分:->libcoreSupport_armv7.a
lipo -thin armv7 libcoreSupport.a -output libcoreSupport_armv7.a
執(zhí)行后,就會(huì)在文件夾中看到一個(gè)libcoreSupport_armv7.a的文件,如下圖

x86_64拆分:
lipo -thin x86_64 libcoreSupport.a -output libcoreSupport_x86_64.a
執(zhí)行后,就會(huì)在文件夾中看到一個(gè)libcoreSupport_x86_64.a的文件,如下圖

arm64拆分:
lipo? -thin arm64 libcoreSupport.a -output libcoreSupport_arm64.a
執(zhí)行后,就會(huì)在文件夾中看到一個(gè)libcoreSupport_arm64.a的文件,如下圖

4:依次刪除各個(gè)cpu架構(gòu)需要?jiǎng)h除的.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)庫(kù)
注意:將所有cpu架構(gòu)的.a庫(kù)進(jìn)行合并. 需要先把libcoreSupport.a文件刪除掉, 因?yàn)楹喜⒅蟮奈募忠彩莑ibcoreSupport.a,這樣在項(xiàng)目中直接調(diào)用即可

lipo -create -output? libcoreSupport.a? libcoreSupport_arm64.a? libcoreSupport_arm64.a? libcoreSupport_armv7.a
執(zhí)行之后,會(huì)發(fā)現(xiàn)文件夾中又多了一個(gè)libcoreSupport.a文件,刪除以下幾個(gè)文件。

到此,結(jié)束!?。?/p>
重新編譯后運(yùn)行成功