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