大型 Android 系统重构实战
黄俊彬
Thoughtworks 资深咨询师
2840 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 29 讲
大型 Android 系统重构实战
15
15
1.0x
00:00/00:00
登录|注册

25|Android系统解耦:殊途同归,Android系统组件化之路

你好,我是黄俊彬。
上节课,我们一起了解了 Android 系统的架构,讨论了厂商在定制 Android 系统过程中一些常见的耦合问题。耦合不仅仅是一种代码上的问题,也给产品的质量以及团队的效率带来了非常大的影响。
这节课,我们将会学习整机组件化的架构设计,看看如何来解决上节课提到的耦合问题。接着针对这些耦合问题,探讨具体有哪些针对性的解耦策略。

整机组件化

通过上节课的学习,我们知道了 Android 的架构设计本身就是采用了分层组件化的方式,只是由于厂商在定制的过程中,没有遵循架构设计来扩展,才出现了腐化。典型的问题包括应用间的耦合、应用与框架的耦合以及框架与框架间的耦合,如下图所示。
但是定制就意味着增加代码,所以关键问题是如何管理扩展的代码,才能把对原生代码的侵入降到最低,同时又要让系统更独立地演进。
其实解决方法也很简单,就是沿用 Android 系统的架构,让我们自己扩展的代码也形成组件,能够在 Android 原生系统之上灵活插拔,你可以对照下图来理解。
可以看出,厂商主要定制的代码分布在应用、框架与内核层。我们分别从这几层来看看组件化改造的思路。

应用层

第一个是应用层。应用层其实分 2 种类型,第一种是完全自己定制的应用,第二种是扩展 AOSP 中原有的应用(例如桌面、电话本、短信等)。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Android系统组件化是解决Android系统定制过程中耦合问题的重要方法。本文介绍了整机组件化的架构设计,包括应用层、框架与内核层的改造思路,并提出了具体的解耦方法,如约定API协议、封装扩展SDK、减少对原生代码的修改等。组件化解耦对减少代码合并工作、多版本维护工作以及产品质量问题有帮助。通过组件化设计,能够减少分支数量、多版本维护工作,让团队更聚焦在高价值的业务研发和质量打磨工作中。另外,组件化设计还能帮助减少产品的质量问题、提高产品的响应力。文章还探讨了Android系统的架构,了解了研发过程中常见的耦合以及解耦的一些思路。在落地组件化的改造时,可能遇到的最大挑战是系统解耦的复杂度和需要处理的耦合场景更多,特别是相对于框架的解耦,编译调试验证的难度更大。解决之法是采用同样的组件化思路,以业务内聚组件,让组件独立做演进。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大型 Android 系统重构实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • peter
    请教老师几个问题: Q1:从APP开发者的角度,厂商定制会对开发者有哪些影响? 其中,会对APP的适配工作有很大影响吗? Q2:应用B依赖应用A,用SDK,此SDK是由应用B开发、维护吗?, Q3:class AMSImpl没有写implements interface IAMS,是笔误、忘记了吗?还是不用implements?另外,AMSImpl应该是谁维护?组件吗? Q4 APP安全问题。APP开发完成后,安全性方面,有哪些工作需要做?代码混淆就够了吗?“加固”这个词是指什么?

    作者回复: Hi,peter。 Q1:通常影响不会很大,因为定制系统也得过CTS,不是无约束的想怎么改就怎么改。 Q2:通常不是,得有独立的团队开发维护。 Q3:感谢反馈,后续加上。 Q4:混淆是最基础的,加固是将应用文件进行某种形式的转换,包括不限于隐藏,混淆,加密等操作,进一步保护软件的利益不受损坏。

    2023-04-07归属地:北京
收起评论
显示
设置
留言
1
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部