自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 Android R input事件分发流程

由于流程比较繁杂,这里可以先看下InputChannel的创建与初始化详细流程见第5节。

2023-11-10 18:39:42 255

原创 Android,判断是否快速点击

在Android控件中,如果快速点击容易造成一些不同的bug,尤其是那种在click事件中方有耗时操作的代码,容易引起anr,并且有些性能低的机器,在用户点击多次控件的时候很容易出现问题,在车机中也会导致回弹的一系列问题(这里面包括get到的信号导致回弹),针对于这种情况需要做控件快速点击的保护方案。

2024-04-16 14:07:52 504

原创 Android R 展讯平台关机充电动画横屏显示修改

在Android R的系统rom定制化开发中,在关于展讯平台的产品中,系统默认的充电动画是竖屏显示的,但是在像平板的产品中竖屏动画肯定不符合规范, 所以需要在平板TV产品中,充电动画同时也是需要修改为横屏显示的,接下来就来分析下充电动画的相关绘制流程,然后实现功能。

2024-04-15 15:44:46 144

原创 Android R framework修改低电量关机值为2%

在R的系统rom产品开发中,在系统关于低电量关机的值,每个平台都不同,根据实际开发底层硬件的要求看实际情况来调整这个值,所以需要分析相关的电量变化执行的代码流程,来实现这个功能。

2024-04-15 15:09:53 142

原创 Android,AMS、WMS、PKMS添加动态控制debug开关功能

在framework源码中有很多debug开关,通常我们想要看某个模块的日志,比如说广播,就需要去修改源码,把对应的debug值改为true,但是这种方法耗时耗力,比如说我想看sendBroadcast的流程,但是BroadcastQueue中有很多debug开关,如下:这种就需要去修改对应的源码才能去看日志:而下面的做法我们可以直接在cmd窗口去动态控制这个debug开关去输出日志。

2024-04-15 14:34:56 275 1

原创 Android 系统编译 and 应用裁剪

function脚本函数加入到.bashrc中,然后source .bashrc一下.就可以直接用了.修改代码的目录所在:android/framework/base/services/(Android 11以及之后) make framework-minus-apex。修改代码的目录所在:android/framework/base/core/表明使用平台的API,否则无法调用平台的一些hide方法。中,这种方式不好,不利于裁剪的统一个管理.。1.一般常规的裁剪方式,是把模块不加到。

2024-04-11 18:27:52 430 1

原创 线程池使用

在安卓(Android)开发中,线程池是一种非常重要的机制,可用于管理和复用线程,以提高应用程序的性能和响应速度。线程池可以帮助我们避免反复创建和销毁线程的开销,同时可以有效控制并发线程的数量,避免资源耗尽和系统崩溃等问题。线程池是一种线程管理的技术,它包含一个线程队列,用于存储多个线程,并按照指定的规则执行这些线程。在Android开发中,线程池通常通过。是其核心实现类,提供了丰富的配置选项。

2024-04-11 16:02:17 145

原创 Android R 广播注册与发送流程分析

广播接收器可以分为动态和静态,静态广播接收器就是在中注册的,而动态的广播接收器是在代码中通过注册的。这里先从静态广播的流程开始分析。

2024-03-29 16:20:44 851

原创 Android卡顿掉帧问题分析之实战篇

2.

2024-03-27 18:04:33 1737

原创 Android卡顿掉帧问题分析之工具篇

从上面的分析可以看到,谷歌原生在Android系统的很多系统关键流程上都添加了相关的,以观察这些流程执行的耗时情况。但是这些信息覆盖的范围毕竟是有限的,有时候并不能满足我们的分析需求。比如我们开发者想观察自己的一些代码逻辑执行的耗时情况,就需要自己定义一些去度量,这个Systrace机制本身是支持的。如何在代码中添加自定义的Systrace tag信息呢?本着知其然、知其所以然的态度,本小节中我们来简单分析一下系统Systrace机制的原理,看看一份Systrace文件到底是怎么生成的?我们知道。

2024-03-26 17:45:32 745

原创 Android卡顿掉帧问题分析之原理篇

在本节中我们以用户手指上下滑动应用界面的操作场景为例,结合系统源码和Systrace工具,按照执行顺序分析了Android最后总结整个流程大致如下用户手指触摸屏幕后,屏幕驱动产生Input触控事件;框架system_server进程中的EventHub通过epoll机制监听到驱动产生的Input触控事件上报,由InputReader读取到Input事件后,唤醒InputDispatcher找到当前触控焦点应用窗口,并通过事先建立的socket通道发送Input事件到对应的应用进程;

2024-03-25 17:49:37 927

原创 systrace使用

systrace 是分析 Android 设备性能的主要工具。不过,它实际上是多种其他工具的封装容器:它是 atrace 的主机端封装容器。atrace 是用于控制用户空间跟踪和设置 ftrace 的设备端可执行文件,也是 Linux 内核中的主要跟踪机制。systrace 使用 atrace 来启用跟踪,然后读取 ftrace 缓冲区并将其全部封装到一个独立的 HTML 查看器中。

2024-03-25 11:04:10 684

原创 SurfaceFlinger模块

当mLayerClass被初始化成功之后,第三方应用可以通过binder调用,查询SurfaceFlinger进程这个应用的Layer是不是游戏的Layer。可以自定义cpuset,就是可以根据各自的需求,动态配置自定义的cpuset,例如SurfaceFlinger的线程默认跑到4个小核上,假如有个需求要把SurfaceFlinger的线程跑到大核上,就可以配置自定义cpuset,在进入某个场景的时候,把SurfaceFlinger进程pid配置到自定义的cpuset的tasks中。

2024-03-22 11:24:28 1004

原创 Android 屏幕密度参数修改

显示布局异常或者屏幕边框有黑边。

2024-01-18 19:01:34 473

原创 Android R 点击界面出现滑动效果

单指点击屏幕时,出现了滑动效果。

2024-01-18 18:38:30 356

原创 Android R 多用户模式下,用户切换超时过长

快速从A用户切换到B用户,再快速从B用户切换回A用户,导致切换回A用户时,观察到没有触发xx应用的3D效果加载。

2024-01-18 18:15:08 418

原创 Android R config变化优先通知systemui、launcher

切换系统主题时,发现systemUI以及Launcher切换较慢,尤其是在用户快速操作时。而这种变化涉及到ConfigChange,典型的例子就是白天黑夜模式的切换(uimode)

2024-01-18 16:20:24 976

原创 Android画面显示流程分析

通过以上章节的了解,APP的画面要显示到屏幕上大致上要经过如下图所示系统组件的处理:首先App向SurfaceFlinger申请画布(通过dequeueBuffer接口),SurfaceFlinger内部有一个BufferQueue的管理实体,它会分配一个GraphicBuffer给到APP, App拿到buffer后调用图形库向这块buffer内绘画。

2024-01-18 14:01:12 754 1

原创 Android 手柄连接台架异常

游戏手柄连接台架,按键无反应,这个按键是游戏手柄的按键。

2024-01-08 18:31:28 410

原创 Android 点击屏幕,偶现无反应

从视频里面看,点击屏幕,点击应用,无法进入应用,左右滑动屏幕有反应,也就是单点touch事件有问题。

2024-01-08 17:33:41 388

原创 Android 打开xx应用,点击home键,出现黑屏

测试同学在测试过程中,打开了xx应用,然后点击home键,发生黑屏现象。

2024-01-04 18:33:37 1300

原创 Android 开机动画执行完毕后,黑屏十秒左右进入Launcher(车机)

开机动画执行完毕后,车机屏幕黑屏了十秒左右才进入launcher。

2024-01-04 18:13:04 630

原创 Android 调节音量,出现原生音量条(车机)

在通知中心调节音量时,屏幕顶部会出现原生音量条。

2024-01-04 16:36:06 427

原创 adb命令调试(持续记录ing)

u0_a开头的都是Android的应用进程,Android的应用的UID是从10000开始,到19999结束,可以在Process.java中查看到(FIRST_APPLICATION_UID和LAST_APPLICATION_UID),u0_a后面的数字就是该应用的UID值减去FIRST_APPLICATION_UID所得的值,所以,对于截图这个应用进程,它是u0_a155,按前面的规制,它的UID就是155 + FIRST_APPLICATION_UID = 10155。所以这个时间,一般都很短。

2024-01-02 18:25:18 1984 2

原创 Android R Activity启动流程

上述两种情况无疑是根Activity的启动流程是最为复杂的,而且里面的流程也会涉及到普通Activity的启动流程,所以直接从根Activity的启动流程开始分析。

2024-01-02 17:12:00 1656

原创 Android R AMS初始化、启动流程,homeActivity、开机广播流程

调用AMS的构造方法和start方法,对AMS必要的内容进行初始化。将AMS注册到ServiceManager中,同时对system进程也创建了一个ProcessRecord对象,并设置Context的appliation为framework-res的application对象, 由于AMS是Java世界的进程管理及调度中心,要做到对Java进程一视同仁,尽管system贵为系统进程,此时也不得不将其并入AMS的管理范围内。

2023-11-22 20:19:11 139

原创 Android anr关键日志解读

发生ANR的时候,会有两种形式的记录:1.logcat中记录的日志。2.data/anr/目录下生成对应的ANR日志文件。

2023-11-20 19:10:57 366

原创 Android R IMS问题复盘

frameworksnativeservicesdispatcher在InputDispatcher::startDispatchCycleLocked函数中通过getDispatchingTimeoutLocked 获取到超时时间。// focus window不为空if (window!// input事件超时默认值5s..........// 设置超时时间。

2023-11-20 17:52:35 194

原创 Android R IMS初始化流程

创建NativeInputManager实例,作为后面native和java之间的传送点。创建InputDispatcher实例,并将NativeInputManager作为callback传入InputDispatcher中。创建InputReader实例,并将NativeInputManager作为callback传入InputReader中。创建InputClassifier实例,将其作为InputReader与InputDispatcher通信的媒介。

2023-11-02 18:56:43 81

原创 Android R IMS启动流程

为InputDispatcher和InputReader分别创建了InputThread,这两个线程恰好以它们的类名为名。InputDispatcher使用Looper的epoll作为模型,无限运行dispatchOnce(),在没有命令处理时会block在epoll处,当IMS(java层) 或 InputReader有事件要dispatch时,它们会唤醒InputDispatcher。

2023-11-02 18:48:34 89

Android,AMS、WMS、PKMS添加动态控制debug开关功能

Android,AMS、WMS、PKMS添加动态控制debug开关功能

2024-04-15

Android 系统编译 and 应用裁剪

Android 系统编译 and 应用裁剪

2024-04-11

平台应用裁剪1111111

平台应用裁剪

2024-04-11

平台应用demo的Android.mk写法

平台应用demo的Android.mk写法

2024-04-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除