美文网首页
【转-RBNote】App审核被拒--解析苹果审核反馈的奔溃日志

【转-RBNote】App审核被拒--解析苹果审核反馈的奔溃日志

作者: leonStep | 来源:发表于2018-10-25 10:08 被阅读0次

本文转自https://www.jianshu.com/p/fbca51e3f561

一、背景 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文件

准备工作:

第一个是.dSYM文件(debug System) ,

第二个是苹果审核给你的crashlog.crash(需要将.txt后缀强制改为.crash后缀)

第三个是Xcode自带的 symbolicatecrash 工具

步骤:

在桌面新建一个AppCrash文件夹

右键下载crashlog-713FFD98-89E3-43EB-8834-4A93E425D100.txt,然后强制将.txt改为 .crash。eg:重新命名为crashlog.crash. 放入AppCrash文件夹中

获取 .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 -typef

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

准备工作完成,此时 AppCrash文件夹应该有三个文件

5.准备工作完成.png

终端敲命令

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"isnotdefined at ./symbolicatecrash line69.

就输入下面的这行代码

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

exportDEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

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

xcrun: error: missing DEVELOPER_DIR path: Applications/Xcode.app/Contents/DeveloperError: 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 = [[NSUserDefaultsstandardUserDefaults] objectForKey:@"AppleLanguages"];

设备iOS版本结果

5s11.2.5(15D60)"zh-Hans-CN"

6p11.2.5(15D60)"zh-Hans-US" ,  "en-US"

610.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.苹果审核给的奔溃日志

相关文章

网友评论

      本文标题:【转-RBNote】App审核被拒--解析苹果审核反馈的奔溃日志

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