在一個項目中要集成新顏第三方,需要用到明鏡與設備指紋,可能是版本有些老,兩個SDK集成進去后發現沖突了,如下圖所示,兩個里面有很多重復的SDK,於是就考慮修改第三方靜態庫,把其中的重復文件為刪除掉。
方法如下:
1.打開終端cd到所要修改的.a庫所在文件目錄(最好備份出來到專門的目錄)
2.查看靜態庫文件包含的架構
查看.a庫文件所包含的架構庫命令:
lipo -info XXXXX.a
看看有什么架構的編譯庫,比如:
lipo -info XYRiskAssessment-iOS-1.0.0.a
根據結果可以看出包含armv7 x86_64 arm64這幾個庫,沖突文件必須從必須從每個架構的庫里面相應刪除才行。
3.從fat文件里面分離出來各個架構的庫。
命令:lipo -thin armv7 XXXXX.a -output XXXXX-armv7.a
比如:
lipo -thin armv7 XYRiskAssessment-iOS-1.0.0.a -output armv7.a
之后可以看到文件目錄下已經分離出來armv7.a文件,同理再分理出x86_64 arm64文件
4.查看庫中所包含的文件列表
命令為:
ar -t armv7.a
5.如果不清楚兩個sdk都有哪些文件重復,可以按照以上步驟,查看下XinYanDeviceSDK.framework這個sdk都包含哪些文件,如下所示
6.從每個架構的.a文件中刪除與其他sdk沖突的.o文件
命令::ar -d -sv XXXXX-armv7.a XXXX.o
比如:
ar -d -sv arm64.a XinYanDeviceSDK.o
7.當里面的重復文件刪除完之后,重新生成fat文件
和並靜態庫的命令:
lipo -create XXXXX-armv7.a XXXXX-armv7s.a (加上所有架構的編譯庫) -output XXXXX-NOFfmpeg.a
比如:
lipo -create armv7.a x86_64.a arm64.a -output XYRiskAssessment-iOS-1.0.0.a
最后將這個新生成的靜態庫文件替換掉之前的,發現沖突解決。
說到最后,這篇文章主要記錄處理第三方沖突問題的解決,后面發現新顏提供了新版本的第三方,無需導入兩個sdk,所以開發中遇到第三方sdk沖突問題,還是建議大家先問下他們的技術人員咨詢下~~~