1,最近在作項目代碼優化,爲減小最終輸出的ipa包的大小,遇到這個疑慮:xcode
第三方提供的靜態庫 .a .framework 是多架構支持的 包括x86_8六、i38六、arm6四、armv七、armv7s,架構
如騰訊提供的 TencentOpenAPI.frameworkapp
其中 TencentOpenAPI 7.1MB ,經過file命令 輸出以下優化
疑慮來了 x86_8六、i386 這些符號 是否會合成到最最終生成的可執行文件中呢?雲計算
答案是 NOspa
下面作個驗證code
(1)作了個靜態庫 blog
(2)建個demo app 使用libMyOscarLib.aip
(3) archive打包 分析 可執行文件支付寶
xcode6 默認配置,archive輸出 這個app 是2中架構的 armv7 arm64; 在上面經過otool -o 輸出信息中 可發現 2個 functionTest 的MetaClass
這樣想來,在生成的可執行文件中,是每一種架構 對應 相應的符號表!? 繼續驗證
配置xcode
otool -o 分析可執行文件 結果只發現一個 functionTest 的MetaClass
疑慮迎刃而解,做以下結論
‘
第三方提供的靜態庫 .a .framework 是多架構支持的 包括x86_8六、i38六、arm6四、armv七、armv7s,
最終輸出app 的架構 決定copy 第三方提供的靜態庫 .a .framework 哪一個架構符號 進入可執行文件
在生成的可執行文件中,是每一種架構 對應 相應的符號表
’
參考連接
中科大移動雲計算系統實驗室 http://www.mc2lab.com/?p=68
http://blog.jobbole.com/58814/ 使用class-dump-z分析支付寶app