应用在发布到商店后,线上的代码我们是不能直接的操作了,这点并不想web那么方便。如果应用在线上出现了bug,你如程序crash了,我们该如何发现,并在下次升级时针对问题的根源做出解决呢?
线上
第一步:1、首先要找到上传到appStore 的api文件:在xcode 导航栏的window -Organiaer (如图:)
2、选中你提交审核的api包,右键Show in Finder;
3、就看见了你Archive的文件包,打开终端把文件拖入终端,会出现其路径,然后在后面拼接“dSYMs”,然后cd 到拼接好的路径下,'ls'查看内容会得到你的app名称:“xxx.app.dSYM”
然后再把得到的“xxx.app.dSYM”(‘xxx’是你自己的项目名称)拼接到之前的路径后面,下面会用到!如图:
第二部:1、我们要先找到在友盟的错误分析里的错误日志:
2、点击一处错地址(划红圈的)会显示出一串命令:复制红色下划线的命令:
‘dwarfdump --arch=arm64 --lookup0x100020abc’
第三部:打开终端,把第二步 得到的命令和第一步得到的路径 拼接起来,然后回车 :
就会出现下面一坨数据,包括报错的类名,以及报错的方法,还有定位到了具体哪一行:
注:要确保友盟中 dSYM UUID 与 “xcarchive”文件的UUID一致!否则啥都不会显示!
如何查看‘xcarchive’文件的UUID ?
cd 到 xcarchive 文件下,然后用 ‘dwarfdump --uuid xxxx.app.dSYM’ 命令 就能看见 两行UUID(xxxx是你自己的应用名)
对比友盟错误信息中的UUID,如果没有与其对应的,那应该就是选择的‘xcarchive’文件不对。
或者自己找到.xcarchive文件和错误内存地址(友盟错误详情里标绿色的为错误内存地址)。然后通过一个小应用来分析出对应的函数。应用下载地址,具体可参考文章dSYM 文件分析工具