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