【问题标题】:Apple rejected my app due to crash on load and I can't reproduce it. What should I do?由于加载时崩溃,Apple 拒绝了我的应用程序,我无法重现它。我该怎么办?
【发布时间】:2014-08-11 09:51:17
【问题描述】:

我的应用在启动时因崩溃而被拒绝。但是尝试通过iTunes和testflight安装应用程序在设备上运行它,我还在我的应用程序中实现了crashlytics,但我仍然找不到崩溃的根源。我该怎么办?

我们发现您的应用在启动时崩溃,因此我们无法对其进行审核。

请修改您的应用并在设备上进行测试,以确保它可以 在没有崩溃的情况下启动,并且它按预期运行,之前 重新提交。

请查看随附的崩溃日志。

对于离散代码级别的问题,您不妨咨询 Apple 开发者技术支持。如果您有崩溃日志,请用符号表示 联系 Apple 开发者技术支持之前的崩溃日志。

如果您无法重现此问题,请尝试测试 使用 Xcode 的存档测试工作流程中描述的工作流程 功能。

编辑: 我试图用符号表示崩溃日志,我看到它在线程 0 索引 0 上崩溃,这是 getAllContacts 函数。我不确定有什么问题。这是代码:

- (NSMutableArray *)getAllContacts{
    ABAddressBookRef addressBook = ABAddressBookCreate( );
    CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople( addressBook );
    CFIndex nPeople = ABAddressBookGetPersonCount( addressBook );
    NSMutableArray *contact = [[NSMutableArray alloc] init];

    for ( int i = 0; i < nPeople; i++ )
    {
        ABRecordRef ref = CFArrayGetValueAtIndex( allPeople, i );
        NSString *firstName = CFBridgingRelease(ABRecordCopyValue(ref, kABPersonFirstNameProperty));
        NSString *lastName = CFBridgingRelease(ABRecordCopyValue(ref, kABPersonLastNameProperty));

        if(lastName == nil && firstName != nil){
            [contact addObject:[NSString stringWithFormat:@"%@", firstName]];
        }
        else if(lastName != nil && firstName == nil){
            [contact addObject:[NSString stringWithFormat:@"%@", lastName]];
        }
        else{
            [contact addObject:[NSString stringWithFormat:@"%@ %@", firstName, lastName]];
        }
    }
    CFRelease(addressBook);
    CFRelease(allPeople);
    NSLog(@"All Contacts: %@", contact);
    return contact;
}

这是符号化后的崩溃日志:

{"bundleID":"com.axon.undotext","app_name":"Undo Text","bug_type":"109","name":"Undo Text","os_version":"iPhone OS 7.1.1 (11D201)","version":"1.5 (1.0)"}
Incident Identifier: CDEE9887-DE46-4C7B-93D9-6F5B64C30448
CrashReporter Key:   814350e202fe6bd49117983388396d3d1b870da1
Hardware Model:      xxx
Process:             Undo Text [3268]
Path:                /var/mobile/Applications/1F7938ED-7911-4838-8F79-26039EF3E386/Undo Text.app/Undo Text
Identifier:          com.axon.undotext
Version:             1.5 (1.0)
Code Type:           ARM (Native)
Parent Process:      launchd [1]

Date/Time:           2014-06-12 13:43:03.567 -0700
OS Version:          iOS 7.1.1 (11D201)
Report Version:      104

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000000000defe
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   CoreFoundation                  0x2eb0b3c5 CFRelease + 1137
1   Undo Text                       0x00035897 -[ContactsManager getAllContacts] (ContactsManager.m:58)
2   Undo Text                       0x00028d59 -[ViewController setupView] (ViewController.m:123)
3   Undo Text                       0x00028901 -[ViewController viewDidLoad] (ViewController.m:65)
4   UIKit                           0x3140ea4f -[UIViewController loadViewIfRequired] + 515
5   UIKit                           0x3140e80d -[UIViewController view] + 21
6   UIKit                           0x31485c39 -[UIClientRotationContext initWithClient:toOrientation:duration:andWindow:] + 385
7   UIKit                           0x3148459d -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:isRotating:] + 1197
8   UIKit                           0x314840e3 -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:] + 43
9   UIKit                           0x3148406b -[UIWindow _setRotatableViewOrientation:updateStatusBar:duration:force:] + 91
10  UIKit                           0x31484003 -[UIWindow _setRotatableViewOrientation:duration:force:] + 39
11  UIKit                           0x3147c67d __57-[UIWindow _updateToInterfaceOrientation:duration:force:]_block_invoke + 105
12  UIKit                           0x31410695 -[UIWindow _updateToInterfaceOrientation:duration:force:] + 381
13  UIKit                           0x31483d55 -[UIWindow setAutorotates:forceUpdateInterfaceOrientation:] + 693
14  UIKit                           0x31483825 -[UIViewController _tryBecomeRootViewControllerInWindow:] + 157
15  UIKit                           0x31415611 -[UIWindow addRootViewControllerViewIfPossible] + 457
16  UIKit                           0x31412dd5 -[UIWindow _setHidden:forced:] + 301
17  UIKit                           0x3147ca4d -[UIWindow makeKeyAndVisible] + 57
18  UIKit                           0x314796e1 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1817
19  UIKit                           0x31473cc5 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 717
20  UIKit                           0x3140fc93 -[UIApplication handleEvent:withNewEvent:] + 3547
21  UIKit                           0x3140edf5 -[UIApplication sendEvent:] + 69
22  UIKit                           0x31473401 _UIApplicationHandleEvent + 613
23  GraphicsServices                0x33a46b53 _PurpleEventCallback + 607
24  GraphicsServices                0x33a4673b PurpleEventCallback + 31
25  CoreFoundation                  0x2eba5845 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 33
26  CoreFoundation                  0x2eba57df __CFRunLoopDoSource1 + 343
27  CoreFoundation                  0x2eba3fab __CFRunLoopRun + 1403
28  CoreFoundation                  0x2eb0e765 CFRunLoopRunSpecific + 521
29  CoreFoundation                  0x2eb0e547 CFRunLoopRunInMode + 103
30  UIKit                           0x31472627 -[UIApplication _run] + 759
31  UIKit                           0x3146d88d UIApplicationMain + 1133
32  Undo Text                       0x0004deff main (main.m:16)
33  Undo Text                       0x00027764 start + 36

Thread 1 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0   libsystem_kernel.dylib          0x39d52804 kevent64 + 24
1   libdispatch.dylib               0x39ca1051 _dispatch_mgr_invoke + 229
2   libdispatch.dylib               0x39c9b2df _dispatch_mgr_thread + 35

Thread 2:
0   libsystem_kernel.dylib          0x39d65c70 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x39dcac1f _pthread_wqthread + 307
2   libsystem_pthread.dylib         0x39dcaad8 start_wqthread + 4

Thread 3:
0   libsystem_kernel.dylib          0x39d65c70 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x39dcac1f _pthread_wqthread + 307
2   libsystem_pthread.dylib         0x39dcaad8 start_wqthread + 4

Thread 0 crashed with ARM Thread State (32-bit):
    r0: 0x00000000    r1: 0x39f720f8      r2: 0x00000003      r3: 0x00000002
    r4: 0x00000000    r5: 0x16e85070      r6: 0x00000000      r7: 0x00177300
    r8: 0x00000144    r9: 0x3ba52e30     r10: 0x16e69890     r11: 0x31a3841a
    ip: 0x2eb0af55    sp: 0x001772c0      lr: 0x0003589b      pc: 0x2eb0b3c4
  cpsr: 0x60000030

【问题讨论】:

  • 您需要符号化崩溃报告,您将在线程 0 帧 1-3 中看到崩溃发生在您自己的代码中。关于如何符号化崩溃报告有很多关于 SO 的帮助。
  • 嗨,我研究了如何象征崩溃,并在第 1-3 帧中得到了这个(见编辑)。在第 1 帧,它获取所有用户的联系地址簿。我不确定是什么导致了崩溃。

标签: ios objective-c appstore-approval


【解决方案1】:

来自 CFRelease 文档:

如果 cf 为 NULL,这将导致运行时错误和您的应用程序 会崩溃。

您需要检查 addressBook 和 allPeople 以确保他们不会返回为 NULL。 Apple 可能正在使用空地址簿的设备上测试您的应用,该设备返回 NULL,然后被传递给 CFRelease,导致您的应用崩溃。

【讨论】:

  • 还是因为我放多了?我看到这个帖子你可以检查它stackoverflow.com/questions/1209130/…
  • 不,您的版本符合您的分配和副本,这部分看起来不错。
  • 好的。只是检查,因为我有很多其他方法。将听取您的建议并尝试再次提交以供审核。谢谢
【解决方案2】:

看起来您的应用在旋转时崩溃了,您确定您对此进行了正确测试吗? 尤其是在设备处于横向与纵向时启动您的应用。

还有一些可能导致奇怪行为的事情是启动一个设备旋转但方向锁定的应用程序。

并在实际设备上进行测试,而不是在模拟器上进行测试,在极少数情况下您会有不同的行为。

也正如其他人所说,学会符号化,这将为您提供代码崩溃的确切位置。

【讨论】:

  • 我在实际设备上进行了测试。是的,它的方向锁定为纵向模式。所以我不确定发生了什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多