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 ~