1. 程式人生 > >檢查靜態庫是否支援bitcode

檢查靜態庫是否支援bitcode

蘋果在 Xcode 7 中引入了 bitcode,在打包提交時,會包含 bitcode。如果專案用到了以二進位制格式釋出的第三方庫,第三方庫也需要包含 bitcode 才行。如果沒有包含 bitcode,編譯時會報錯,除非手動關閉 bitcode 特性。

除了通過編譯時的報錯來判斷第三方庫是否包含 bitcode,我們也可以自己檢查。首先需要判斷 library 是否是 fat 的,可以用 lipo 命令:

lipo -info libdemo.a

其中 libdemo.a 就是我們要檢查的檔案。一般第三方庫都會發布 fat library 以支援各個 CPU 架構。

接著,如果是 fat library,需要將某個 CPU 架構的 slice 提取出來:

lipo -thin arm64 libdemo.a -output libdemo-arm64.a

這樣,我們就將 arm64 這個 slice 提取出來了。接下來我們需要將這個 slice 裡面的目標檔案解壓出來,可以用 ar 命令:

ar -x libdemo-arm64.a

假設我們解壓了 libdemo_la-util.o 這個目標檔案。最後,我們檢查目標檔案中,是否包含 __bicode 這個段(segment):

otool -arch armv7 -l xxxx.a | grep __bitcode | wc -l

如果找到了,說明第三方庫是支援 bitcode 的。