美文网首页iOS收藏iOS进阶之路iOS精英班
【审核篇】iOS 使用 symbolicatecrash解析cr

【审核篇】iOS 使用 symbolicatecrash解析cr

作者: methodname | 来源:发表于2016-11-25 12:21 被阅读2468次

最近频繁的在向Appstore提交新版本,在连续同样的问题被拒了3次了,而根据苹果给出的crash log,当你点开iTuenes Center的解决方法中心也许看到的就是这样

image

大致意思的就是:

嘿~,小哥,你的App里面存在着闪退,crash log已经在下面了,你自己看着办吧,如果有技术上的难题,可以来找我们沟通哦~

然后给了你几个.crash的文件。于是,你鸡冻的点开了crash log去查看

image2

卧槽,卧槽,卧槽!!!!

这特么什么鬼!!!!
完全看不明白,这时候boss又来催了,为什么iOS APP还没上线?你顿时心里的就方了,自己测试的时候根本不知道闪退在哪,看这个东西又找不到具体的问题所在,继续提交肯定是还是会被拒,怎么办,怎么办.......


如果这时候你已经在看这篇文章了,那么恭喜你,淡定一点,不要着急,听我慢慢道来。

首先

你要知道这个crash log本来就不是人可以看懂的东西,那么怎么让自己能看懂呢?【符号化】 使用【symbolicatecrash】这个工具来符号化,这是一个Xcode内置的工具

打开终端输入以下命令查找symbolicatecrash的位置:
    find /Applications/Xcode.app -name symbolicatecrash -type f
image3

这个时候会得到一个文件路径,将这个路径中的symbolicatecrash 复制到你的桌面的crashtemp文件夹中

cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash /Users/你的电脑用户名字/Desktop/crashtemp

然后

把iTuenes Center的解决方案中心.crash文件下载下来,复制到crashtemp文件夹中。


image21

再然后

找到dSYM文件,第一步:Xcode中window-->Organizer


image4

第二步:选择对应的包,右键显示包内容


image5
第三步:进入dSYMs文件夹,将.dSYM文件同样复制到桌面的crashtemp文件夹中
image6

dSYM文件


image7

困惑:

如果这个时候进来发现这个文件夹里面是空的,那么,恭喜你,请点击上面的叉叉吧/(ㄒoㄒ)/~~(开完笑),如果这个文件夹里面是空的话,那么你在上传AppStore的时候,应该是用的Application Loader这个工具上传的,这个东西虽然在网络比较不稳定的情况下比在Xcode中上传要好一些,但是,它并不能为你生成sYSM文件,所以,现在你必须找到提交Appstore时候的版本(论版本控制的重要性),用同一台电脑然后重新打包一个版本,使用Xcode重新上传到Appstore,如下图操作,再UpLoad to App Store。

1)修改一下配置:Build Settings-->搜dsym 选项改为DWARF with dSYM file

2)再进行打包:


image8

这样,如果还没有dSYM文件的话,旁边还有个download dSYMs文件的按钮,点击,可以下载一个dSYM文件,有了所有的文件后,准备工作就算做好了。现在看看桌面的crashtemp文件夹,三个文件已经就位

image9

重点来了:

这时候,打开终端,进入crashtemp文件夹,输入命令:

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer​

然后在输入:

./symbolicatecrash /Users/你的电脑用户名/Desktop/crashtemp/temp.crash /Users/你电脑的用户名/Desktop/carshtemp/xxxx(dSYM文件名字).dSYM > Control_symbol.txt

这个时候crashtemp文件夹中就会多出一个.txt的文本文件

image10

打开查看:


image11

这个时候可以看到,里面的信息至少是我们可以看得懂的了,这样就能准确的找到App crash的问题所在了

总结

1、找到 symbolicatecrash
2、下载iTunes centercrash log文件
3、获取到dSYM文件
4、三个文件放一个文件夹里面,输入命令进行crash log符号化,得到符号化后的文件
5、查看符号化的后crash log文件,找到准确的问题所在

注意:

版本,版本,版本,Archive的包,如果是上传到Appstore了的,一定要记得备份,如果被误删掉了,或者使用Application Loader上传的Appstore ,那么记得拿到上传这个版本时的源码更改一下版本重新打包,使用Xcode重新上传一次,还有必须得在同一台电脑上面。

最后,还是祝愿大家能够顺利通过审核,最好不要有用到这个东西的时候,毕竟每一次上线,都是一个漫长的等待过程,能在上线前,多测测,把这个概率降到最低是最好不过的了。(而我,根本就没有测试。。。)

END

相关文章

网友评论

  • 水中的蓝天:xxx.app.dSYM 这样可以吗
    Last login: Fri May 11 10:29:56 on ttys420
    localhost:xxx.app.dSYM zhangyingjie$
  • 咸湿仔灬:你好, 我在执行 ./symbolicatecrash /Users/你的电脑用户名/Desktop/crashtemp/temp.crash /Users/你电脑的用户名/Desktop/carshtemp/xxxx(dSYM文件名字).dSYM > Control_symbol.txt 的时候 他报错说while reading /Users/pengtaikeji/Desktop/crashtemp/temp.crash, No such file or directory : at ./symbolicatecrash line 899. 请问怎么解决呢
  • 37482c6e6c9f:哥哥,你这符号化后的txt文件中,怎么仍然是16进制的函数地址,没有类名.函数名和行数呢
  • methodname:@hhgvg :flushed::flushed::flushed:抱歉,看了一下,确实有这个问题
  • hhgvg:这个楼主说的是个坑 那个路径在./symbolicatecrash /Users/你的电脑用户名/Desktop/crashtemp/temp.crash /Users/你电脑的用户名/Desktop/dSYMs/xxxx(dSYM文件名字).dSYM > Control_symbol.txt dSYMs根本没在桌面上 他写进来 害人不浅啊
    methodname:已修正,多谢指出~
  • 逗留:我符号化之后是CrashTest 0x100076a1c _hidden#1_ (__hidden#5_:27),为什么不能定位到文件和行数啊
    逗留:@UnitedStates 哪里少了一个冒号?
    逗留:什么冒号?
    UnitedStates:export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer​" 少了一个冒号?
  • 啊哈哈哈哈哈群:将这个路径中的symbolicatecrash 复制到你的桌面的crashtemp文件夹中。 这个crashtemp 文件是什么文件夹啊 symbolicatecrash根本复制不了
    hhgvg:这个路径复制到crashtemp文件夹里面去 是建立一个文本放进去这个路径吗
    啊哈哈哈哈哈群:@liukun 苹果给的崩溃日志是text文件 放不进去文件夹啊
    1136ff3acb56:自己在桌面新建一个文件夹,名字叫crashtemp,然后把symbolicatecrash和crashlog文件复制过去
  • 布袋的世界:看到这篇文章 偶已经方了
    methodname:@apiapia why?:fearful:

本文标题:【审核篇】iOS 使用 symbolicatecrash解析cr

本文链接:https://www.haomeiwen.com/subject/dynipttx.html