当我为我的Xamarin.Forms Android项目启动调试会话时,它立即崩溃,并显示以下错误消息:
java.lang.RuntimeException:无法获取提供程序mono。MonoRuntimeProvider:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.Stringjava.io.File.getAbsolutePath()”
我正在使用共享运行时和快速部署,尽管停用其中任何一个似乎都不能解决我的问题。
然而,真正解决我问题的是从设备上手动卸载应用程序。然后,它将工作一个调试会话,但只要我开始下一个,同样的错误回来。
在我看来,应用程序不知何故无法找到单声道共享运行时,如果它是安装在以前的调试会话,但我不能为我的生活看到为什么。
4条答案
按热度按时间eoxn13cs1#
以下是尝试修复此类问题时要执行的步骤:
1.您是否正在使用最新的Xamarin稳定版本?如果没有,请更新。
Mono Shared Runtime
,但尝试删除所有应用不会有什么坏处):如果这些都不能解决问题,您应该从错误日志中发布更多内容。我正在寻找的是主要异常定义之后的几行代码,以查看堆栈跟踪,像这样(主要是以 at 开头的代码行):
当使用Xamarin和Android时,错误可能并不总是异常所指向的地方。这就是为什么在这种情况下值得深入调查。
8dtrkrch2#
根据SO上的另外两篇文章,在这里找到:
Xamarin.Forms "App has stopped working" on android
Why does my Xamarin Android application suddenly require external storage permissions?
看起来你“可能”丢失了外部存储权限,它通常在
AssemblyInfo.cs
文件中:[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
或者您可以在AndroidManifest.xml
文件中设置它。或者相反,当第一个问题的作者发布他的答案时,他只是将安装位置更改为内部。
我认为这可能值得检查。
8oomwypt3#
尝试删除项目中的所有“bin”和“obj”文件夹。然后清理和重建。
m1m5dgzv4#
有同样的问题。
在使用Visual Studio + Xamarin之后,我必须承认这个环境很糟糕。问题不是来自您的代码,而是来自整个环境的复杂性,这也包括Google的需求。
有几件事要检查,包括:
有几件事涉及,但其中之一是使用Proguard或R8,这导致崩溃的应用程序没有理由。禁用这些并将其留空允许提供apk/aab文件,该文件在启动时不会崩溃。
我花了大约10个小时来检查一切。