By 高煥堂
内容
1. 从Android的多层框架体系视角切入
2. 看待Android架构的十个制高点(新视角)
2.1 API = 话语权
2.2 应用框架:用来框住应用(App)的架构
2.3 框架调用App,不是App调用框架
2.4 JNI: C调用Java,不是Java调用C
2.5 重视跨平台设计,才能建立自己平台
2.6 没钱就改版,改版就有钱
2.7 软硬整合开发,硬硬结合销售
2.8 质量保证 = 跨平台架构设计+测试
2.9 项目管理:可以搭配敏捷(Agile)开发
2.10 未来性:以软件接口包装通信协议
1. 从Android的多层框架体系视角切入
欲掌握Android的知识体系,从框架角度切入,可以找到它的甜心点(Sweet Spot)。由于它是一个开源开放的架构,我们可以直接切入核心,看到树干结构,一目了然;而不必像iOS、Win8等封闭平台,只能从外部功能(树叶)去猜测底层架构。所以,欲掌握Android架构体系,从它的多层框架体系视角切入,是最有效的途径。其框架体系如下:
图-1. Android的多层框架体系
基于这个框架体系,再将众多功能(子系统)的模块添挂上去,每一项子系统就如同一棵完整的树,有树叶、树干、树根等。例如,MediaPlayer播放功能,就含有Java、JNI、系统服务、HAL等完整的体系(即一棵完整的树);如下图所示:
图-2. Android平台就像一座森林,由很多棵树所组成
Android就如同一座森林,由Bluetooth、MediaPlayer等众多的树所组成的。上图看来是蛮有规律的,然而更具规律性的是:各层框架的基本元素,其代码造形(Form)是一致的,如下图:
图-3. 以<EIT造形>去看各层框架
例如,在Activity-View架构看似很复杂,其实只是两个主要的EIT代码造形所组合而成的。如下图所示:
图-4. 基于简单造形,去掌握复杂的架构
俗语说,内行人看门道;专业的视角、专业的造形(Form)和模式(Pattern)就是其中之道。
2. 看待Android架构的十个制高点(新视角)
大家都知道,创新不一定要去发明全新的东西,变换一些全新视角(View)来看原有事物,做不一样的联想、以新的连结&组合,做为新产品的独特架构,只要能更贴近用户的需要和口味,就能创造获利机会。Android设备愈来愈多、百花齐放,提供了无限大的组合创新空间;记得,变换观点、独特组合、贴近用户、努力经营,就能捕捉到好机运;千载难逢的好机会,不要错过。
图-5. 流畅地变换新视角
大家都会希望能愈流畅地变换新视角,但却往往被自己内心深处的假设(Assumption)所局限了。尤其,有许多内心的假设,是连自己都不自觉的、长久以来都信以为真(理)的,未曾质疑过它;从现在开始,试着经常反思内心的假设,审视它、放宽它,新视角就出现了,商机也就浮现出来了。关于反思内心的假设,可参考:”高老师的设计思考三部曲”。
在本文里,将与您一起变换视角;一方面反思你内心深处的假设,一方面变换出十个新视角,来重新看看你已经很熟悉的Android系统架构。这十个新视角如下:
2.1 API = 话语权
◆ 在Android 潮流下,商业成功的钥匙就藏在API隙缝中
◆ 全面性理解框架API,即能拥有成功密码、造就天使,并成为商业竞争下的赢家
◆ 对API拥有主导权,就能在商业上获得主导地位,就会是赢家。
◆ API与UI不同
◆ UI是App与用户的交互接口
◆ API则泛指软件模块间的接口,可分为:
SI:本架构与外部系统之间的接口
PI:本架构与内部挿件(Plug-in)之间的接口
一般API:本架构与应用程序(App)之间的接口
◆ 掌握API定义权,就拥有话语权(主导权)
2.2 应用框架:用来框住应用(App)的架构
◆ 框架的基本组成元素:EIT代码造形(Form)
◆ 造形的<I>就是API
◆ 框架是鱼饵,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 未来性:以软件接口包装通信协议
◆ 通信协议的善变是本质性的
◆ 软件接口可以包容善变的协议
◆ 例如,以软件的Socket接口包装Zigbee或Bluetooth的善变性
~ end ~