6

我发现我的 Mono for Android 应用程序在用户转到 Settings->Apps->MyApp 并选择“清除数据”后每次启动都会崩溃。我使用 Mono for Android“Hello World”应用程序创建了一个新项目,这个应用程序表现出完全相同的行为,这让我假设这发生在我无法控制的单声道堆栈中的某个地方。如果我使用 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

有人在他的单声道应用程序中有相同的行为吗?有解决办法吗?

4

3 回答 3

6

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

于 2012-10-26T08:55:36.517 回答
2

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

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

它使生成的 APK 有点大,但意味着用户可以在您的应用程序上执行“清除数据”,重新启动它,它会运行而不会崩溃!

于 2015-11-21T12:50:36.693 回答
0

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

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

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

于 2017-06-10T03:15:34.230 回答