我已经在app商店有这个应用程序。我发布了一些更新版本。这个应用程序使用CoreData进行数据持久化。我在应用程序商店发布它之前测试了它的新版本,它按需要运行。但是在提交应用程序商店并从那里更新后,应用程序在每次启动后都会崩溃。我有崩溃报告,但这对我没有任何意义。我在CoreData中没有改变任何东西。 启动后,这个应用程序显示一个UITableView,这个tableView从CoreData获取数据。
这是崩溃报告。
Incident Identifier: 7A9713FF-40CB-45E0-961F-F4D1B003F2B5
CrashReporter Key: 891c38a57639ab8e2bcc3012687292ce9aa818f5
Hardware Model: iPhone6,2
Process: APPName [7461]
Path: /var/mobile/Applications/A9028B70-0878-40FA-944B-584B15E49B69/APPName.app/APPName
Identifier: co.identifier.app
Version: 2.5 (2.5)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2014-03-13 09:39:17.309 +0000
OS Version: iOS 7.0.6 (11B651)
Report Version: 104
Exception Type: 00000020
Exception Codes: 0x000000008badf00d
Highlighted Thread: 0
Application Specific Information:
co.identifier.app failed to launch in time
Elapsed total CPU time (seconds): 1.660 (user 1.660, system 0.000), 4% CPU
Elapsed application CPU time (seconds): 0.304, 1% CPU
Thread 0:
0 libsystem_kernel.dylib 0x3a161fa8 __psynch_mutexwait + 24
1 libsystem_pthread.dylib 0x3a1c6f4d _pthread_mutex_lock + 305
2 CoreData 0x2f595a91 -[_PFLock lock] + 21
3 CoreData 0x2f5a6b35 -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 777
4 CoreData 0x2f5a5777 -[NSManagedObjectContext executeFetchRequest:error:] + 611
5 APPName 0x000ecc11 +[DataManager dataEntryEntity:] (DataManager.m:385)
6 APPName 0x000ebca9 +[DataManager dataForDateKey:] (DataManager.m:126)
7 APPName 0x000cff9d -[CalendarCell setDateKey:] (CalendarCell.m:820)
8 APPName 0x000bd969 -[CalendarViewController tableView:cellForRowAtIndexPath:] (CalendarViewController.m:832)
9 UIKit 0x32108311 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:] + 405
10 UIKit 0x320b06c9 -[UITableView _updateVisibleCellsNow:] + 1797
11 UIKit 0x320afeed -[UITableView layoutSubviews] + 181
12 UIKit 0x31fd634f -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 343
13 QuartzCore 0x31c5c93f -[CALayer layoutSublayers] + 139
14 QuartzCore 0x31c58163 CA::Layer::layout_if_needed(CA::Transaction*) + 347
15 QuartzCore 0x31c57ff5 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 13
16 QuartzCore 0x31c57a09 CA::Context::commit_transaction(CA::Transaction*) + 225
17 QuartzCore 0x31c5781b CA::Transaction::commit() + 311
18 UIKit 0x32055a37 -[UIApplication _reportAppLaunchFinished] + 39
19 UIKit 0x32040edb -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 1643
20 UIKit 0x31fdba03 -[UIApplication handleEvent:withNewEvent:] + 3139
21 UIKit 0x31fdacf9 -[UIApplication sendEvent:] + 69
22 UIKit 0x3204031d _UIApplicationHandleEvent + 661
23 GraphicsServices 0x344ba76b _PurpleEventCallback + 607
24 GraphicsServices 0x344ba353 PurpleEventCallback + 31
25 CoreFoundation 0x2f81c775 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 33
26 CoreFoundation 0x2f81c70f __CFRunLoopDoSource1 + 343
27 CoreFoundation 0x2f81aedb __CFRunLoopRun + 1403
28 CoreFoundation 0x2f78546d CFRunLoopRunSpecific + 521
29 CoreFoundation 0x2f78524f CFRunLoopRunInMode + 103
30 UIKit 0x3203f5bf -[UIApplication _run] + 759
31 UIKit 0x3203a841 UIApplicationMain + 1133
32 APPName 0x000b6ba7 main (main.m:11)
33 libdyld.dylib 0x3a0abab5 start + 1
这次崩溃是在每个更新应用程序的设备上产生的,这不会在模拟器测试或通过testFlight发布测试构建中再现。
答案 0 :(得分:1)
正如菲利普在评论中所说,造成这次事故的原因是监管机构
如果您的应用程序长时间停留在方法-applicationDidFinishLauchingWithOptions:
中,系统会将其杀死
原因是你可能在这个方法的主线程上做了一个昂贵的时间任务,可能是迁移,复制或删除大量文件。
您从未体验过测试,因为可能您使用了少量数据,或者因为在调试模式下看门狗没有活动(不确定)。
不幸的是我认为你应该尽快发布另一个版本来修复它,解决方案可能是在后台线程上启动那些长时间运行的任务。
为了防止这些问题,请务必在发布之前尝试使用ad-hoc发行版更新旧版应用程序。
答案 1 :(得分:0)
来自http://www.raywenderlich.com/23704/demystifying-ios-application-crash-logs
以下是一些更常见的异常代码: 0x8badf00d:读作“吃不好的食物”! (如果您眯着眼睛并用字母字符替换数字。:p)此代码表示iOS已终止应用程序,因为发生了监视程序超时。基本上,应用程序花了太长时间才能启动,终止或响应系统事件。
崩溃是因为漫长的等待,导致它的原因是日志中列出的321个任务项中的1个。
我对您在日志中发送事件/处理事件项目感到非常好奇。在启动rootViewController之前,你有没有机会等待什么? ......它可能是核心数据,但如果出现了一些非常错误,我会发现另一个错误发生而不是等待。