У меня есть приложение для 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_rptbo_bint (int), intptr, intptr, intptr, bool) <0xffffffff> в MonoTouch.Foundation.NSObject.Dispose (bool) <0x0009f> в MonoTouch.Foundation.NSObject.Finalize () <0x00016> в (вызове среды выполнения оболочки) object.roid_v_v_v_time_in1007 * 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
ОБНОВЛЕНИЕ: я наконец прибавил свою проблему к двум вещам.
Дженерики и типы значений не сочетаются друг с другом при использовании AOT (и это требуется для выполнения на устройствах iOS),Поэтому мне нужно было изменить запрос: From: 'CSDatabase.RunQuery ("select max (VersionNbr) from schema_version"). FirstOrDefault ();'To: CSDatabase.RunQuery ("выберите max (VersionNbr) из schema_version"). First ();
Далее мне нужно добавить аргумент для батутов (-aot "nimt-trampolines= 2048 ") и только связанный monotouch sdk во время сборки.Это прояснило остальные мои проблемы.