2014-01-15 32 views
1

我最近將我的iOS應用程序提交給Apple進行審查。它是用C#編寫的,使用Xamarin iOS,Monotouch和Monogame。我使用Xamarin IDE進行開發。一週後,我收到拒絕,指出當審閱者嘗試訪問應用內購買商店時,應用在iPad上崩潰的原因,而在iPhone 5s上它不會崩潰,但表示它不能到達Apple服務器以檢索商店物品。我的商店檢索代碼大部分來自Xamarin的指南here無法複製Apple iOS應用程序崩潰

問題是我無法複製這些崩潰。這家店開張很好,我對它進行了廣泛的測試。我在所有模擬器上進行了測試,並且在調試&版本配置(iPhone 4,iPhone 5,iPhone 5s,iPad第3代)中測試了許多真實設備。我沒有在ad-hoc模式下測試,因爲其中很多設備都是從我的朋友那裏借用的,我不想在iTunes中同步,因爲這可能會消除設備數據。所以我希望發佈版本和臨時版本在尋找審查團隊的bug方面是等同的。

至於蘋果公司給我的崩潰日誌,他們沒有幫助我,因爲大多數的行都沒有在Xcode中使用我提交給Apple的相同存檔文件進行正確的符號化。日誌中有很多'___lldb_unnamed_function'行。我能夠告訴的是,當試圖檢索商店時發生了崩潰。因此我陷入困境,不知道下一步該怎麼做。建議表示讚賞。

以下是長期崩潰日誌的最後部分。

Incident Identifier: 24777CEA-21FF-434B-A658-BFB4BC89F7B2 
CrashReporter Key: e981dd69858f1d35ba231cd2e288f3d33625919f 
Hardware Model:  xxx 
Version:    1 (1) 
Code Type:   ARM (Native) 
Parent Process:  launchd [1] 
Date/Time:   2014-01-09 13:30:21.579 -0800 
OS Version:   iOS 7.0.4 (11B554a) 
Report Version:  104 

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

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libsystem_kernel.dylib   0x387e41fc __pthread_kill + 8 
1 libsystem_pthread.dylib   0x3884ba4f pthread_kill + 55 
2 libsystem_c.dylib    0x38795029 abort + 73 
3 MyGame       0x00d8036d mono_handle_native_sigsegv (mini-exceptions.c:2413) 
4 MyBeGame      0x00d855b7 sigabrt_signal_handler (mini-posix.c:206) 
5 libsystem_platform.dylib  0x38846721 _sigtramp + 41 
6 libsystem_pthread.dylib   0x3884ba4f pthread_kill + 55 
7 libsystem_c.dylib    0x38795029 abort + 73 
8 MyBeGame      0x00e30744 monotouch_unhandled_exception_handler (monotouch-glue.m:1436) 
9 MyBeGame      0x00d8072d mono_invoke_unhandled_exception_hook (mini-exceptions.c:2749) 
10 MyBeGame      0x00d8d7ab mono_thread_abort_dummy (mini.c:2768) 
11 MyBeGame      0x00d7ff35 mono_handle_exception_internal (mini-exceptions.c:1710) 
12 MyBeGame      0x00d7f6b7 mono_handle_exception (mini-exceptions.c:2003) 
13 MyBeGame      0x00d791b5 mono_arm_throw_exception (exceptions-arm.c:161) 
14 MyBeGame      0x0023f7d4 ___lldb_unnamed_function12968$$MyBeGame + 64 
15 MyBeGame      0x002da1d0 ___lldb_unnamed_function20307$$MyBeGame + 92 
16 MyBeGame      0x00293960 ___lldb_unnamed_function17583$$MyBeGame + 196 
17 MyBeGame      0x00212418 ___lldb_unnamed_function12101$$MyBeGame + 168 
18 MyBeGame      0x0029205c ___lldb_unnamed_function17574$$MyBeGame + 92 
19 MyBeGame      0x00295c58 ___lldb_unnamed_function17610$$MyBeGame + 32 
20 MyBeGame      0x00083570 ___lldb_unnamed_function2892$$MyBeGame + 860 
21 MyBeGame      0x000954f4 ___lldb_unnamed_function3194$$MyBeGame + 1516 
22 MyBeGame      0x00093610 ___lldb_unnamed_function3176$$MyBeGame + 40 
23 MyBeGame      0x0006246c MyBeGame.HintStoreController.HintStoreControl/StateRetrieving:<Activate>m__F + 624 
24 MyBeGame      0x0045d39c ___lldb_unnamed_function33945$$MyBeGame + 48 
25 MyBeGame      0x0020c10c ___lldb_unnamed_function11957$$MyBeGame + 196 
26 MyBeGame      0x00d8ce4f mono_jit_runtime_invoke (mini.c:6504) 
27 MyBeGame      0x00dd482b mono_runtime_invoke (object.c:2827) 
28 MyBeGame      0x00d5117b native_to_managed_trampoline_MonoTouch_Foundation_InternalNSNotificationHandler_Post (registrar.m:28) 
29 CoreFoundation     0x2da4fe6f __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 11 
30 CoreFoundation     0x2d9c3aad _CFXNotificationPost + 1717 
31 Foundation      0x2e3a9ec1 -[NSNotificationCenter postNotificationName:object:userInfo:] + 69 
+2

您需要使用由Xcode生成的dSYM文件來標記您的崩潰日誌。如果您沒有刪除它,它應該仍然在您創建存檔的計算機上。如果你沒有它,我會首先看看由NSNotification觸發的代碼... –

+0

我讀過,我上傳到Apple並仍在xCode檔案中的檔案本身內有所有必要的像dSYM這樣的文件,所以... – Ramsay

+0

你有沒有嘗試象徵它呢?如果是這樣,你有什麼嘗試,什麼不工作? –

回答

1

您可以通過比較項目的選項來確定兩種不同配置(比如Release和Ad-Hoc)是否相同。請特別注意Build/CompilerBuild/iOS Build頁面,並確保所有選項都相同。

關於崩潰報告,我們遺憾地發現有一個bug與Xamarin.iOS 7.0.4中的dSYM生成,所以託管框架不會正確符號化(這是所有lldb_unnamed_function條目的原因)。然而,我可以說的是,應用程序崩潰,因爲有一個未處理的託管異常。

如果您自己無法重現問題,我建議您使用Xamarin.iOS 7.0.6(目前位於測試版頻道)重新構建應用程序,然後重新提交給Apple。該應用程序可能仍會崩潰,但您應該得到更好的崩潰報告,它至少會告訴您發生了託管異常的位置。

+0

我去了Xamarin Studio中的'檢查更新'並切換到測試版頻道,然後下載了7.0.6。我重建了應用程序,然後提交了它。今天我收到了拒絕,我打開了附帶的崩潰日誌,希望能夠看到堆棧跟蹤,但是我再次遇到了與___lldb_unnamed_function行相同的問題。所以看起來7.0.6並沒有解決這個問題,我仍然堅持。 – Ramsay

+1

哪個Xcode你打開了崩潰報告?我剛剛發現Xcode 5.0和Xcode 5.1(Beta4)不會產生相同的結果(Xcode 5.1產生更好的堆棧跟蹤)。 –

+1

xCode 5.1解決了問題 – Ramsay