Xamarin.android Android应用程序Mono在应用程序设置中清除数据后在启动时崩溃

Xamarin.android Android应用程序Mono在应用程序设置中清除数据后在启动时崩溃,xamarin.android,Xamarin.android,我发现我的Mono for Android应用程序在每次启动时都会在用户进入设置->应用->MyApp并选择“清除数据”后崩溃。我用Mono for Android“Hello World”应用程序创建了一个新项目,这个应用程序表现出完全相同的行为,这让我不得不假设这种情况发生在Mono堆栈中远离我控制的某个地方。如果我与adb logcat核实,我可以找到以下相关行: I/ActivityManager( 185): START {act=android.intent.action.MAIN

我发现我的Mono for Android应用程序在每次启动时都会在用户进入设置->应用->MyApp并选择“清除数据”后崩溃。我用Mono for Android“Hello World”应用程序创建了一个新项目,这个应用程序表现出完全相同的行为,这让我不得不假设这种情况发生在Mono堆栈中远离我控制的某个地方。如果我与adb logcat核实,我可以找到以下相关行:

I/ActivityManager(  185): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=Test_App.Test_App/test_app.Activity1} from pid 386
D/dalvikvm(18358): Late-enabling CheckJNI
I/dalvikvm(18358): Turning on JNI app bug workarounds for target SDK version 8...
I/ActivityManager(  185): Start proc Test_App.Test_App for activity Test_App.Test_App/test_app.Activity1: pid=18358 uid=10074 gids={3003}
D/dalvikvm(  119): GC_EXPLICIT freed 37K, 3% free 12553K/12867K, paused 1ms+2ms
I/ActivityThread(18358): Pub Test_App.Test_App.mono.MonoRuntimeProvider.__mono_init__: mono.MonoRuntimeProvider
D/dalvikvm(18358): Trying to load lib /data/data/Test_App.Test_App/lib/libmonodroid.so 0x4168ba48
D/dalvikvm(18358): Added shared lib /data/data/Test_App.Test_App/lib/libmonodroid.so 0x4168ba48
D/dalvikvm(  119): GC_EXPLICIT freed <1K, 3% free 12553K/12867K, paused 2ms+2ms
E/mono    (18358): WARNING: The runtime version supported by this application is unavailable.
E/mono    (18358): Using default runtime: v2.0.50727
D/OpenGLRenderer(  386): Flushing caches (mode 1)
D/dalvikvm(  119): GC_EXPLICIT freed <1K, 3% free 12553K/12867K, paused 1ms+1ms
I/mono    (18358): Stacktrace:
I/mono    (18358): 
D/OpenGLRenderer(  386): Flushing caches (mode 0)
D/Zygote  (  119): Process 18358 terminated by signal (11)
I/ActivityManager(  185): Process Test_App.Test_App (pid 18358) has died.
W/ActivityManager(  185): Force removing ActivityRecord{41a85018 Test_App.Test_App/test_app.Activity1}: app died, no saved state
I/ActivityManager(185):从pid 386开始{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]flg=0x10200000cmp=Test_App.Test_App/Test_App.Activity1}
D/dalvikvm(18358):延迟启用CheckJNI
I/dalvikvm(18358):为目标SDK版本8打开JNI应用程序错误解决方案。。。
I/ActivityManager(185):为activity Test\u App.Test\u App启动过程测试\u App.Test\u App/Test\u App.Activity1:pid=18358 uid=10074 gids={3003}
D/dalvikvm(119):GC_显式释放37K,3%释放12553K/12867K,暂停1ms+2ms
I/ActivityThread(18358):发布测试应用程序测试应用程序单运行时提供程序单运行时提供程序单运行时提供程序单运行时提供程序单运行时提供程序单运行时提供程序单运行时提供程序单运行时提供程序单运行时提供程序
D/dalvikvm(18358):尝试加载lib/data/data/Test_App.Test_App/lib/libmonodroid.so 0x4168ba48
D/dalvikvm(18358):添加了共享lib/data/data/Test_App.Test_App/lib/libmonodroid.so 0x4168ba48

D/dalvikvm(119):GC_设法解决了我自己的问题。在项目设置下,我必须转到“Mono for Android Build”选项卡,选择发布配置并使链接器“链接所有程序集”,而不是“仅链接SDK程序集”。通过反复试验解决了这个问题,但是你能做什么呢?

我发现的另一个解决方案是在构建应用程序时禁用“共享运行时”

在Visual Studio中,这在您的Android项目设置中,Android选项>打包选项卡>打包属性>使用共享运行时(untick)


它使生成的APK稍微大一点,但意味着用户可以在你的应用程序上“清除数据”,重新启动它,它将在不崩溃的情况下运行

使用Visual Studio 2015和LG G3活力上的Xamarin Forms应用程序作为测试设备。好几个月来,一切都很顺利。我在做性能文档的测试,所以我决定在我的应用程序上的设置->常规->应用程序中清除缓存。完成后,当我将应用程序部署到设备上时,活力会导致运行时错误。该应用程序可以在其他设备、模拟器和iOS模拟器上正常运行

我尝试了这篇文章中列出的其他建议。我在设备上做了一个工厂重置。解锁开发者模式并重新连接到我的电脑后,它现在编译并再次运行应用程序

我认为一个人可以尝试撤销usb调试授权,如果他们不想重新设置出厂设置,可以重新授权,看看这是否能让事情恢复正常。这可能会在VS2015和重置由缓存重置引起的任何问题的设备之间创建不同的连接路径。如果其他一切都失败了,工厂的重置帮我做到了。希望这有助于防止这种情况发生在某人身上