iOS发布版设置


1 前言

有时crash log在xcode中,看不到crash的调用堆栈,只有些十六进制,下面是解决的参考方法。

2 先查看symbolicate工具环境设置

步骤一:

在“终端”中,使用如下工具查看symbolicate工具是否出问题了,命令后接crash log文件。

/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash

如果输出Developer3什么的,(假设你使用的Xcode目录是Developer),则表明你装了多个Xcode,Xcode路径找的不对,使用如下命令彻底卸载Developer3:

sudo /Developer3/Library/uninstall-devtools -mode=all

然后输入“xcode-select -switch /Developer”选择Developer这个目录。

步骤二:

重复步骤一,查看输出,如果在symbolicate系统库出问题,则将如下目录删除:

/Users/peterdou/Library/Developer/Xcode/iOS DeviceSupport/5.0.1 (9A405)

以后比方说插上手机,该目录会重新生成。

步骤三:

重复步骤一,如果觉得应该有symbol输出但依然看不到,则说明对应的xcarchive没找到。

可尝试如下“终端”命令:

mdimport ~/Library/Developer/Xcode/Archives/ 使得spotlight可以找到。

以上完事后,依然不行,则尝试下面build setting。

Ps:有可能编译时出现libxml什么的找不到情况,将Build setting中的属性做如下修改:

3 再看project build setting

涉及到debug symbols的一些setting项如下:

1)  Generate Debug Symbols

2)  Strip Debug Symbols During Dopy

3)  Symbols Hidden by Default

3.1 setting项官方文档解释

3.2 实验一:以某一设置为标准,做三次尝试,依次改了某一项,比较生成的包,结果是:

设置项

生成文件结果的影响

Generate Debug Symbols

影响是否生成dSYM文件

Strip Debug Symbols During Dopy

此值无论YES、NO,生成的dSYM和app大小都不变。

 

Symbols Hidden by Default

此值为YES时生成的app包稍微变小。

 

 

3.3  实验二:哪些值影响symbol的显示。

由实验一可知,Generate Debug Symbols必须为YES,下面测试其他两项:

设置项

Symbol是否显示

Generate Debug Symbols

YES

显示

Strip Debug Symbols During Dopy

任何值

Symbols Hidden by Default

任何值

结论:影响symbol显示的,只有Generate Debug Symbols因素。

4 总结

要想看到symbol,必须:

1)  外部环境设置对;

2)  Generate Debug Symbol设YES;

查看log前,必须用“终端”命令mdimport ~/Library/Developer/Xcode/Archives/ 使得spotlight可以找到dSYM文件。



从Release配置copy出来一个Deployment配置,设置如下:

优化编译设置,并调试程序

Generate Debug Symbols YES  默认有

Strip Linked Product YES 默认有           (但是必须设置Deployment Postprocessing YES 才生效)

Deployment Postprocessing YES 默认没有

Debug Information Format DWARF with dSYM File默认没有


最后加上


Use Separate Strip YES 默认没有

Strip Debug Symbols During Copy NO 默认为YES 要改


Debug只编译对应版本以节省编译时间:$(NATIVE_ARCH)

发布版本的配置还要加上:Preprocessor Macros 设置:__DEPLOYMENT




你可能感兴趣的:(ios应用开发)