当前位置:   article > 正文

iOS编译优化_deployment postprocessing

deployment postprocessing

Xcode常见配置

生成LinkMap文件

Project->Build Settings->Write Link Map File为YES,并设置Path to Link Map File

Generate Debug Symbols

Generate Debug Symbols 是否产生调试符号,肯定要为YES。
当每个源文件编译成.o的时候,多了-g -gmodules 两项。
Generate Debug Symbols 当设置为NO的时候,在Xcode中断点不会中断,但是在程序中打印[NSThread callStackSymbols]可以看到方法和类名。

Debug Information Level

有两个选项 Compiler default Line tables only

Strip Style

All Symbols (-s) 移除符号表和重定位信息
Non-Global Symbols (-x) 移除非全局符号,保留外部符号
Debugging Symbols (-S) 移除调试符号,保存本地和全局符号。

DEPLOYMENT_POSTPROCESSING (Deployment Postprocessing)

是否开启后期处理。
但是要 STRIP_INSTALLED_PRODUCT (Strip Linked Product)开启: 指定是否去除二进制文件的符号信息。

STRIP_STYLE (Strip Style)
all: Strips the binary completely, removing the symbol table and relocation information. 去除所有信息
non-global: Strips nonglobal symbols but saves external symbols.	保留外部符号
debugging: Strips debugging symbols but saves local and global symbols. 保留本地和全局符号
  • 1
  • 2
  • 3

编译静态库隐藏符号

Strip Style 使用Non-Global Symbols
Perform Single-Object Prelink : YES
strip -r -S -x libSAKGuard.a
Optimization Level : -O0
Deployment Postprocessing: YES

strip:
-r      Save all symbols referenced dynamically.
-S     Remove the debugging symbol table entries (those created by the -g option to cc(1) and other compilers).
-x     Remove all local symbols (saving only global symbols).
  • 1
  • 2
  • 3
  • 4

编译优化

1、BuildSettings->Optimization Level,Xcode默认设置为“Fastest ,Smallest”。
2、Build Settings-> Linking->Dead Code Stripping 设置成 YES,去除没有使用的代码。
3、Deployment Postprocessing 设置成YES, Strip Linked Product 设置成YES。
Deployment Postprocessing DEBUG下设为NO,RELEASE下设为YES
5、工程的Enable C++ Exceptions和Enable Objective-C Exceptions选项都设置为NO。手动管理异常。
6、symbols hidden by default选项设置为YES。
7、所有没有使用C++动态特性的lib库(搜索工程没有使用dynamic_cast关键字) Enable C++ Runtime Types 选项设置为NO。

ref:
https://www.jianshu.com/p/11710e7ab661 Xcode中和symbols有关的几个设置
https://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207986417&idx=1&sn=77ea7d8e4f8ab7b59111e78c86ccfe66&3rd=MzA3MDU4NTYzMw==&scene=6#rd iOS微信安装包瘦身
https://developer.apple.com/library/archive/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html#//apple_ref/doc/uid/TP40003931-CH3-DontLinkElementID_233 官方文档
https://mp.weixin.qq.com/s/-wgBhE11xEXDS7Hqgq3FjA 微信编译优化 clang -ftrace

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/224425
推荐阅读
相关标签
  

闽ICP备14008679号