最近在向App Store上传App的时候被拒了,理由如下:
Guideline 2.1 - Performance - App Completeness
We were unable to review your app as it crashed on launch. We have attached detailed crash logs to help troubleshoot this issue.
Next Steps
To resolve this issue, please revise your app and test it on a device to ensure it will launch without crashing.
Resources
For information on how to symbolicate and read a crash log, please review Tech Note TN2151 Understanding and Analyzing Application Crash Reports.
看报错返回的日志,一开始以为是IPv6的问题。但是在拒绝理由中,并没有IPv6的字眼,而且在开发测试的时候,也并没有发现App启动的时候出现Crash。所以重要的线索就集中在了被拒邮件中的txt附件文件了。
屏幕快照 2018-03-02 下午1.53.36.png
我们可以右键点击txt文件,将其下载到桌面上。
屏幕快照 2018-03-02 下午5.40.07.png
但是当我们打开的时候,却发现全是二进制流,根本看不懂:
屏幕快照 2018-03-02 下午5.41.27.png
下面我们就需要对txt文件进行可视化,方便我们对BUG的调试。
1.我们首先在桌面创建一个文件夹,起名Crash 屏幕快照 2018-03-02 下午5.43.59.png
2.我们找到上架AppStore的包中的.dsym文件。
点击Xcode->Windows->organzier 找到你上架时的包。
屏幕快照 2018-03-02 下午5.47.30.png屏幕快照 2018-03-02 下午5.49.22.png
右键点击你的包,选择showInFinder
屏幕快照 2018-03-02 下午5.50.35.png
找到包名字之后,右键点击显示包内容
屏幕快照 2018-03-02 下午5.51.18.png
然后找到dsyms文件夹,双击进去,将里面的.dsym文件拉去到我们的Crash文件夹中 屏幕快照 2018-03-02 下午5.52.30.png
3.找到symbolicatecrash工具
根据以下目录可以找到symbolicatecrash工具: /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash。 注意Xcode.app是你的Xocde名字,假如你的Xcode名字叫Xcode8.0的话,就应该写成Xcode8.0.app。找到symbolicatecrash工具之后,将其拷贝到我们的Crash文件夹中。
4.生成可视化.log文件
<1>打开终端,cd到你刚才创建的Crash文件夹。
cd /Users/apple/Desktop/Crash
<2>输入以下命令,来创建.log文件。
./symbolicatecrash /Users/apple/Desktop/crashlog-FC6BB5BA9B69.txt /Users/apple/Desktop/Crash/HengShuaTest.app.dSYM >mrCrash.log
注意:/Users/apple/Desktop/crashlog-FC6BB5BA9B69.txt 是你的txt文件路径 。/Users/apple/Desktop/Crash/HengShuaTest.app.dSYM是你的.dSYM文件路径,mrCrash.log是你要生成的.log文件。
然后可能会出现累类似以下提示:
Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.
如果出现以上提示,则输入以下命令:
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
注意:Xcode.app中的Xcode仍然是你的Xcode名字。
如果没有出现以上提示,则直接忽略。
最后重复输入该命令:
./symbolicatecrash /Users/apple/Desktop/crashlog-FC6BB5BA9B69.txt /Users/apple/Desktop/Crash/HengShuaTest.app.dSYM >mrCrash.log
最后骚等几秒钟,你的.log文件已经在Crash文件夹下面了。是不是发现已经转化好了,那样就可以根据报错信息进行调试了。
屏幕快照 2018-03-02 下午6.11.50.png
4.最后附上Crash日志中的一些相关信息:
<1>App Store的审核版本,系统等信息
Incident Identifier: F3573A...E2F244A //crash的id
CrashReporter Key: cc2298...es77eeb //crash的设备id
Hardware Model: iPhone7,2 //手机型号
Process: [AppName] [1816] //APP的名字[进程的id]
Path: /private/.../Application... //APP的位置
Identifier: com.... //bundle ID
Version: 14 (2.3.5) //版本号
Code Type: ARM-64 (Native) //app的应用架构之类不大清楚,^_^
Parent Process: launchd [1]
Date/Time: 2015-10-26 15:03:29.29 +0800 //crash发生时间
Launch Time: 2015-10-26 14:58:28.28 +0800 //进入应用时间
OS Version: iOS 11.2.6 (13B143) //iOS版本
Report Version: 105
<2>异常报错信息
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
<3>回溯信息
Application Specific Information:
abort() called
Filtered syslog:
None found
Last Exception Backtrace:
0 CoreFoundation 0x18430f164 __exceptionPreprocess + 124
1 libobjc.A.dylib 0x183558528 objc_exception_throw + 55
2 CoreFoundation 0x18430f038 +[NSException raise:format:arguments:] + 103
3 Foundation 0x184ca97f4 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 111
4 UIKit 0x18e384fa8 -[UICollectionViewFlowLayout _getSizingInfosWithExistingSizingDictionary:] + 3303
5 UIKit 0x18e38640c -[UICollectionViewFlowLayout _fetchItemsInfoForRect:] + 143
6 UIKit 0x18da25090 -[UICollectionViewFlowLayout prepareLayout] + 227
7 UIKit 0x18d924cfc -[UICollectionViewData _prepareToLoadData] + 159
8 UIKit 0x18d924314 -[UICollectionViewData validateLayoutInRect:] + 103
9 UIKit 0x18d923cc8 -[UICollectionView layoutSubviews] + 259
10 UIKit 0x18d8c6e18 -[UIView+ 52760 (CALayerDelegate) layoutSublayersOfLayer:] + 1275
11 QuartzCore 0x188353948 -[CALayer layoutSublayers] + 183
12 QuartzCore 0x188357ad0 CA::Layer::layout_if_needed+ 1206992 (CA::Transaction*) + 331
13 QuartzCore 0x1882c431c CA::Context::commit_transaction+ 602908 (CA::Transaction*) + 335
14 QuartzCore 0x1882ebb40 CA::Transaction::commit+ 764736 () + 539
15 UIKit 0x18db42b6c __34-[UIApplication _firstCommitBlock]_block_invoke_2 + 139
16 CoreFoundation 0x1842b7590 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 19
17 CoreFoundation 0x1842b6e60 __CFRunLoopDoBlocks + 287
18 CoreFoundation 0x1842b4b70 __CFRunLoopRun + 1067
19 CoreFoundation 0x1841d4c58 CFRunLoopRunSpecific + 435
20 GraphicsServices 0x186080f84 GSEventRunModal + 99
基本上App Store返回的Crash日志可视化就是这些流程,如果有更好的办法,欢迎小伙伴们留言啊!
网友评论