[英]Monotouch App will not launch on Device but works fine in Simulator
我有一個iPad應用程序,我一直在模擬器上開發很好(xcode 4,md 2.8,mt 5)。 但是,當我嘗試部署到設備時,應用程序在啟動時崩潰。 xcode中沒有崩潰日志,並且控制台窗口未顯示任何錯誤。
但是,當我從終端運行monotouch時,我得到以下輸出:
Rich-MacBook-Pro:~rich3 $ / Developer / MonoTouch / usr / bin / mtouch --debugsim = $ / private / var / mobile / Applications / 31A80564-0CEF-4F4B-AE9D-6A1938510393指定的SDK無效:3.2 Stacktrace:
在(包裝由本機管理的)MonoTouch.ObjCRuntime.Messaging.void_objc_msgSend_intptr_intptr_bool(intptr,intptr,intptr,intptr,bool)<0xffffffff>在MonoTouch.Foundation.NSObject.Dispose(bool)<0x0009f> .Finalize()<0x00016>在(包裝器運行時調用)object.runtime_invoke_virtual_void_ 此 _(對象,IntPtr的,IntPtr的,IntPtr的)<0xffffffff的>
本機堆棧跟蹤:
0 mtouch 0x000ec183 WriteZStream + 955779
1 mtouch 0x0001bd4f WriteZStream + 102735
2 libsystem_c.dylib 0x9020459b _sigtramp + 43
3 ??? 0xffffffff 0x0 + 4294967295
4 Foundation 0x9a0603de -[NSObject(NSThreadPerformAdditions) performSelectorOnMainThread:withObject:waitUntilDone:] + 160
5 ??? 0x027d5884 0x0 + 41769092
6 ??? 0x027d0e40 0x0 + 41750080
7 ??? 0x027d559f 0x0 + 41768351
8 ??? 0x025e5551 0x0 + 39736657
9 mtouch 0x001a76c4 WriteZStream + 1723076
10 mtouch 0x001a968a WriteZStream + 1731210
11 mtouch 0x001a98c4 WriteZStream + 1731780
12 mtouch 0x002735c1 WriteZStream + 2558401
13 mtouch 0x00273677 WriteZStream + 2558583
14 mtouch 0x002b8b0e WriteZStream + 2842382
15 mtouch 0x002f31d8 WriteZStream + 3081688
16 libsystem_c.dylib 0x901aced9 _pthread_start + 335
17 libsystem_c.dylib 0x901b06de thread_start + 34
來自gdb的調試信息:
/tmp/mono-gdb-commands.1eukTW:1: Error in sourced command file:
unable to debug self
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================
Abort trap: 6
更新:我終於把我的問題釘在了兩件事上。
使用AOT時,泛型和值類型不能很好地協同工作(並且需要在iOS設備上執行)。 因此,我需要更改查詢:從:'CSDatabase.RunQuery(“從schema_version中選擇max(VersionNbr)”)。FirstOrDefault();' To:CSDatabase.RunQuery(“從schema_version中選擇max(VersionNbr)”。)First();
接下來,我需要為蹦床添加參數(-aot“ nimt-trampolines = 2048”),並且在構建過程中僅鏈接monotouch sdk。 這解決了我其余的問題。
這里有兩個問題。
第二個看起來是由於: 指定的SDK無效:3.2
只是您沒有安裝3.2 SDK(iOS5 SDK默認未附帶)。 請嘗試以下命令:
/Developer/MonoTouch/usr/bin/mtouch --debugsim=/path/to/your.app --sdk=5.0
它應該工作正常。
至於第一個問題,沒有太多細節可以幫助您。 如果沒有產生故障轉儲 (例如在沒有足夠的可用內存時發生),請嘗試以下操作:
a)打開計算機上的終端窗口;
b)執行以下命令
/Developer/MonoTouch/usr/bin/mtouch --logdev
c)在設備上啟動應用程序;
d)使其崩潰(在這種情況下,似乎是自動的;-)
e)將設備日志復制/粘貼到您的問題中(如果很小),或者在http://bugzilla.xamarin.com上填寫錯誤報告(如果很大)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.