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

相关文章
相关标签/搜索