我的应用程序在iOS模拟器上调试很好,当我构建ipa文件并将其部署到设备时,它运行正常。但是,如果我尝试在设备上调试(iPhone 9.3.1和iPad 9.3),应用程序会在启动时立即崩溃。我正在使用Visual Studio w / Xamarin。问题似乎是构建/配置/版本相关,因为它在模拟器和IPA文件版本上工作正常,但我无法弄清楚问题。
Visual Studio 2013 Update 5 Xamarin 4.0.3.214 Xamarin.iOS 9.6.1.8
有效的构建之间的项目配置,不要:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<MtouchDebug>True</MtouchDebug>
<MtouchSdkVersion>8.1</MtouchSdkVersion>
<MtouchArch>i386</MtouchArch>
<MtouchOptimizePNGs>True</MtouchOptimizePNGs>
<MtouchUseSGen>True</MtouchUseSGen>
<MtouchUseRefCounting>True</MtouchUseRefCounting>
<MtouchI18n>
</MtouchI18n>
<MtouchProfiling>True</MtouchProfiling>
<MtouchLink>None</MtouchLink>
<CodesignKey>iPhone Developer</CodesignKey>
<CodesignProvision>
</CodesignProvision>
<CodesignExtraArgs>
</CodesignExtraArgs>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\iPhone\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<CodesignKey>iPhone Developer</CodesignKey>
<MtouchSdkVersion>8.1</MtouchSdkVersion>
<MtouchArch>ARMv7</MtouchArch>
<MtouchOptimizePNGs>True</MtouchOptimizePNGs>
<MtouchI18n>
</MtouchI18n>
<MtouchUseSGen>True</MtouchUseSGen>
<MtouchDebug>True</MtouchDebug>
<MtouchProfiling>True</MtouchProfiling>
<SignAssembly>true</SignAssembly>
<CodesignProvision>
</CodesignProvision>
<CodesignExtraArgs>
</CodesignExtraArgs>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Ad-Hoc|iPhone' ">
<DebugType>none</DebugType>
<Optimize>True</Optimize>
<OutputPath>bin\iPhone\Ad-Hoc</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>False</ConsolePause>
<CodesignKey>xxx</CodesignKey>
<BuildIpa>True</BuildIpa>
<MtouchSdkVersion>8.1</MtouchSdkVersion>
<MtouchArch>ARMv7</MtouchArch>
<MtouchOptimizePNGs>True</MtouchOptimizePNGs>
<MtouchI18n>
</MtouchI18n>
<IpaPackageName>
</IpaPackageName>
<SignAssembly>true</SignAssembly>
<CodesignProvision>xxx</CodesignProvision>
<IpaMetadata>
</IpaMetadata>
<MtouchExtraArgs>
</MtouchExtraArgs>
<CodesignExtraArgs>
</CodesignExtraArgs>
</PropertyGroup>
崩溃报告:
Incident Identifier: 3F2078C2-B276-4CCE-A5A0-43DCE3F4EB07
CrashReporter Key: 0ae3fc42ef86d1610013598af050cfcc24f778c2
Hardware Model: iPhone7,2
Process: RadResponder [3832]
Path: /private/var/containers/Bundle/Application/30274A5D-271C-4E00-87B1-D3CE93033A8F/RadResponder.app/RadResponder
Identifier: com.ChainbridgeTechnologies.RadResponder
Version: 45 (3.2.0)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2016-04-20 09:41:34.34 -0600
Launch Time: 2016-04-20 09:41:31.31 -0600
OS Version: iOS 9.3.1 (13E238)
Report Version: 105
Exception Type: EXC_BAD_ACCESS (SIGABRT)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000084020400
Triggered by Thread: 0
Filtered syslog:
None found
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x20677c5c __pthread_kill + 8
1 libsystem_pthread.dylib 0x2071db47 pthread_kill + 63
2 libsystem_c.dylib 0x2060c0c5 abort + 109
3 RadResponder 0x02e3a3e1 mono_handle_native_sigsegv (mini-exceptions.c:2186)
4 RadResponder 0x02e405c9 mono_sigsegv_signal_handler (mini-runtime.c:2481)
5 libsystem_platform.dylib 0x2071985f _sigtramp + 43
6 RadResponder 0x01f83fa0 System_Linq_Enumerable_ToArray_T_INT_System_Collections_Generic_IEnumerable_1_T_INT (Enumerable.cs:830)
7 RadResponder 0x00de5d74 MvvmCross_Platform_iOS_Platform_MvxIosSystem_BuildVersion (/C:\vcs\git\MvvmCross\MvvmCross\Platform\iOS\Platform\MvxIosSystem.cs:27)
8 RadResponder 0x00de5b38 MvvmCross_Platform_iOS_Platform_MvxIosSystem__ctor (/C:\vcs\git\MvvmCross\MvvmCross\Platform\iOS\Platform\MvxIosSystem.cs:22)
9 RadResponder 0x01025628 MvvmCross_iOS_Platform_MvxIosSetup_CreateIosSystemProperties (/C:\vcs\git\MvvmCross\MvvmCross\iOS\iOS\Platform\MvxIosSetup.cs:114)
10 RadResponder 0x01025514 MvvmCross_iOS_Platform_MvxIosSetup_RegisterPlatformProperties (/C:\vcs\git\MvvmCross\MvvmCross\iOS\iOS\Platform\MvxIosSetup.cs:109)
11 RadResponder 0x0102538c MvvmCross_iOS_Platform_MvxIosSetup_InitializePlatformServices (/C:\vcs\git\MvvmCross\MvvmCross\iOS\iOS\Platform\MvxIosSetup.cs:100)
12 RadResponder 0x0105c284 MvvmCross_Core_Platform_MvxSetup_InitializePrimary + 1532
13 RadResponder 0x0105bc04 MvvmCross_Core_Platform_MvxSetup_Initialize + 120
14 RadResponder 0x000bfaac RadResponder_Mobile_UI_iPhone_AppDelegate_FinishedLaunching_UIKit_UIApplication_Foundation_NSDictionary (/c:\tfs\rr\wksp\mbl-dev\RadResponder.Mobile.UI.iPhone\AppDelegate.cs:54)
15 RadResponder 0x005689f4 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 256
16 RadResponder 0x02e42bff mono_jit_runtime_invoke (mini-runtime.c:2335)
17 RadResponder 0x02e852a5 mono_runtime_invoke (object.c:2783)
18 RadResponder 0x02dfcb6b native_to_managed_trampoline_6(objc_object*, objc_selector*, _MonoMethod**, objc_object*, objc_object*, char const*, char const*, char const*, char const*) (registrar.m:211)
19 RadResponder 0x02dfc9bd -[AppDelegate application:didFinishLaunchingWithOptions:] (registrar.m:2962)
20 UIKit 0x2502f8ff -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 395
21 UIKit 0x252590bf -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 3087
22 UIKit 0x2525d079 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1589
23 UIKit 0x25271649 __84-[UIApplication _handleApplicationActivationWithScene:transitionContext:completion:]_block_invoke3286 + 37
24 UIKit 0x2525a59f -[UIApplication workspaceDidEndTransaction:] + 135
25 FrontBoardServices 0x220b7bf7 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 19
26 FrontBoardServices 0x220b7aa7 -[FBSSerialQueue _performNext] + 227
27 FrontBoardServices 0x220b7da5 -[FBSSerialQueue _performNextFromRunLoopSource] + 45
28 CoreFoundation 0x209aba67 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
29 CoreFoundation 0x209ab657 __CFRunLoopDoSources0 + 455
30 CoreFoundation 0x209a99bf __CFRunLoopRun + 807
31 CoreFoundation 0x208f8289 CFRunLoopRunSpecific + 517
32 CoreFoundation 0x208f807d CFRunLoopRunInMode + 109
33 UIKit 0x25028dc7 -[UIApplication _run] + 527
34 UIKit 0x250232c5 UIApplicationMain + 145
35 RadResponder 0x00aa5218 wrapper_managed_to_native_UIKit_UIApplication_UIApplicationMain_int_string___intptr_intptr + 272
36 RadResponder 0x00a0e58c UIKit_UIApplication_Main_string___intptr_intptr (UIApplication.cs:77)
37 RadResponder 0x00a0e54c UIKit_UIApplication_Main_string___string_string (UIApplication.cs:61)
38 RadResponder 0x000bf204 RadResponder_Mobile_UI_iPhone_Application_Main_string__ (/c:\tfs\rr\wksp\mbl-dev\RadResponder.Mobile.UI.iPhone\Main.cs:12)
39 RadResponder 0x005689f4 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 256
40 RadResponder 0x02e42bff mono_jit_runtime_invoke (mini-runtime.c:2335)
41 RadResponder 0x02e852a5 mono_runtime_invoke (object.c:2783)
42 RadResponder 0x02e885d1 mono_runtime_exec_main (object.c:4038)
43 RadResponder 0x02ef5778 xamarin_main (monotouch-main.m:404)
44 RadResponder 0x02e15261 main (main.armv7.m:158)
45 libdyld.dylib 0x205a4873 start + 3
Thread 1:
0 libsystem_kernel.dylib 0x20678864 __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x2071ae19 _pthread_wqthread + 1037
2 libsystem_pthread.dylib 0x2071a9fc start_wqthread + 8
Thread 2 name: Dispatch queue: com.apple.libdispatch-manager
Thread 2:
0 libsystem_kernel.dylib 0x206792f8 kevent_qos + 24
1 libdispatch.dylib 0x2058b837 _dispatch_mgr_invoke + 255
2 libdispatch.dylib 0x2057d917 _dispatch_mgr_thread + 39
Thread 3:
0 libsystem_kernel.dylib 0x20678864 __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x2071ae19 _pthread_wqthread + 1037
2 libsystem_pthread.dylib 0x2071a9fc start_wqthread + 8
Thread 4:
0 libsystem_kernel.dylib 0x20677da0 __recvfrom + 20
1 libsystem_c.dylib 0x205c7d5b recv + 23
2 RadResponder 0x02ef3dcc recv_uninterrupted(int, void*, int) (monotouch-debug.m:387)
3 RadResponder 0x02ef3fb0 monotouch_process_connection(int) (monotouch-debug.m:790)
4 RadResponder 0x02ef2f5c monotouch_connect_usb() (monotouch-debug.m:697)
5 RadResponder 0x02ef25e8 monotouch_configure_debugging (monotouch-debug.m:333)
6 RadResponder 0x02edc8bc -[CocoaThreadInitializer entryPoint:] (shared.m:124)
7 Foundation 0x2121662d __NSThread__start__ + 1145
8 libsystem_pthread.dylib 0x2071cc7f _pthread_body + 139
9 libsystem_pthread.dylib 0x2071cbf3 _pthread_start + 111
10 libsystem_pthread.dylib 0x2071aa08 thread_start + 8
Thread 5:
0 libsystem_kernel.dylib 0x20677998 __psynch_cvwait + 24
1 libsystem_pthread.dylib 0x2071c1a5 _pthread_cond_wait + 537
2 libsystem_pthread.dylib 0x2071d0b9 pthread_cond_wait + 41
3 RadResponder 0x02ebeec5 thread_func (sgen-thread-pool.c:118)
4 libsystem_pthread.dylib 0x2071cc7f _pthread_body + 139
5 libsystem_pthread.dylib 0x2071cbf3 _pthread_start + 111
6 libsystem_pthread.dylib 0x2071aa08 thread_start + 8
Thread 6:
0 libsystem_kernel.dylib 0x20677da0 __recvfrom + 20
1 libsystem_c.dylib 0x205c7d5b recv + 23
2 RadResponder 0x02ef3dcc recv_uninterrupted(int, void*, int) (monotouch-debug.m:387)
3 RadResponder 0x02ef3ec8 sdb_recv(void*, int) (monotouch-debug.m:403)
4 RadResponder 0x02e22a07 debugger_thread (debugger-agent.c:1515)
5 RadResponder 0x02ed3927 inner_start_thread (mono-threads-posix.c:97)
6 libsystem_pthread.dylib 0x2071cc7f _pthread_body + 139
7 libsystem_pthread.dylib 0x2071cbf3 _pthread_start + 111
8 libsystem_pthread.dylib 0x2071aa08 thread_start + 8
Thread 7:
0 libsystem_kernel.dylib 0x206638f8 semaphore_wait_trap + 8
1 RadResponder 0x02ed312b mono_sem_wait (mono-semaphore.c:109)
2 RadResponder 0x02e644b7 finalizer_thread (gc.c:1096)
3 RadResponder 0x02ea4d89 start_wrapper (threads.c:655)
4 RadResponder 0x02ed3927 inner_start_thread (mono-threads-posix.c:97)
5 libsystem_pthread.dylib 0x2071cc7f _pthread_body + 139
6 libsystem_pthread.dylib 0x2071cbf3 _pthread_start + 111
7 libsystem_pthread.dylib 0x2071aa08 thread_start + 8
Thread 8:
0 libsystem_kernel.dylib 0x20678864 __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x2071ae19 _pthread_wqthread + 1037
2 libsystem_pthread.dylib 0x2071a9fc start_wqthread + 8
Thread 0 crashed with ARM Thread State (32-bit):
r0: 0x00000000 r1: 0x00000000 r2: 0x00000000 r3: 0x00000000
r4: 0x00000006 r5: 0x376cd000 r6: 0xa10bb850 r7: 0x08721358
r8: 0x15bc32ac r9: 0x376cd908 r10: 0x0457fe7f r11: 0x15bc3200
ip: 0x00000148 sp: 0x0872134c lr: 0x2071db47 pc: 0x20677c5c
cpsr: 0x00000010
答案 0 :(得分:1)
这不是您问题的直接答案,但查看MvxIosSystem.BuildVersion
的{{3}},第27行确实会执行ToArray
应用程序因无效地址访问而死亡的情况:
private void BuildVersion()
{
var version = UIDevice.CurrentDevice.SystemVersion;
var parts = version.Split('.').Select(int.Parse).ToArray();
this.Version = new MvxIosVersion(parts);
}
MvvmCross框架可以UIDevice.CurrentDevice.SystemVersion
返回一些有意外的意外吗?
即。 version.Split('.').Select(int.Parse).ToArray()
如何导致此无效访问?
也许你可以在MvvmCross启动之前在应用程序中使用类似的代码行来获取版本值,并希望有更多的线索来调试。
我在一个小的Xamarin.iOS项目中尝试了这个,就在Main.cs中,但看不到会导致问题的任何内容 - version
回来了“9.3.1”和parts
是一个数组int[3]
:
public class Application
{
// This is the main entry point of the application.
static void Main (string[] args)
{
//Xamarin.Insights.Initialize (XamarinInsights.ApiKey);
var version = UIDevice.CurrentDevice.SystemVersion;
var parts = version.Split('.').Select(int.Parse).ToArray();
// if you want to use a different Application Delegate class from "AppDelegate"
// you can specify it here.
UIApplication.Main (args, null, "AppDelegate");
}
}
我还尝试用version
替换一些创意值而不是调用UIDevice.CurrentDevice.SystemVersion
,但我生成的所有内容都是未处理的字符串格式或空引用异常,其iOS崩溃日志与您发布的完全不同。
我想知道设备重置是否可以解决问题,从MvvmCross source到类似的问题。
答案 1 :(得分:1)
我在本机应用程序的基础上进行回复,如果您在项目的构建设置中将Adhoc临时配置文件设置为“调试”选项,则会发生这种情况。这意味着,为了调试代码,您需要为调试&#39; Debug&#39;设置调试临时配置文件。不是特殊类型的临时档案。
答案 2 :(得分:0)
MtouchUseRefCounting
这可能是必需的。转到构建选项,高级选项卡,然后勾选右侧的框。它应该在调试模式/模拟器中勾选。所以在调试/设备中勾选它。