ios app被拒绝,需要帮助确定问题

时间:2014-02-23 06:38:12

标签: ios ipad appstore-approval

Apple今天拒绝了我的应用程序,我试图按照他们发送的崩溃日志,但我找不到崩溃的来源,我在两部手机上测试了我的应用程序: 1- iphone 4 2- iphone 5

我在xcode模拟器上测试过它: 1-IPAD 2-Ipad Retina 3-Ipad Retina(64位)

它适用于所有这些。

这是他们发给我的东西

We found that your app crashed on iPad running iOS 7.0.6, which is not in compliance with the App
Store Review Guidelines.

Your app crashed when we:

1) Start the app on a device
2) The app crashes on launch

This occurred when your app was used: 

- On Wi-Fi 
- On cellular network

这是他们发给我的那个洛杉矶

Incident Identifier: F0618233-A16F-4782-8B79-3A2AE5D8BFF6
CrashReporter Key:   1db6124687c1282286f546adfc3c54dc0d8ed7ce
Hardware Model:      xxx
Process:             taptap [266]
Path:                /var/mobile/Applications/.....
Identifier:          x.x.x
Version:             1.0 (1.0)
Code Type:           ARM (Native)
Parent Process:      launchd [1]

Date/Time:           2014-02-22 14:32:19.271 -0800
OS Version:          iOS 7.0.6 (11B651)
Report Version:      104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread:  0

Last Exception Backtrace:
(0x2d9bff46 0x3819c6aa 0x2d9bfe88 0x2e347a66 0x8c47c 0x2d982114 0x2d8f6252 0x2e2dbc28 0x301b1f52     
0x3019d4c4 0x3013841a 0x3013771c 0x3019cb38 0x325d5708 0x325d52f2 0x2d98a9da 0x2d98a976 0x2d98914a     
0x2d8f3c22 0x2d8f3a06 0x3019bdd4 0x30197044 0x8fde2 0x386a4ab2)

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x3875b1fc __pthread_kill + 8
1   libsystem_pthread.dylib         0x387c4a2e pthread_kill + 54
2   libsystem_c.dylib               0x3870bff8 abort + 72
3   libc++abi.dylib                 0x37a3acd2 abort_message + 70
4   libc++abi.dylib                 0x37a536e0 default_terminate_handler() + 248
5   libobjc.A.dylib                 0x3819c91e _objc_terminate() + 190
6   libc++abi.dylib                 0x37a511c4 std::__terminate(void (*)()) + 76
7   libc++abi.dylib                 0x37a50d28 __cxa_rethrow + 96
8   libobjc.A.dylib                 0x3819c7f2 objc_exception_rethrow + 38
9   CoreFoundation                  0x2d8f3c98 CFRunLoopRunSpecific + 636
10  CoreFoundation                  0x2d8f3a06 CFRunLoopRunInMode + 102
11  UIKit                           0x3019bdd4 -[UIApplication _run] + 756
12  UIKit                           0x30197044 UIApplicationMain + 1132
13  taptap                          0x0008fde2 0x83000 + 52706
14  libdyld.dylib                   0x386a4ab4 start + 0

Thread 1 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0   libsystem_kernel.dylib          0x3874883c kevent64 + 24
1   libdispatch.dylib               0x38689210 _dispatch_mgr_invoke + 228
2   libdispatch.dylib               0x38688f96 _dispatch_mgr_thread$VARIANT$mp + 34

Thread 2:
0   libsystem_kernel.dylib          0x3875bc7c __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x387c1dc6 _pthread_wqthread + 306
2   libsystem_pthread.dylib         0x387c1c80 start_wqthread + 4

Thread 3:
0   libsystem_kernel.dylib          0x3875bc7c __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x387c1dc6 _pthread_wqthread + 306
2   libsystem_pthread.dylib         0x387c1c80 start_wqthread + 4

Thread 4 name:  WebThread
Thread 4:
0   libsystem_kernel.dylib          0x3875afa8 __psynch_mutexwait + 24
1   libsystem_pthread.dylib         0x387c1f0a _pthread_mutex_lock + 302
2   WebCore                         0x35a6f7f0 _WebTryThreadLock(bool) + 104
3   WebCore                         0x35a6f772 WebRunLoopLock(__CFRunLoopObserver*, unsigned long,        
void*) + 42
4   CoreFoundation                  0x2d98b1ca         
__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18
5   CoreFoundation                  0x2d988b6c __CFRunLoopDoObservers + 280
6   CoreFoundation                  0x2d988f7c __CFRunLoopRun + 932
7   CoreFoundation                  0x2d8f3c22 CFRunLoopRunSpecific + 518
8   CoreFoundation                  0x2d8f3a06 CFRunLoopRunInMode + 102
9   WebCore                         0x35a6e266 RunWebThread(void*) + 414
10  libsystem_pthread.dylib         0x387c3c1a _pthread_body + 138
11  libsystem_pthread.dylib         0x387c3b8a _pthread_start + 98
12  libsystem_pthread.dylib         0x387c1c8c thread_start + 4

Thread 5:
0   libsystem_kernel.dylib          0x38748a8c mach_msg_trap + 20
1   libsystem_kernel.dylib          0x38748888 mach_msg + 44
2   CoreFoundation                  0x2d98a7be __CFRunLoopServiceMachPort + 150
3   CoreFoundation                  0x2d988ee4 __CFRunLoopRun + 780
4   CoreFoundation                  0x2d8f3c22 CFRunLoopRunSpecific + 518
5   CoreFoundation                  0x2d8f3a06 CFRunLoopRunInMode + 102
6   libAVFAudio.dylib               0x2c976584 GenericRunLoopThread::Entry(void*) + 124
7   libAVFAudio.dylib               0x2c96a99c CAPThread::Entry(CAPThread*) + 176
8   libsystem_pthread.dylib         0x387c3c1a _pthread_body + 138
9   libsystem_pthread.dylib         0x387c3b8a _pthread_start + 98
10  libsystem_pthread.dylib         0x387c1c8c thread_start + 4

Thread 6:
0   libsystem_kernel.dylib          0x3875bc7c __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x387c1dc6 _pthread_wqthread + 306
2   libsystem_pthread.dylib         0x387c1c80 start_wqthread + 4

Thread 7 name:  com.apple.NSURLConnectionLoader
Thread 7:
0   libsystem_kernel.dylib          0x38748a8c mach_msg_trap + 20
1   libsystem_kernel.dylib          0x38748888 mach_msg + 44
2   CoreFoundation                  0x2d98a7be __CFRunLoopServiceMachPort + 150
3   CoreFoundation                  0x2d988ee4 __CFRunLoopRun + 780
4   CoreFoundation                  0x2d8f3c22 CFRunLoopRunSpecific + 518
5   CoreFoundation                  0x2d8f3a06 CFRunLoopRunInMode + 102
6   Foundation                      0x2e32e2f2 +[NSURLConnection(Loader) _resourceLoadLoop:] + 314
7   Foundation                      0x2e3a3c82 __NSThread__main__ + 1058
8   libsystem_pthread.dylib         0x387c3c1a _pthread_body + 138
9   libsystem_pthread.dylib         0x387c3b8a _pthread_start + 98
10  libsystem_pthread.dylib         0x387c1c8c thread_start + 4

Thread 8 name:  com.apple.CFSocket.private
Thread 8:
0   libsystem_kernel.dylib          0x3875b440 __select + 20
1   CoreFoundation                  0x2d98e680 __CFSocketManager + 480
2   libsystem_pthread.dylib         0x387c3c1a _pthread_body + 138
3   libsystem_pthread.dylib         0x387c3b8a _pthread_start + 98
4   libsystem_pthread.dylib         0x387c1c8c thread_start + 4

Thread 0 crashed with ARM Thread State (32-bit):
    r0: 0x00000000    r1: 0x00000000      r2: 0x00000000      r3: 0x00002060
    r4: 0x00000006    r5: 0x3a60618c      r6: 0x00000000      r7: 0x27d80594
    r8: 0x1451e760    r9: 0x00000001     r10: 0x00000000     r11: 0x403e0000
    ip: 0x00000148    sp: 0x27d80588      lr: 0x387c4a33      pc: 0x3875b1fc
  cpsr: 0x00000010

我怎么能找到这个崩溃日志的原因,谢谢

1 个答案:

答案 0 :(得分:6)

Apple没有在提供的崩溃报告中提供Binary Images部分,因此找出原因是非常困难的。如果没有这些信息,则无法对Last Exception Backtrace进行符号化并更自动地发现。

崩溃的原因绝对是应用程序内部的一个例外,这不是因为应用程序主线程阻塞太长时间,因为在这种情况下报告不会显示Last Exception Backtrace并且看起来非常不同。但是绝不应该在主线程上使用同步网络请求!

那么如何找到有关此异常的更多信息。由于缺少Binary Images并且系统调用的符号已经被符号化,因此很难找到每个系统框架的地址范围。但我们知道应用程序的加载地址,查看以下行:

13  taptap                          0x0008fde2 0x83000 + 52706

因此加载地址为0x83000。现在我们使用Last Exception Backtrace地址并搜索可能属于该应用的地址:

0x2d9bff46 0x3819c6aa 0x2d9bfe88 0x2e347a66 0x8c47c 0x2d982114 0x2d8f6252 0x2e2dbc28 0x301b1f52     
0x3019d4c4 0x3013841a 0x3013771c 0x3019cb38 0x325d5708 0x325d52f2 0x2d98a9da 0x2d98a976 0x2d98914a     
0x2d8f3c22 0x2d8f3a06 0x3019bdd4 0x30197044 0x8fde2 0x386a4ab2

应该属于该应用的应用如下:

0x8c47c 0x8fde2

0x8fde2与主线程中的相同,并将符号化为

13  taptap                          0x0008fde2 main (main.m:14)

有趣的是0x8c47c,它显示了异常顶部的第5位。要获得此符号,您需要提交给Apple的应用程序dSYM。您可以在管理器Archives标签中找到它。选择应用程序并选择应用程序的条目。用鼠标右键单击您用于提交给Apple的项目,然后选择Show in Finder。然后右键单击鼠标右键并选择Show Package Contents。打开dSYMs文件夹。

不知道使用了哪个iPad,因为缺少Binary Images部分,我们也不知道(这将显示使用的体系结构和UUID来验证体系结构,二进制文件和dSYM)。因此,它可以是armv7armv7s。最新的带有视网膜的iPad mini和iPad Air在32位模式下使用armv7s,所有其他iPad也使用armv7s或armv7。因此,我们必须尝试两者,这可能会返回相同的结果。

现在打开终端窗口并输入:

`xcrun atos -arch armv7s -l 0x83000 DragInTheDSYMItemFromTheFinderInHere 0x8c47c`

如果没有意义,请使用相同内容,并将armv7s替换为armv7

这应该为您提供应用中发生异常的类,方法,文件名和行号。我们仍然会错过异常原因,因为崩溃报告没有显示,并且由于缺少二进制映像,我们无法真正地表示所有其他地址并使用它们了解更多信息。希望这已经有了一个想法。

完成后,请更新您的问题并提供详细信息。

更新:现在提供了二进制图像,我能够对崩溃报告进行符号化并获取Last Exception Backtrace符号。虽然没有app符号,因为我显然没有dSYM。

符号化报告可在此处找到:http://pastebin.com/An10dUpi

重要的框架如下

Last Exception Backtrace:
0   CoreFoundation                       0x2d9bff46 __exceptionPreprocess + 126
1   libobjc.A.dylib                      0x3819c6aa objc_exception_throw + 32
2   CoreFoundation                       0x2d9bfe88 +[NSException raise:format:] + 98
3   Foundation                           0x2e347a66 +[NSJSONSerialization JSONObjectWithData:options:error:] + 60
4   taptap                               0x8c47c 0x83000 + 38012

这表明崩溃的发生是因为应用程序尝试将给定的NSData对象序列化为json并且无法执行此操作,因为NSData对象不是有效的json字符串。

如上所述在帖子中描述第4行时,您将在代码中得到确切的行。