美文网首页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