在一個項目中要集成新顏第三方,須要用到明鏡與設備指紋,多是版本有些老,兩個SDK集成進去後發現衝突了,以下圖所示,兩個裏面有不少重複的SDK,因而就考慮修改第三方靜態庫,把其中的重複文件爲刪除掉。架構
方法以下:blog
1.打開終端cd到所要修改的.a庫所在文件目錄(最好備份出來到專門的目錄)ip
2.查看靜態庫文件包含的架構開發
查看.a庫文件所包含的架構庫命令:
lipo -info XXXXX.a
看看有什麼架構的編譯庫,好比:編譯
lipo -info XYRiskAssessment-iOS-1.0.0.asdk
根據結果能夠看出包含armv7 x86_64 arm64這幾個庫,衝突文件必須從必須從每一個架構的庫裏面相應刪除才行。終端
3.從fat文件裏面分離出來各個架構的庫。方法
命令:lipo -thin armv7 XXXXX.a -output XXXXX-armv7.aim
好比:技術
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衝突問題,仍是建議你們先問下他們的技術人員諮詢下~~~