资讯详情

MAUI模板项目闪退问题

MAUI模板项目闪回问题

MAUI刚发布的时候,我创建了几个模板项目来体验,没有遇到任何坑。由于餐饮行业收银机(Android系统)最近需要开发一款应用,这款收银机一般配置不是很好,系统版本和性能肯定比不上我们自己的手机。做技术选择的时候,首先想到了MAUI,备选Flutter,React Native。大厂维修的跨平台应用框架正在使用中MAUI框架时遇到新建的模板应用居然启动时直接闪退,最终也是解决了这个闪退问题,遂分享下这一经历。

创建项目

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

新建MAUI模板项目

用VS新建MAUI模板工程如下

5203f529e8785b588ba96ed29583d78b.png默认项目名称MauiApp1

连接设备

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

  • 打开目标设备的开发者模式usb调试(百度必须/谷歌)

  • 手机上切换usb通常会出现调试模式 只有充电,文件传输。,简单粗暴地切换各种选项,当VS列出你的设备。

调试项目

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

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

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

解决闪退问题

以前也用过android studio本地安卓应用程序已经开发出来,这个问题通常可以存在IDE错误的输出可以通过错误的信息找到闪回的原因。

回顾刚才的问题,不知道去哪里查日志,怎么看闪退的原因?VS能像android studio只需查看详细的日志即可。目前还不知道有没有地方看详细的。debug日志。我选择了一种更常见的调查错误的方法:adb工具。

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

您需要将接下来的流程adb将目录添加到环境变量中PATH只有在中间,才能全局使用adb命令。

常用命令

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

adbshellpmlistpackages

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

adbshellpmlistpackages-s

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

adbshellpmlistpackages-3

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

adbshelldumpsysactivity|findstrmFocusedActivity

清除应用数据和缓存

adbshellpmclear应用包名

查看日志

adblogcat

V:细节(最低优先级) D:调试 I:信息 W:警告 E:错误 F:严重 S:沉默(最高优先级,没有输出任何内容)

找到我们要看的日志

  • 确认adb识别您的设备

$adbdevices Listofdevicesattached 1234567890ABCDEFdevice
  • 找出我们的包名

$adbshellpmlistpackages-3 ... package:com.landi.print.service package:com.companyname.mauiapp1 ...

包名为:com.companyname.mauiapp1

  • 使用logcat

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

adblogcat|grepcom.companyname.mauiapp1

这会输出mauiapp1日志。执行上述命令后,单击mauiapp1所有从应用程序开始到崩溃的日志如下:

06-1610:21:11.95314241424DLauncher2.2.10:flownotclickedcom.companyname.mauiapp1crc64e632a077a20c694c.MainActivity 06-1610:21:11.95314241424DLauncher2.2.10:flowclickdesktopcom.companyname.mauiapp1crc64e632a077a20c694c.MainActivity 06-1610:21:11.953424466IActivityManager:STARTu0{act=android.intent.action.MAINflg=0x10200000cmp=com.companyname.mauiapp1/crc64e632a077a20c694c.MainActivity}fromuid10072 06-1610:21:11.958424466EActivityManager:getPackageFerformanceMode--ComponentInfo{com.companyname.mauiapp1/crc64e632a077a20c694c.MainActivity}----com.companyname.mauiapp1 06-1610:21:11.9674241456EActivityManager:getPackageFerformanceMode--ComponentInfo{com.companyname.mauiapp1/crc64e632a077a20c694c.MainActivity}----com.companyname.mauiapp1 06-1610:21:11.987&nsp;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

标签: wpq铝合金材料传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台