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

时间:2017-01-20 20:30:50

标签: c# android xamarin xamarin.forms xamarin.android

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

  

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

我使用的是共享运行时和快速部署,虽然停用它们似乎并不能解决我的问题。

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

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

3 个答案:

答案 0 :(得分:3)

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

  1. 您使用的是最新稳定版的Xamarin吗?如果没有,请更新。
  2. 如评论中所述,您还应尝试从设备中删除Mono运行时。您正在寻找的内容是已安装的应用列表中的以下项目(我只是先删除Mono Shared Runtime,但尝试删除所有这些内容会不会受到影响):
    • 单声道共享运行时
    • Mono Android-x支持
    • Xamarin.Android API-X支持
  3. 清洁解决方案,然后重试
  4. 如果这些问题无法解决问题,您应该从错误日志中发布更多信息。在我看到堆栈跟踪的主要异常定义之后,我正在寻找的是几行,就像这样(主要是以开头的行):

    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时,错误可能并不总是异常似乎指向的地方。这就是为什么在这种情况下更深入地研究它的原因。

答案 1 :(得分: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文件中进行设置 或者作为第一个问题的作者发布了他的答案,他只是将安装位置更改为内部 我建议这值得检查。

答案 2 :(得分:0)

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

相关问题