Xamarin.Forms Android应用程序在启动时崩溃

问题描述 投票:9回答:3

当我为我的Xamarin.Forms Android项目启动调试会话时,它会立即崩溃,并显示以下错误消息:

java.lang.RuntimeException:无法获取提供者mono.MonoRuntimeProvider:java.lang.NullPointerException:尝试在空对象引用上调用虚方法'java.lang.String java.io.File.getAbsolutePath()'

我正在使用Shared Runtime和Fast Deploy,虽然停用它们似乎并不能解决我的问题。

但是,解决我的问题的方法是从设备手动卸载应用程序。然后它将适用于一个调试会话,但是一旦我启动下一个调试会话,就会返回相同的错误。

在我看来,如果它在以前的调试会话中安装,应用程序在某种程度上无法找到Mono Shared Runtime,但我不能为我的生活看到原因。

c# android xamarin xamarin.forms xamarin.android
3个回答
4
投票

以下是尝试修复此类内容时要执行的步骤:

  1. 您使用的是Xamarin的最新稳定版吗?如果没有,请更新。
  2. 如评论中所述,您还应尝试从设备中删除Mono运行时。你正在寻找的是安装的应用程序列表中的以下项目(我只会先删除Mono Shared Runtime但尝试删除所有这些都不会有害): 单声道共享运行时 Mono Android-x支持 Xamarin.Android API-X支持
  3. 清洁解决方案,然后重试

如果这些不能解决问题,您应该从错误日志中发布更多内容。我正在寻找的主要异常定义之后的几行来看堆栈跟踪,就像这样(主要是以at开头的行):

java.lang.RuntimeException: Unable to start activity ComponentInfo{plp.cs4b.thesis.drawitapp/plp.cs4b.thesis.drawitapp.PlayGame}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String plp.cs4b.thesis.drawitapp.Player.getName()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)

使用Xamarin和Android时,错误可能并不总是异常似乎指向的位置。这就是为什么在这种情况下更深入地研究它的原因。


2
投票

根据此处发现的另外两篇帖子: 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文件中设置它。 或者作为第一个问题的作者发布了他的答案,他只是将安装位置更改为内部。 我建议这可能值得一试。


0
投票

尝试删除项目中的所有“bin”和“obj”文件夹。然后清理并重建。

© www.soinside.com 2019 - 2024. All rights reserved.