MAUI模板项目闪退问题

MAUI最初发布的时候就曾创建过几个模板项目进行体验过,没遇到什么坑。由于最近需要开发针对餐饮行业的收银机(安卓系统)开发一款应用,这种收银机一般配置不咋滴,系统版本和性能也肯定比不上我们自己使用的手机。在做技术选型时首先想到了MAUI,备选Flutter,React Native。都是大厂维护的跨平台应用框架,在使用MAUI框架时遇到新建的模板应用居然启动时直接闪退,最终也是解决了这个闪退问题,遂分享下这一经历。

创建项目

演示创建项目过程,所有流程都是IDE默认,不做任何修改。

新建MAUI模板项目

用VS新建MAUI模板项目,如下

项目名也默认为MauiApp1

连接设备

  • 通过USB连接目标安卓设备

  • 目标设备开启开发者模式,然后开启usb调试(自行百度必应/谷歌)

  • 手机上切换usb调试的模式,一般会出现 仅充电,文件传输。。。,简单粗暴地切换各种选项,当VS列出了你的设备就可以了。

调试项目

  • 完成上一步的设备连接,直接在debug模式下启动项目

等待一会,可以在设备上看到应用已经安装了,按说应该会被自动打开,等了好久也没动静,VS的输出窗口也不再有新的内容输出了

手动点击设备上的安装好的MauiApp1应用,然后刚看到启动页面一个大大的.NET标志,随后来了个 Maui1已停止运行

解决闪退问题

以前也做过使用android studio开发过原生安卓应用,一般这种问题都能在IDE有错误输出,可以通过错误信息找到闪退原因。

回顾刚才这个问题,不知道去哪里查看日志,这该怎么去看闪退的原因呢,要是VS能像android studio那样可以查看详细的日志就好了,目前我还不知道是否有地方能看详细的debug日志。我选择了一种比较通用的排查错误的方式:adb工具。

有关adb不做介绍,读者如有疑问自行百度必应/谷歌,你只需要知道他是用来调试安卓应用的一个强大工具即可。

下面的流程需要你将adb目录添加到环境变量PATH中,方可全局使用adb命令。

常用命令

adb命令查看列出手机装的所有 app 的包名:

adb shell pm list packages

列出系统应用的所有包名:

adb shell pm list packages -s

列出除了系统应用的第三方应用包名:

adb shell pm list packages -3

推测一个包中可能带有的关键字:

adb shell dumpsys activity | findstr mFocusedActivity

清除应用数据与缓存

adb shell pm clear 应用包名

查看日志

adb logcat

V:详细(最低优先级) D:调试 I:信息 W:警告 E:错误 F:严重 S:静默(最高优先级,未曾输出过任何内容)

找到我们要看的日志

  • 确认adb能识别到你的设备

$ adb devices
List of devices attached
1234567890ABCDEF        device
  • 找出我们的包名

$ adb shell pm list packages -3
....
package:com.landi.print.service
package:com.companyname.mauiapp1
....

包名为:com.companyname.mauiapp1

  • 使用logcat

直接运行adb logcat能看到设备的所有日志,会对我们的排查造成干扰,我们只需要查看package:com.companyname.mauiapp1的日志 可以使用grep进行过滤,这个在在windows的命令行工具都不支持,我使用的是GitBashshell命令行工具,可以使用这一功能。

adb logcat | grep com.companyname.mauiapp1

这样就只会输出mauiapp1的日志了。执行上面的命令后,点击mauiapp1应用图标启动应用,得到我们应用启动到崩溃的所有日志如下:

06-16 10:21:11.953  1424  1424 D Launcher2.2.10: flow not clicked com.companyname.mauiapp1crc64e632a077a20c694c.MainActivity
06-16 10:21:11.953  1424  1424 D Launcher2.2.10: flow click desktop com.companyname.mauiapp1crc64e632a077a20c694c.MainActivity
06-16 10:21:11.953   424   466 I ActivityManager: START u0 {act=android.intent.action.MAIN flg=0x10200000 cmp=com.companyname.mauiapp1/crc64e632a077a20c694c.MainActivity} from uid 10072
06-16 10:21:11.958   424   466 E ActivityManager: getPackageFerformanceMode--ComponentInfo{com.companyname.mauiapp1/crc64e632a077a20c694c.MainActivity}----com.companyname.mauiapp1
06-16 10:21:11.967   424  1456 E ActivityManager: getPackageFerformanceMode--ComponentInfo{com.companyname.mauiapp1/crc64e632a077a20c694c.MainActivity}----com.companyname.mauiapp1
06-16 10:21:11.987   424  1456 I ActivityManager: Start proc 19415:com.companyname.mauiapp1/u0a97 for activity com.companyname.mauiapp1/crc64e632a077a20c694c.MainActivity
06-16 10:21:12.173 19415 19415 D debug-app-helper: Checking if libmonodroid was unpacked to /data/app/com.companyname.mauiapp1-Wpq5srmqUiNM5498jRmH8Q==/lib/arm/libmonodroid.so
06-16 10:21:12.173 19415 19415 D debug-app-helper: Native libs extracted to /data/app/com.companyname.mauiapp1-Wpq5srmqUiNM5498jRmH8Q==/lib/arm, assuming application/android:extractNativeLibs == true
06-16 10:21:12.173 19415 19415 D debug-app-helper: Added filesystem DSO lookup location: /data/app/com.companyname.mauiapp1-Wpq5srmqUiNM5498jRmH8Q==/lib/arm
06-16 10:21:12.173 19415 19415 W debug-app-helper: Using runtime path: /data/app/com.companyname.mauiapp1-Wpq5srmqUiNM5498jRmH8Q==/lib/arm
06-16 10:21:12.173 19415 19415 W debug-app-helper: checking directory: `/data/user/0/com.companyname.mauiapp1/files/.__override__/lib`
06-16 10:21:12.173 19415 19415 W debug-app-helper: directory does not exist: `/data/user/0/com.companyname.mauiapp1/files/.__override__/lib`
06-16 10:21:12.173 19415 19415 W debug-app-helper: Checking whether Mono runtime exists at: /data/user/0/com.companyname.mauiapp1/files/.__override__/libmonosgen-2.0.so
06-16 10:21:12.173 19415 19415 W debug-app-helper: Checking whether Mono runtime exists at: /data/app/com.companyname.mauiapp1-Wpq5srmqUiNM5498jRmH8Q==/lib/arm/libmonosgen-2.0.so
06-16 10:21:12.173 19415 19415 I debug-app-helper: Mono runtime found at: /data/app/com.companyname.mauiapp1-Wpq5srmqUiNM5498jRmH8Q==/lib/arm/libmonosgen-2.0.so
06-16 10:21:12.192 19415 19415 W monodroid: Creating public update directory: `/data/user/0/com.companyname.mauiapp1/files/.__override__`
06-16 10:21:12.198 19415 19415 F monodroid: No assemblies found in '/data/user/0/com.companyname.mauiapp1/files/.__override__' or '<unavailable>'. Assuming this is part of Fast Deployment. Exiting...
06-16 10:21:12.275 19433 19433 F DEBUG   : pid: 19415, tid: 19415, name: nyname.mauiapp1  >>> com.companyname.mauiapp1 <<<
06-16 10:21:12.284 19433 19433 F DEBUG   : Abort message: 'No assemblies found in '/data/user/0/com.companyname.mauiapp1/files/.__override__' or '<unavailable>'. Assuming this is part of Fast Deployment. Exiting...'
06-16 10:21:12.288 19433 19433 F DEBUG   :     #01 pc 0001b08b  /data/app/com.companyname.mauiapp1-Wpq5srmqUiNM5498jRmH8Q==/lib/arm/libmonodroid.so (xamarin::android::internal::MonodroidRuntime::create_domain(_JNIEnv*, xamarin::android::jstring_array_wrapper&, bool, bool)+282)
06-16 10:21:12.288 19433 19433 F DEBUG   :     #02 pc 0001c08f  /data/app/com.companyname.mauiapp1-Wpq5srmqUiNM5498jRmH8Q==/lib/arm/libmonodroid.so (xamarin::android::internal::MonodroidRuntime::create_and_initialize_domain(_JNIEnv*, _jclass*, xamarin::android::jstring_array_wrapper&, xamarin::android::jstring_array_wrapper&, _jobjectArray*, xamarin::android::jstring_array_wrapper&, _jobject*, bool, bool, bool)+26)
06-16 10:21:12.288 19433 19433 F DEBUG   :     #03 pc 0001d2c5  /data/app/com.companyname.mauiapp1-Wpq5srmqUiNM5498jRmH8Q==/lib/arm/libmonodroid.so (xamarin::android::internal::MonodroidRuntime::Java_mono_android_Runtime_initInternal(_JNIEnv*, _jclass*, _jstring*, _jobjectArray*, _jstring*, _jobjectArray*, _jobject*, _jobjectArray*, int, unsigned char, unsigned char)+4020)
06-16 10:21:12.288 19433 19433 F DEBUG   :     #04 pc 0001d55f  /data/app/com.companyname.mauiapp1-Wpq5srmqUiNM5498jRmH8Q==/lib/arm/libmonodroid.so (Java_mono_android_Runtime_initInternal+50)
06-16 10:21:12.288 19433 19433 F DEBUG   :     #05 pc 0005282f  /data/app/com.companyname.mauiapp1-Wpq5srmqUiNM5498jRmH8Q==/oat/arm/base.odex (offset 0x2e000)
06-16 10:21:12.905   424 19434 W ActivityManager:   Force finishing activity com.companyname.mauiapp1/crc64e632a077a20c694c.MainActivity
06-16 10:21:12.916   424   451 I ActivityManager: Showing crash dialog for package com.companyname.mauiapp1 u0
06-16 10:21:12.976   424   877 I ActivityManager: Process com.companyname.mauiapp1 (pid 19415) has died: fore TOP

我们只关注日志级别为F,E的即可:下面错误信息说明了程序挂掉的原因

06-16 10:21:12.198 19415 19415 F monodroid: No assemblies found in '/data/user/0/com.companyname.mauiapp1/files/.__override__' or '<unavailable>'. Assuming this is part of Fast Deployment. Exiting...
06-16 10:21:12.275 19433 19433 F DEBUG   : pid: 19415, tid: 19415, name: nyname.mauiapp1  >>> com.companyname.mauiapp1 <<<
06-16 10:21:12.284 19433 19433 F DEBUG   : Abort message: 'No assemblies found in '/data/user/0/com.companyname.mauiapp1/files/.__override__' or '<unavailable>'. Assuming this is part of Fast Deployment. Exiting...'

接下来就可以发挥我们程序员的重要技能之一:百度谷歌,能不能搜索正确的答案就看造化了。

看来笔者有点东西,谷歌到了一个类似的案例:https://stackoverflow.com/questions/42336546/xamarin-android-application-crashed-after-clear-data-in-settings

有兴趣的去深究下,这里xamarin的解决办法是关闭 Use Fast Deployment

修改项目配置

经过仔细查看属性配置文件,找到这个配置与stackoverflow的上说的关闭 Use Fast Deployment极其相似,应该就是它了,关闭它再次使用VS以debug模式启动项目。

这次经过稍微漫长的过程,也执行到Found device: 1234567890ABCDEF不动了

手动打开App,没任何效果。

卸载Mauiapp1重试

虽然上一步改了没效果,但我坚信应该就是这样,所以卸载app再试试,排除干扰因素。

Found device: 1234567890ABCDEF之后不再卡住不动了 随后我的设备上也安装并自动打开了Mauiapp1并且没有闪退!

MAUI模板项目闪退问题相关推荐

  1. Android studio项目闪退解决办法(已解决)

    一.新建页面点击闪退: 跳转失败的原因:没有注册希望要跳转到的界面的Activity,Alt+Enter快捷键之后,选择add activity to maniefest.这样做就可以快捷地在Andr ...

  2. UnityHub打开项目闪退

    问题描述 在unityhub中点击打开项目没有任何反应,不报错也没有任何反馈信息: 网上很多资料都表示这是内存不足的问题,但事实上并不全是如此 普通解决办法 方法一:可以先退出unityhub中的账号 ...

  3. 2013新建项目闪退_轮胎裂解炼油项目能审批吗

    我国每年产生的废旧轮胎多达几亿条,废轮胎资源非常丰富,废轮胎裂解炼油是重要的轮胎回收利用渠道之一. 对于废轮胎裂解利用,有关部门出台了一系列的行业政策,轮胎裂解项目是受政策支持的能源再生项目,按照相关 ...

  4. lol老是闪退到桌面_win10

    Win10系统下英雄联盟出现闪退崩溃如何解决 Win10系统下英雄联盟出现闪退崩溃如何解决 Win10系统下英雄联盟出现闪退崩溃如何解决?升级windows10系统的用户越来越多了,但是他们在使用新系 ...

  5. idea 一闪而过_Intellij IDEA打开就闪退或关闭

    找到idea安装目录的bin目录,搜索vmoptions可以看到两个文件,idea.exe.vmoptions idea64.exe.vmoptions1 这两个文件就是IDEA的一些配置文件,带64 ...

  6. FineWord试用,闪退、报警等bug问题解决

    FineReport试用FineWord插件bug问题 此前,已经将FineWord对应的WPS插件.FineReport服务器插件.FineReport设计器插件安装完成. 问题1:登录到finer ...

  7. 〖Android〗从Android Studio转为Eclipse开发项目运行程序闪退的解决方法

    很久没有撸Android App开发了- 最近把一个月前通过反编译.二次修改的Android SSHD项目进行简单修改一下: 突然发现迁移项目时,报了一个错误,同时还出现了闪退情况: 04-29 20 ...

  8. Xamarin Android项目真机测试闪退

    Xamarin Android项目真机测试闪退 项目在模拟器中运行正常,但在真机上闪退.这是由于项目设置使用共享的Mono运行时. Visual Studio中,在项目属性-Android Optio ...

  9. android studio项目改成android.mk编译APP闪退java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader

    android9系统android studio项目改成用android.mk编译v7包--APP闪退java.lang.UnsatisfiedLinkError: dalvik.system.Pat ...

最新文章

  1. 微软职位内部推荐-Software Engineer II
  2. 如何让人工智能更加实际的辅助网络安全
  3. ORACLE 执行计划分析
  4. 51Nod 1050 循环数组最大子段和
  5. nginx绑定freenom.com域名
  6. Cocos2d-x跨AndroidiOS平台开发入门
  7. c++ 不插入重复元素但也不排序_面试官爱问的 10 大经典排序算法,20+ 张图来搞定...
  8. C++新特性探究(13.5):右值引用
  9. c语言字符输出128,如何将128位整数转换为C中的十进制ASCII字符串?
  10. SpringBoot法律知识分享问答论坛 lawbbs.liuyanzhao.com
  11. Java学习路线(转)
  12. 计算机英文参考文献近四年,英文参考文献标准格式
  13. 牛客网刷题记录(3)组合逻辑
  14. 风暴数码论坛教程--厨房的搭建和简介
  15. iNode用户win10开热点手机连接时总显示获取IP中的解决方法
  16. 对PX4参数THR_MDL_FAC的理解
  17. SMD元件尺寸大小公制英制对应说明
  18. 微软的苹果香味——专访微软MacBU组成员
  19. 502问题怎么排查?
  20. WIFI转串口无线传输模块,个人体会

热门文章

  1. 关于Jmeter一直报红
  2. 数理逻辑蕴含_彻底弄懂充要,必要,充分但不必要,必要但不充分以及数理逻辑中的蕴含...
  3. PyCharm创建新项目:Python解释器配置
  4. 烟台大学 计114-3.4 班学生的博客地址
  5. Packet Tracer 命令行 使用
  6. java 单例 内存释放_周小抒 – 梦想仗剑走天涯 | Android中关于Context单例模式引起的内存泄漏以及解决方案...
  7. keil编译时,提示function “xxx“ declared implicitly错误解决办法
  8. cinnamon桌面_使用Cinnamon作为Linux桌面环境的10个理由
  9. segmentation fault (SIGSEGV) 定位方法
  10. 抛物线轨迹 炮弹 实例