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

Launcher3体系化之路

👋 欢迎来到Launcher 3

背景

车企对于桌面的排版布局好像没有手机那般复杂,但也有一定的需求。部分场景下,要考虑的上下文比手机要多一些,比如有如下的一些场景:

  1. 手车互联。HiCar,CarPlay,AndroidAuto,这三个应用,需要桌面对应做一些定制来应付认证,连接状态不同对应不同的图标状态;
  2. 音源切换。在手机端,不同音源类型只需要系统做统一处理即可,但车机端,一旦发声,则需要申请音频焦点,由系统做音频仲裁,然后再决定是否发声;
  3. 在2的前提下,车企智能座舱的桌面,底部一般有个音乐卡片,需要对接不同的音源,比如QQ音乐,网易云,蓝牙音乐,本地电台,USB音乐等,他们一播放,媒体卡片切换成对应的音源及相关内容,这一块较复杂。
  4. Widget的重视。智能座舱总想在这个点做出一些比较花哨的功能,比如常见的长按编辑卡片,出现卡片编辑库,添加库,两者之间可以让卡片互相拖动添加或删除。在此基础上还要有动画实现排挤卡片以及卡片列表显隐动画。
  5. 应用列表。这个功能点本来很简单,但座舱的产品经理总是拿手机做对比,比如手机的应用列表可以拖动换页,拖动排挤很自然还有动画,拖动时Widget与应用icon一起可以联动,分页滑动很丝滑等。
  6. 以上能力的持久化。

现实

车企一般将智能座舱应用软件相关的开发外包给供应商,当前也确实有专业的公司,将这一块做的非常好。

但这类公司没有产品定义权,不同汽车主机厂对于同一个应用的需求差异巨大,那么同一个应用就无法做成体系化来构建基础设施。

常见的场景是应用开发人员总是赶交付节点,总是在处理各种无法理清的依赖,总是对一些复杂的模块无法深入理解,总是吃力不讨好,总是应付屎山一般的代码,恶性循环下,跑路,去应付下一个屎山。

解决方案

Launcher是Android系统中比较复杂的模块,复杂在应用列表中有应用icon,Widget,快捷方式,文件夹,弹窗,动画效果,PMS,AMS等。因为主导过座舱Launcher架构设计,核心模块开发, 主机厂一般仅需要应用列表,多任务,Widget(卡片),壁纸这几个。

比较奇葩的是,壁纸一般在SystemUI中,但因为座舱外包给供应商,有可能存在Launcher和SystemUI不是同一家公司开发的情况,就存在壁纸的实现有可能集成在Launcher中。然而不仅仅是壁纸这一个功能,有可能应用列表还需要SystemUI来实现,别问怎么会有这样的事情,因为i have experienced 🙈。

这些问题的出现是大环境下车企压缩成本求生存求利润,掌控产品定义争取白嫖供应商,多处赛马择优录取,层层传递,到底层程序员,工时博弈与压缩,复杂功能模块迎来送往,总得有一个冤大头接下,于是怪诞之事变得平常。

总而言之,搞出一套方法论来应付总是可以。如果把Launcher3中应用列表,Widget列表,持久化分开作为不同的module,也就是将Workspace,CellLayout,DragLayer等复杂的类屏蔽,上层仅需要将他们排列组合即可应付这种复杂多变的交付需求。所以就有如下几个步骤去实现:

  • Launcher3模块化-应用列表

  • Launcher3模块化-Widget列表

  • Launcher3模块化-持久化

Launcher3架构

在这里插入图片描述

这里仅关心应用列表和弹窗,最近任务暂时列为todo.

所以弹窗和Widget,数据库持久化作为定制需求较大的功能,成为目标:
在这里插入图片描述

目标将在后续文章中逐步拆解并实现。

http://www.lqws.cn/news/65521.html

相关文章:

  • python打卡day42
  • vscode 代理模式(agent mode),简单尝试一下。
  • 02.05、链表求和
  • debian12.9或ubuntu,vagrant离线安装插件vagrant-libvirt,20250601
  • Maven(黑马)
  • mybatis02
  • while循环判断数字位数
  • MobaXterm国内下载与安装使用教程
  • 【位运算】两整数之和(medium)
  • nt!MiDispatchFault函数分析之nt!MiCompleteProtoPteFault函数的作用
  • STM32F407寄存器操作(多通道单ADC+DMA)
  • Android第十一次面试补充篇
  • Python训练营打卡 Day42
  • leetcode0404. 左叶子之和-easy
  • 神经网络-Day42
  • Cesium快速入门到精通系列教程三:添加物体与3D建筑物
  • 【渲染】拆解《三国:谋定天下》场景渲染技术
  • POJO、DTO和VO:Java应用中的三种关键对象详解
  • 每日算法-250601
  • 【C++】多态
  • Socket网络编程之UDP套件字
  • Docker安装mitproxy
  • 大规模真实场景 WiFi 感知基准数据集
  • Beta分布Dirichlet分布
  • xPSR
  • DDD架构
  • 28 C 语言作用域详解:作用域特性(全局、局部、块级)、应用场景、注意事项
  • 定时任务:springboot集成xxl-job-core(二)
  • 《Python语言程序设计》2018 第4章第9题3重量和价钱的对比,利用第7章的概念来解答你
  • 【计网】第六章(网络层)习题测试