1. 程式人生 > >ios  多個.framework和.a庫中內容出現衝突問題,對其進行分解》去重》合併

ios  多個.framework和.a庫中內容出現衝突問題,對其進行分解》去重》合併

專案中遇到的庫三個庫的衝突的問題(libNodeMediaClient.a 和FunSDK.framework 和IJKMediaFramework.framework )。

一,進入libNodeMediaClient.a資料夾下檢視資訊並進行分解 

檢視libNodeMediaClient.a

$lipo -info   libNodeMediaClient.a

Architectures in the fat file: libNodeMediaClient.a are: armv7 armv7s i386 x86_64 arm64 

分解armv7

lipo -extract_family armv7 -output libNodeMediaClient_arm.a libNodeMediaClient.a

lipo  libNodeMediaClient_arm.a -thin armv7 -output libNodeMediaClient_armv7_final.a

$ lipo libNodeMediaClient_arm.a -thin armv7s -output  libNodeMediaClient_armv7s_final.a

分離arm64

$ lipo libNodeMediaClient.a -thin arm64  -output  libNodeMediaClient_arm64_final.a

分離i386

$ lipo -extract_family i386 -output libNodeMediaClient_i386_finla.a libNodeMediaClient.a

分離x86_64

$ lipo -extract_family x86_64  -output libNodeMediaClient_x86_64_finla.a libNodeMediaClient.a


二 同上對FunSDK.framework  中的FunSDK 進行處理 分離檢視 

$ lipo -info FunSDK.a

Architectures in the fat file: FunSDK.a are: armv7 armv7s i386 x86_64 arm64 

分離armv

$ lipo -extract_family armv7 -output FunSDK_armv.a   FunSDK.a

$ lipo FunSDK_armv.a -thin armv7 -output  FunSDK_armv7_final.a

$ lipo FunSDK_armv.a -thin armv7s -output FunSDK_armv7s_final.a


分離arm64

$ lipo FunSDK.a -thin arm64 -output FunSDK_arm64_final.a

分離i386 

$ lipo -extract_family i386 -output FunSDK_i386_finla.a FunSDK.a

分離x86_64

$ lipo -extract_family x86_64  -output FunSDK_x86_64_finla.a FunSDK.a

三 同上對IJKMediaFramework.framework  中的IJKMediaFramework 進行處理 分離檢視 

四對上面分離出來的.a 對應著arm64/armv7/armv7s 分解為相應型別的.o檔案,將同類的.o放在同類行的資料夾.在進行合併 

 1.把所有的 *_arm64_final.a  放在一個資料夾下,然後在 *_arm64_final.a 的同級目錄下建立一個arm64的資料夾,

$ ar -x ../FunSDK_arm64_final.a

2 把同類類合併到一起的.o打包

$ libtool -static -o  ../FunSDK_arm64_final.a

3把所有的包合併 

$ lipo -create -output  FunSDK.a  FunSDK_armv7_final.a   FunSDK_arm64_final.a