当前位置: 首页 > article >正文

Android10 系统截屏功能异常的处理

客户反馈的问题,设备上使用状态栏中“长截屏”功能,截屏失败且出现系统卡死问题。

在此记录该问题的处理

一现象:

设备A10上使用系统“长截屏”功能,出现截屏失败,系统死机。

二复现问题并分析

使用设备操作该功能,该问题必现。导出ylog 

A10 日志导出指令:

adb pull /storage/emulated/0/ylog  curscreenanr2/              //后面的路径是存放ylog日志的文件夹名称

三分析ylog

ylog目录如图,crash中有崩溃log 详细如下:

C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: Process: com.android.systemui:screenshot, PID: 4405
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: java.lang.RuntimeException: An error occurred while executing doInBackground()
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at android.os.AsyncTask$4.done(AsyncTask.java:399)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at java.util.concurrent.FutureTask.run(FutureTask.java:271)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at java.lang.Thread.run(Thread.java:919)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: Caused by: java.lang.IllegalArgumentException: width must be > 0
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at android.graphics.Bitmap.checkWidthHeight(Bitmap.java:450)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at android.graphics.Bitmap.createBitmap(Bitmap.java:874)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at android.graphics.Bitmap.createBitmap(Bitmap.java:836)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at com.android.systemui.screenshot.CompareUtils.CompareCropedBitmap(CompareUtils.java:39)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at com.android.systemui.screenshot.GlobalScreenshot$CompareTask.doInBackground(GlobalScreenshot.java:843)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at com.android.systemui.screenshot.GlobalScreenshot$CompareTask.doInBackground(GlobalScreenshot.java:817)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at android.os.AsyncTask$3.call(AsyncTask.java:378)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	... 4 more
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: Process: com.android.systemui:screenshot, PID: 4543
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: java.lang.RuntimeException: An error occurred while executing doInBackground()
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at android.os.AsyncTask$4.done(AsyncTask.java:399)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at java.util.concurrent.FutureTask.run(FutureTask.java:271)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at java.lang.Thread.run(Thread.java:919)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: Caused by: java.lang.IllegalArgumentException: width must be > 0
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at android.graphics.Bitmap.checkWidthHeight(Bitmap.java:450)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at android.graphics.Bitmap.createBitmap(Bitmap.java:874)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at android.graphics.Bitmap.createBitmap(Bitmap.java:836)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at com.android.systemui.screenshot.CompareUtils.CompareCropedBitmap(CompareUtils.java:39)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at com.android.systemui.screenshot.GlobalScreenshot$CompareTask.doInBackground(GlobalScreenshot.java:843)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at com.android.systemui.screenshot.GlobalScreenshot$CompareTask.doInBackground(GlobalScreenshot.java:817)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at android.os.AsyncTask$3.call(AsyncTask.java:378)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	... 4 more

可以看到关键日志

查看packages/SystemUI/src/com/android/systemui/screenshot/CompareUtils.java中,

设备分辨率w*h=240x320. 图上部分值为0,所以异常,

四解决方案:

将以上的margin数据修改为10,使其计算结果值>0即可

OVER~


http://www.kler.cn/a/596480.html

相关文章:

  • python每日十题(5)
  • HTML超链接
  • 网络层之IP协议
  • 网络HTTPS协议
  • 从碎片化到标准化:案例详解 MCP 如何重塑 AI Agent 开发生态?
  • WEBUI插件和UE5通讯
  • 爬虫——playwright获取亚马逊数据
  • 2025年3月AI搜索发展动态与趋势分析:从技术革新到生态重构
  • 清洁机器人垃圾物识别与智能分类回收系统研究(大纲)
  • 【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的 RESTful API 设计:从上手到骨折
  • MyBatis 中 #{} 和 ${} 的区别详解
  • [思考记录]两则:宏观视角、理想化
  • 高等数学-第七版-上册 选做记录 习题5-2
  • 手机怎么换网络IP有什么用?操作指南与场景应用‌
  • MySQL高频八股——索引
  • Cables Finance 即将发布新的积分奖励计划及代币空投
  • 项目日记 -云备份 -服务器配置信息模块
  • Kafka consumer_offsets 主题深度剖析
  • SSE详解面试常考问题详解
  • HTTP 失败重试(重发)方案