By 高焕堂 2012/05/28
观摩Android的多层框架体系
1. 掌握Android的知识体系
欲掌握Android的知识体系,从多层框架角度切入,可以找到它的甜心点(Sweet Spot)。由于它是一个开源开放的架构,我们可以直接切入核心,看到树干结构,一目了然;而不必像iOS、Win8等封闭平台,只能从外部功能(树叶)去猜测底层架构。所以,欲掌握Android架构体系,从它的多层框架体系视角切入,是最有效的途径。其框架体系如下:
图-1. Android的多层框架体系
基于这个框架体系,再将众多功能(子系统)的模块添挂上去,每一项子系统就如同一棵完整的树,有树叶、树干、树根等。例如,MediaPlayer播放功能,就含有Java、JNI、系统服务、HAL等完整的体系(即一棵完整的树);如下图所示:
图-2. Android平台就像一座森林,由很多棵树所组成
其实,框架本身就是一种较大的造形(Form),而上图里的 Bluetooth、Sensor和MediaPlayer等都是此造形的内涵(Content)。例如,可以将MediaPlayer内涵摆入这个多层框架里。[歡迎光臨 高煥堂 網頁: http://www.cnblogs.com/myEIT/ ]
在Android官方的文件上,也详细说明了这个MediaPlayer子系统的上下层模块互动关系。如下图:
依序,可以继续增添各式各样的子系统(内涵)。例如,Location子系统,如下图:
在Android官方的文件上,也详细说明了这个Location子系统的上下层模块互动关系。如下图:
Android就如同一座森林,由Bluetooth、MediaPlayer等众多的树所组成的。上图看来是蛮有规律的,然而更具规律性的是:各层框架的基本元素,其代码造形(Form)是一致的,如下图:
图-3. 以<EIT造形>去看各层框架
例如,在Activity-View架构看似很复杂,其实只是两个主要的EIT代码造形所组合而成的。如下图所示:
图-4. 基于简单造形,去掌握复杂的架构
俗语说,内行人看门道;专业的视角、专业的造形(Form)和模式(Pattern)就是其中之道。在本课程里,将带领大家以内行人的视角,来解析Android的架构和机制。此外,在解析既有框架之际,也能深刻理解这些造形或模式的使用绝窍,未来便能结合行业别领域知识,轻易开发出行业型应用框架了。
2. 看待Android多层架构体系的十个重要视角
2.1 API = 话语权
◆ API与UI的区别
◆ UI:App与用户的交互接口
◆ API包括:
- SI:本架构与外部系统之间的整合接口
- PI:本架构与内部挿件(Plug-in)之间的接口
- 一般API:本架构与应用程序(App)之间的接口
◆ API是鱼钩,掌握API才是强龙
2.2 应用框架 = 用来框住应用(App)的架构
- 框架基类(Base Class)实现API
- 框架基类是鱼饵,是送人的礼物
- 送越多,市场版图越大
2.3 框架调用App,不是App调用框架
- 用户没有直接碰触软件(App)
- 用户碰触的都是硬件
- 硬件通知框架,框架调用App
2.4 JNI = C调用Java,不是Java调用C
- Java层的框架(基类)是送人的礼物
- 所以关键模块,以及控制点必须放在C/C++层
- 控制点透过JNI控制Java层的框架(基类),基类控制App
2.5 重视跨平台设计,才能建立自己平台
- 必须使用别人芯片平台,如何能摆脱别人的牵绊?
- 必须使用Android软件平台,如何协天子(Android)以令诸侯?
- 如何跨越Android的版本升级和碎片化障碍?
- 应用软件如何跨<操作系统>平台(如Android、iOS等)呢?
- 互联网&电信厂商如何追求跨终端平台(如TV, Pad等)?
- 终端产品如何云端(Cloud)平台?
2.6 没钱就改版,改版就有钱
- 终端厂商的底层软&硬件模块变动自由度非常重要
- 如此,创造”没钱就改版,改版就有钱”的机会
- 上层模块不能要求底层的稳定不变,而是要处处维护底层变动自由度
2.7 软硬整合开发,硬硬结合销售
- 如苹果公司的主(大)硬件种类不多,但其(小)配件总类多达600多种
- 软硬整合能涵盖大、小硬件整合一起销售
- 小配件的短期获利,能调降主硬件售价,扩大市场地盘
2.8 质量保证 = 跨平台架构设计+测试
- 系统架构设计与测试两者携手,一起摆脱别人平台的牵绊,然后提高质量,振翅高飞
- 检验别人(平台)软、硬件模块的功能
- 测试您自己(平台)软、硬件模块的功能
- 测试您的软硬整合平台框架&API
- 测试您自己的应用(App)程序代码
- 测试UI体验(look and feel)
2.9 项目管理:可以搭配敏捷(Agile)开发
- 为什么敏捷开发与Android是个很好的搭配呢?
- 理由(一):Android有测试框架,可建立TDD测试机制来推动迭代过程
- 理由(一):Android框架内涵是代码,满足敏捷原则:”各项设计必须迅速落实为代码”
- 这很有利于密切配合敏捷迭代过程,并漂亮地”落地”在Android平台上
2.10 未来性:以软件接口包装通信协议
- 通信协议的善变是本质性的
- 软件接口可以包容善变的协议
- 例如,许多人都盼望通信(协议)的标准化,如下图。虽然,标准化也是设计途径之一,但是系统是永续发展的,而通信技术是日新月异的,试图统一善变的科技,在实务上显示其效果的局限性。
- 使用软件的<E&I>来包容过去、现在和未来的通信协议,提升了持续发展的未来性。如下图:
3. 结语
EIT造形是一个较小的框架;而框架是一个较大的造形。造形与内涵可以分离,所以可以先建立多层框架体系,然后将内涵添加进去。过去,许多人并没有将造形和内涵分离,大多先建立底层平台(包括内涵),再建立中层平台(包括内涵),然后建立上层平台(包括内涵),依序迭上去。当你阅读本文之后,就会以框架和造形思维去看多层平台(框架)体系了。多层框架体系就如同一座森林(造形),而众多子系统就像许多棵树木(内涵)一样,可以不断地添加进去。这就是现在流行的多层框架体系了。◆
[Go Back]