ios 开发中,对静态库 .a,.framework的一点思考

1,最近在做项目代码优化,为减少最终输出的ipa包的大小,遇到这个疑虑:

第三方提供的静态库 .a .framework 是多架构支持的 包括x86_86、i386、arm64、armv7、armv7s,

如腾讯提供的 TencentOpenAPI.framework

其中 TencentOpenAPI 7.1MB ,通过file命令  输出如下

疑虑来了  x86_86、i386 这些符号 是否会合成到最最终生成的可执行文件中呢?

答案是 NO

下面做个验证

(1)做了个静态库

(2)建个demo app 使用libMyOscarLib.a

  (3) archive打包 分析 可执行文件

xcode6 默认配置,archive输出 这个app 是2中架构的 armv7 arm64; 在上面通过otool -o 输出信息中 可发现 2个 functionTest 的MetaClass

这样想来,在生成的可执行文件中,是每一种架构 对应 相应的符号表!? 继续验证

配置xcode

otool -o 分析可执行文件 结果只发现一个 functionTest 的MetaClass

 疑虑迎刃而解,作如下结论

第三方提供的静态库 .a .framework 是多架构支持的 包括x86_86、i386、arm64、armv7、armv7s,

最终输出app 的架构 决定copy 第三方提供的静态库 .a .framework 哪个架构符号 进入可执行文件

在生成的可执行文件中,是每一种架构 对应 相应的符号表

参考链接

中科大移动云计算系统实验室 http://www.mc2lab.com/?p=68

http://blog.jobbole.com/58814/  使用class-dump-z分析支付宝app

原文地址:https://www.cnblogs.com/xzoscar/p/4923242.html