AndroidFramework
文章平均质量分 92
车载AndroidFramework入门系列
林多
汽车行业多年软件开发经验,曾任开发组长、架构师。目前从事车载系统框架开发工作。
展开
-
【Android12】Monkey压力测试源码执行流程分析
Monkey是Android提供的用于应用程序自动化测试、压力测试的测试工具。通过Monkey,可以模拟用户的Touch(单指、多指、手势)、按键(key)事件等,检测应用程序发生的ANR、Crash事件,并收集相关Debug信息等。原创 2024-02-25 18:27:45 · 887 阅读 · 0 评论 -
【Android12】Android Framework系列---Adb和PMS安装apk源码流程
通过adb install安装apk,大概流程是 adb(client)端通过socke命令给adbd(service),然后adbd通过ServiceManager以Binder方式将命令发送给PackageManagerService。PackageManagerService解析命令,复制APK及相关资源到指定路径,并更新系统中APK相关配置信息。原创 2024-01-21 17:51:16 · 1370 阅读 · 0 评论 -
【Android12】Android Framework系列---tombstone墓碑生成机制
墓碑初始化及生成流程中,可以通过属性控制是否注册墓碑、是否生成墓碑,以及墓碑文件的数量等功能。同时,也可以根据业务需求,在墓碑中加入自定义内容,比如给墓碑文件的名字追加特殊的时间戳、追加一些自定义日志到墓碑中等等。原创 2023-12-30 21:44:02 · 1884 阅读 · 1 评论 -
【Android12】WindowManagerService架构分析
WindowManagerService(以下简称WMS) 是Android的核心服务。WMS管理所有应用程序窗口(Window)的Create、Display、Update、Destory。因为Android系统中只有一个WMS(运行在SystemServer进程),可以称其为全局的WMS。其主要的任务有两个:原创 2023-12-16 19:21:37 · 1320 阅读 · 0 评论 -
【Android12】Android Framework系列--AMS启动Activity分析
通过ActivityManagerService(AMS)提供的方法,可以启动指定的Activity。比如Launcher中点击应用图标后,调用AMS的startActivity函数启动应用。AMS提供的服务通过IActivityManager.aidl文件定义。原创 2023-12-10 18:18:54 · 1189 阅读 · 0 评论 -
【Android】Android Framework系列--Launcher3桌面图标加载流程
Android Launcher3(简称Launcher)启动后会加载桌面。基于Android12代码,分析一下桌面加载的流程。Launcher被Android AMS拉起后,进入自己的生命流程。Launcher.java 中的onCreate函数被调用,准备开始加载桌面。原创 2023-12-02 21:37:18 · 1398 阅读 · 0 评论 -
【Android】Android Framework系列--Launcher3各启动场景源码分析
Launcher3的启动场景主要包括:开机后启动:开机时,android ams服务拉起Launcher按键启动:比如短压home键,android wms中的PhoneWindowManager拉起Launcher异常崩溃后启动:Launcher异常崩溃后,android ams再次拉起Launcher原创 2023-11-26 13:54:39 · 1537 阅读 · 0 评论 -
【Android】Android Framework系列--CarUsbHandler源码分析
CarUsbHandler是Android Car提供的服务之一,其用车载USB连接的场景。车载USB有其特殊应用场景,比如AndroidAuto、CarLife等。而Android的做法是在其原有的USB服务上,扩展了专门针对CarUSB的Service。原创 2023-11-19 14:19:58 · 777 阅读 · 0 评论 -
【Android】Android Framework系列---CarPower电源管理
Vehicle HAL的电源状态一般来讲是来自于MCU的(can通信 或者以太网通信,具体形式由Vehicle HAL和相关供应商决定)。智能座舱通常包括中控系统、仪表系统、IVI系统 、后排娱乐、HUD、车联网等。由于汽车自身的特殊供电环境(相比手机方便的充电环境,汽车的蓄电池如果没有电是需要专业人士操作的),其电源状态会比较复杂,既要满足车内的座舱系统启动足够快,又要保证汽车蓄电池的可考性,所以出了开机(on)、关机(off)外,会多出来一些电源状态(Suspend、STR、SLEEP等等)原创 2023-10-29 19:24:51 · 681 阅读 · 1 评论 -
【Android】Android Framework系列---CarPower深度睡眠STR
Android进入Deep Sleep后,关闭屏幕、关闭CPU的电源,保持RAM的电源(激活状态)。深度睡眠会进行Suspend-to-RAM挂起到内存(做车载的经常会听到的STR)。当然深度睡眠,还一种是挂起到硬盘(Suspend-to-Disk),不过目前主要用的是STR。所以STR是深度睡眠时的状态,但STR不等于深度睡眠。原创 2023-11-05 13:18:33 · 1116 阅读 · 0 评论 -
【Android】Android Framework系列---输入法服务
车载项目需要定制输入法,也有一些POC演示的项目使用原生比如LatinIME(源码路径为/packages/inputmethods/LatinIME),关于输入法可能会遇到以下一些问题输入法进程启动崩溃输入法画面被其他应用遮挡输入法输入内容显示到错误的编辑框内多屏情况下输入法显示异常输入法未弹出或输入法未隐藏定制多屏多客户端输入法上面举了一些常见例子,实际开发过程中也会有定制输入法服务这类需求。原创 2023-10-21 18:09:47 · 740 阅读 · 0 评论