一窝革、MachOView工具概述及安裝
使用MachOView工具可以在Mac平臺中可查看Mach-O文件的格式信息.iOS系統(tǒng)中可執(zhí)行程序就屬于Mach-O文件格式。
MachOView工具屬于免費開源項目吕座,源代碼可在https://github.com/gdbinit/MachOView下載虐译,
上面的版本會出現(xiàn)crash的情況,優(yōu)化后的版本在這里.
https://github.com/emptyglass123/MachOView
MachOview安裝及常見報錯:
MachOview部分軟件打開mack-o文件出現(xiàn)閃退的情況,建議從上面網(wǎng)站下載源碼編譯出.app包來使用.
1.如果出現(xiàn)編譯不過,請查看Base SDK是否匹配
出現(xiàn)上面的情況將Base SDK選為macOS,如下:
2.如果出現(xiàn)下面報錯:
將macOS Deployment Target 選擇為你的mac系統(tǒng)版本就可以,我的是10.13
3.編譯過后,在product目錄將MachOView.app文件拷貝到Application目錄下就可以正常使用了
二、使用MachOView工具打開一個.a文件
我使用的是友盟的一個.a文件
-
1.打開MachOView,左上角File-->Open 然后選中要分析的.a文件
可以看到該.a文件是一個Fat二進制文件,支持ARM/X86/ARM64/X86_64四種架構
三吴趴、關于MachOView的解讀請移步另一篇文章 mach-o 介紹
四漆诽、擴展:
1. Fat二進制文件拆分:
上面說到Fat二進制文件,是指該.a文件是個集合文件,支持多種cpu架構,我們可以用命令將此胖二進制文件進行拆分:**
步驟如下:
將.a文件放到桌面,打開終端,cd到桌面,執(zhí)行
$ lipo libUMessage_Sdk_1.5.0a.a -thin arm64 -output UM_ARM64_SDK.a
$ lipo libUMessage_Sdk_1.5.0a.a -thin x86_64 -output UM_X86_64_SDK.a
執(zhí)行完成在桌面可以看到UM_ARM64_SDK.a 和UM_X86_64_SDK兩個.a文件.
2. 查看拆分結果:
使用MachOView打開拆分前后的.a文件,對比可以看出已經(jīng)將ARM64的可執(zhí)行文件拆開了,同樣其他架構的也可以拆出來:
從下圖可以看出拆開的二進制文件內(nèi)容并不會發(fā)生變化:
3.將多個單架構二進制文件合并成為Fat二進制文件
$ lipo -create UM_ARM64_SDK.a UM_X86_64_SDK.a -output test.a