ios 開發中,對靜態庫 .a,.framework的一點思考

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

相關文章
相關標籤/搜索