安卓冻屏bug案例作业分享-千里马学员wms+input实战作业

背景:

近期有学员反馈在aosp14高版本上有了一个新窗口TaskBar,这个但是有需求就是对这个TaskBar进行隐藏,所以有一个需要对这个TaskBar进行进行隐藏需求

隐藏TaskBar需求做了之后发现有如下bug:

问题复现步骤:

因为要实现一个对TaskBar隐藏需求功能,所以这里需要先实现这个需求,正因为实现这个需求后才发现可以复现这个冻屏问题。
普通模拟器需要看到TaskBar

这里普通的手机是无法看到TaskBar,需要进行相关density进行设置,变成平板设备才可以

一般aosp14_r15编译lunch sdk_phone_x86_64后起来后需要再执行一下命令才可以变成平板的显示模式。

cpp 复制代码
adb shell wm density 240

执行后画面变成如下:

修改隐藏TaskBar

只需要TaskbarActivityContext中对mDragLayer进行隐藏,patch如下

cpp 复制代码
test:~/disk2/aosp14/packages/apps/Launcher3$ git diff quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
index a1390aeabb..b3bf3dc283 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
@@ -17,6 +17,7 @@ package com.android.launcher3.taskbar;
 
 import static android.content.pm.PackageManager.FEATURE_PC;
 import static android.os.Trace.TRACE_TAG_APP;
+import static android.view.View.GONE;
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
 import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
 import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
@@ -294,6 +295,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
         } else {
             mWindowManager.updateViewLayout(mDragLayer, mWindowLayoutParams);
         }
+       mDragLayer.setVisibility(GONE);
     }
 
     /**

问题复现步骤

1、设备切换成导航手势模式

2、打开一个短信应用

3、导航手势慢慢上滑一点点距离,然后松开手势不上滑,就可以复现冻屏问题

作业要求

整个作业要求完成以下几个部分,可以按照实现部分得分

1、要求分析出冻屏的原因是什么,为什么画面变得无法触摸

2、分析出来了冻屏原因,再考虑怎么屏蔽TaskBar就会用法该bug,为啥TaskBar存在就不会有该bug

3、给出修改方案,实现屏蔽TaskBar依旧不会产生冻屏问题

更多framework详细代码和资料参考如下链接

投屏专题部分:

https://mp.weixin.qq.com/s/IGm6VHMiAOPejC_H3N_SNg

hal+perfetto+surfaceflinger

https://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg

其他课程七件套专题:

点击这里
https://mp.weixin.qq.com/s/Qv8zjgQ0CkalKmvi8tMGaw

视频试看:
https://www.bilibili.com/video/BV1wc41117L4/

参考相关链接:

https://blog.csdn.net/zhimokf/article/details/137958615

更多framework假威风耗:androidframework007

相关推荐
没有了遇见22 分钟前
Android 原生定位(替代高德 / 百度等三方定位)<终极版本>
android
2501_916008891 小时前
iOS 抓包工具有哪些?全面盘点主流工具与功能对比分析
android·ios·小程序·https·uni-app·iphone·webview
2501_915921431 小时前
iOS混淆工具实战 视频流媒体类 App 的版权与播放安全保护
android·ios·小程序·https·uni-app·iphone·webview
CYRUS_STUDIO2 小时前
LLVM 全面解析:NDK 为什么离不开它?如何亲手编译调试 clang
android·编译器·llvm
CYRUS_STUDIO2 小时前
静态分析神器 + 动态调试利器:IDA Pro × Frida 混合调试实战
android·逆向
g_i_a_o_giao4 小时前
Android8 binder源码学习分析笔记(一)
android·java·笔记·学习·binder·安卓源码分析
翻滚丷大头鱼4 小时前
android 四大组件—BroadcastReceiver
android
人生游戏牛马NPC1号5 小时前
学习 Android (二十) 学习 OpenCV (五)
android·opencv·学习
2501_916008895 小时前
uni-app iOS 日志与崩溃分析全流程 多工具协作的实战指南
android·ios·小程序·https·uni-app·iphone·webview
文 丰5 小时前
【AndroidStudio】官网下载免安装版,AndroidStudio压缩版的配置和使用
android