xamarin Android应用程序在启动时崩溃

tpgth1q7  于 2023-05-11  发布在  Android
关注(0)|答案(4)|浏览(180)

当我为我的Xamarin.Forms Android项目启动调试会话时,它立即崩溃,并显示以下错误消息:
java.lang.RuntimeException:无法获取提供程序mono。MonoRuntimeProvider:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.Stringjava.io.File.getAbsolutePath()”
我正在使用共享运行时和快速部署,尽管停用其中任何一个似乎都不能解决我的问题。
然而,真正解决我问题的是从设备上手动卸载应用程序。然后,它将工作一个调试会话,但只要我开始下一个,同样的错误回来。
在我看来,应用程序不知何故无法找到单声道共享运行时,如果它是安装在以前的调试会话,但我不能为我的生活看到为什么。

eoxn13cs

eoxn13cs1#

以下是尝试修复此类问题时要执行的步骤:
1.您是否正在使用最新的Xamarin稳定版本?如果没有,请更新。

  • 正如评论中提到的,您还应该尝试从设备中删除Mono运行时。你要找的是安装的应用列表中的以下项目(我只会先删除Mono Shared Runtime,但尝试删除所有应用不会有什么坏处):
  • 单声道共享运行时
  • Mono Android-x支持
  • Xamarin.Android API-X支持
  • 清洗溶液,然后重试

如果这些都不能解决问题,您应该从错误日志中发布更多内容。我正在寻找的是主要异常定义之后的几行代码,以查看堆栈跟踪,像这样(主要是以 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时,错误可能并不总是异常所指向的地方。这就是为什么在这种情况下值得深入调查。

8dtrkrch

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文件中设置它。
或者相反,当第一个问题的作者发布他的答案时,他只是将安装位置更改为内部。
我认为这可能值得检查。

8oomwypt

8oomwypt3#

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

m1m5dgzv

m1m5dgzv4#

有同样的问题。
在使用Visual Studio + Xamarin之后,我必须承认这个环境很糟糕。问题不是来自您的代码,而是来自整个环境的复杂性,这也包括Google的需求。
有几件事要检查,包括:

  • 每次从debug切换到创建apk或创建aab文件时,清理并创建Build
  • 删除每个环境的bin和obj文件夹
  • 检查Android / iOS中的选项(取决于您遇到的问题)和属性

有几件事涉及,但其中之一是使用Proguard或R8,这导致崩溃的应用程序没有理由。禁用这些并将其留空允许提供apk/aab文件,该文件在启动时不会崩溃。
我花了大约10个小时来检查一切。

相关问题