美文网首页
App审核被拒--解析苹果审核反馈的奔溃日志.txt / .cr

App审核被拒--解析苹果审核反馈的奔溃日志.txt / .cr

作者: RBNote | 来源:发表于2018-02-27 19:40 被阅读814次

一、背景 Xcode9.2

本地怎么测试都OK,App审核传一次拒一次,说什么"crashed on launch"。App审核被拒,就给了三个crash文件和 一个链接Technical Note TN2151
Understanding and Analyzing Application Crash Reports

ylmb.png 1.一启动就crash被拒.png 2.crashlog.png

二、符号化苹果审核给的crash文件

准备工作:

    1. 第一个是.dSYM文件(debug System) ,
    1. 第二个是苹果审核给你的crashlog.crash(需要将.txt后缀强制改为.crash后缀)
    1. 第三个是Xcode自带的 symbolicatecrash 工具

步骤:

    1. 在桌面新建一个AppCrash文件夹
    1. 右键下载crashlog-713FFD98-89E3-43EB-8834-4A93E425D100.txt,然后强制将.txt改为 .crash。eg:重新命名为crashlog.crash. 放入AppCrash文件夹中
    1. 获取 .dSYM文件, 先.Xcode --》Window--》Organizer 显示所有打包的Archives--》选着一个archives右键---》Show in Finder--->进入 . xcarchive文件 ;再 右键'显示包内容' ---》复制 .dSYM文件到步骤一中创建的文件夹中。


      3-1.显示所有打包的Archives.png
[图片上传中...(3.显示所有打包的Archives.png-54f6ed-1519728242953-0)] 3-3按住option见拖拽.dSYM文件到桌面.png
  • 4 . 获取 Xcode自带symbolicatecrash 工具。
    方式一:终端命令获取
终端命令获取文件路径,有点慢,选中Finde图标---》
右键前往文件夹----》按住alt键复制一份到桌面。
 find /Applications/Xcode.app -name symbolicatecrash -type f 
4-1获取symbolicatecrash文件路径.png 4-2前往文件夹.png 4-3复制一份到桌面.png

方式二:直接按照这个文件路径去找:应用程序--》Xcode--》显示包内容
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

4-4按照路径找.png
    1. 准备工作完成,此时 AppCrash文件夹应该有三个文件 5.准备工作完成.png
    1. 终端敲命令
    • 6-1 cd 进入文件路径


      6-1cd进入文件路径.png
    • 6-2 符号化奔溃日志。

记得中间要有空格
./symbolicatecrash crashlog.crash KISSLOCK.app.dSYM > symbol.crash

或者 
./symbolicatecrash ./crashlog.crash ./KISSLOCK.app.dSYM > symbol.crash
  • 6-3 如果上述命令出现如下报错
 Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.

就输入下面的这行代码
感谢wMellon指出问题. 很棒,指出一点:export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer",Applications前面要加/,否则设置无效,自然也就一直报错了. 已修改。

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

如果还报错 就把symbolicatecrash这个工具删了,重新复制一遍 symbolicatecrash 前前后后尝试了20多次,就成功了一次,现在在,有不行了。

xcrun: error: missing DEVELOPER_DIR path: Applications/Xcode.app/Contents/Developer
Error: can't find tool named 'otool' in the macosx SDK or any fallback SDKs at ./symbolicatecrash line 122.

如果不报错,就接着执行这行命令,之后可以到桌面上的这个文件夹 AppCrash查看符号化的奔溃日志 : symbol.crash

./symbolicatecrash ./crashlog.crash ./KISSLOCK.app.dSYM > symbol.crash
6-5 更正 少写一个斜杠.png
  • 7 .符号化的的结果,如果运气好走到这一步


    7-1执行命令成功.png
7-2定位bug

三、填坑

项目中做了国际化,还用了富文本,不同设备,不同iOS系统获取系统语言返回的返回的结果不一样,以前是zh-Hans-US 这样,现在是 zh-Hans-CN这样的。判断出问题了,富文本截取的时候越界,导致一启动就奔溃。
不同手机,不同系统得到的结果不一样的,这也就是为什么本地怎么测都是好的,一传上去就被拒绝:crashed on launch。

获取系统语言数组
  NSArray *laguageArr = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
设备 iOS版本 结果
5s 11.2.5(15D60) "zh-Hans-CN"
6p 11.2.5(15D60) "zh-Hans-US" , "en-US"
6 10.3.2(14F89) Xcode9.2 无法真机调试

用6p升级到11.2.5系统,确实是一启动就闪退。改代码,重新上传。填了一个坑,又来了一个坑,继续被拒。

根据符号化的奔溃日志定位bug.png 填坑2定位bug.png 填坑2最新系统国际化字段有变.png

本地打全局断点调试,奔溃信息和苹果反馈的奔溃日志和符号化的奔溃日志对比着看下,有些地方很相识。


填坑3 本地调试.png

四:参考链接

1.符号化奔溃日志
2.解析苹果审核反馈的奔溃日志.txt / .crash 文件
3.Understanding and Analyzing Application Crash Reports 建议看一遍(帮助不大,但是有用)
4.苹果审核给的奔溃日志

相关文章

网友评论

      本文标题:App审核被拒--解析苹果审核反馈的奔溃日志.txt / .cr

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