Monotouch App不会在Device上启动,但在Simulator中工作正常

时间:2011-10-20 18:42:24

标签: ios xcode ipad xamarin.ios ios-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:

at(wrapper managed-to-native)MonoTouch.ObjCRuntime.Messaging.void_objc_msgSend_intptr_intptr_bool(intptr,intptr,intptr,intptr,bool)< 0xffffffff>   在MonoTouch.Foundation.NSObject.Dispose(bool)< 0x0009f>   在MonoTouch.Foundation.NSObject.Finalize()< 0x00016>   at(wrapper runtime-invoke)object.runtime_invoke_virtual_void_ this _(object,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

更新: 我终于把我的问题钉在了两件事上。

  1. 泛型和价值类型无法播放 当使用AOT时(并且需要在iOS上执行) 设备)。所以我需要更改一个查询: 来自:'CSDatabase.RunQuery(“从schema_version中选择max(VersionNbr)”)。FirstOrDefault();' To:CSDatabase.RunQuery(“从schema_version中选择max(VersionNbr)”。)First();

  2. 接下来我需要为trampolines添加参数(-aot“nimt-trampolines = 2048”)并且只在构建期间链接monotouch sdk。这解决了我的其余问题。

1 个答案:

答案 0 :(得分:3)

这里有两个问题。

第二个看起来是由: 指定的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(如果大)的错误报告