24|“魔改”的Android系统:厂商定制的Android系统为什么也要解耦?
黄俊彬
你好,我是黄俊彬。
上节课,我们了解了 Android 系统开发的基础框架、编译环境、开发工具等基础知识。这节课,让我们聚焦在架构设计层面,看看定制系统里最容易出现哪些架构耦合问题,这些问题又会给整机产品埋下哪些隐患。
想要分析架构层面的耦合问题,自然要先弄清楚规范的 Android 系统架构长什么样,就让我们从这里开始今天的内容吧!
Android 系统架构
做过 Android 系统定制开发的同学,一定会接触到 AOSP。AOSP,全称是 Android Open Source Project,中文译为“Android 开放源代码项目”。厂商每年会基于 Google 开放的最新代码进行适配定制,开发属于自己的 OS 版本。
首先,我们根据 Android 的架构图来看看 Android 系统架构的设计。
图片来自Google官网介绍 https://source.android.com/docs/core/architecture
对照架构图,我们从上到下来看。在应用框架层上面应该还有一层,就是诸多的应用。
这些应用可以分为 2 类:一类是系统应用,拥有高的系统权限,可以调用系统提供的高权限接口,例如打电话、短信、设置等应用;另外一类就是非系统应用,与第三方应用一样,例如定制一些便签、运动健康、视频播放等应用。
接下来的第一层就是应用框架层,应用框架最常被应用开发者使用,对应用提供标准的 API 来调用系统的能力,从而实现相关的业务功能。我们在代码编译时,通常会依赖 Android SDK 的 android.jar 空包,保证能通过编译。但需要注意的是 android.jar 具体的实现都在框架层中,实际运行时调用的都是系统中的类。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Android系统定制开发中常见的架构耦合问题对团队效率和产品质量造成了影响。这些问题主要包括应用之间的耦合、应用与框架之间的耦合以及框架之间的耦合。这种耦合可能导致功能异常、应用与特定大版本绑定以及增加代码合并工作和并行维护多个版本的难度。文章还介绍了Android系统的架构设计和对Android系统的“魔改”,并指出耦合问题会影响团队效率和产品质量。由于耦合问题,团队需要完成大量重复、机械性的代码合并工作,也需要同时维护多个并行的版本,导致团队无法将精力投入到代码优化和产品质量优化工作上。下一节课将探讨应对这些耦合问题的具体思路。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大型 Android 系统重构实战》,新⼈⾸单¥59
《大型 Android 系统重构实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- Geek_e0fb72应用与框架,框架与框架之间的解耦希望能提供些具体的思路和案例,谢谢
作者回复: 可以参考下一章🤝
2023-04-05归属地:广东 - peter请教老师几个问题: Q1:“android.jar 空包”,空包是什么意思?另外,平时开发中,没有注意到引入了android.jar这个包啊,不管是具体类代码,还是gradle文件中,并没有import这个包。那这个包是怎么导入的?默认导入的吗? Q2:文中的系统架构图,和最常见的安卓系统架构图,是不同的,HAL之上的分层不同,为什么?是不同的描述方法吗?(留言不能贴图,不过相信老师知道我说的“最常见的安卓系统架构图”是什么) Q3:合规性问题,安卓APP开发完成后,要做合规性方面的工作吗?
作者回复: Hi,peter。 Q1:空包是指方法内部没有具体的实现,只是支持编译,实现都在框架里。配置了依赖android sdk就会引用,你可以看下工程里面的依赖。 Q2:架构图,来自官网,不过目前官网又更新了一张最新的,具体可以参考链接:https://source.android.com/docs/core/architecture?hl=zh-cn Q3:需要,特别是手机产商,有些设备需要卖到国外的。
2023-04-05归属地:北京
收起评论