前言:

欲掌握Android架构体系,从它的多层框架体系视角切入,是最有效的途径。大家都会希望能愈流畅地变换新视角,但却往往被自己内心深处的假设(Assumption)所局限了。尤其,有许多内心的假设,是连自己都不自觉的、长久以来都信以为真(理)的,未曾质疑过它;从现在开始,试着经常反思内心的假设,审视它、放宽它,新视角就出现了,商机也就浮现出来了。

如何掌握Android架构的知识体系呢?

ee                                                                        ee

欢迎访问 ==>高老师的博客网页

高焕堂:MISOO(大数据.大思考)联盟.台北中心和东京(日本)分社.总教练


EE                                                                        EE

如何掌握Android架构的知识体系呢?


by 高煥堂

1. 从Android的多层框架体系视角切入

----欲掌握Android的知识体系,从框架角度切入,可以找到它的甜心点(Sweet Spot)。由于它是一个开源开放的架构,我们可以直接切入核心,看到树干结构,一目了然;而不必像iOS、Win8等封闭平台,只能从外部功能(树叶)去猜测底层架构。所以,欲掌握Android架构体系,从它的多层框架体系视角切入,是最有效的途径。其框架体系如下:

如何掌握Android架构的知识体系呢?
图-1. Android的多层框架体系

----基于这个框架体系,再将众多功能(子系统)的模块添挂上去,每一项子系统就如同一棵完整的树,有树叶、树干、树根等。例如,MediaPlayer播放功能,就含有Java、JNI、系统服务、HAL等完整的体系(即一棵完整的树);如下图所示:

如何掌握Android架构的知识体系呢?
图-2.  Android平台就像一座森林,由很多棵树所组成

----Android就如同一座森林,由Bluetooth、MediaPlayer等众多的树所组成的。上图看来是蛮有规律的,然而更具规律性的是:各层框架的基本元素,其代码造形(Form)是一致的,如下图:

如何掌握Android架构的知识体系呢?
图-3.  以<EIT造形>去看各层框架

----例如,在Activity-View架构看似很复杂,其实只是两个主要的EIT代码造形所组合而成的。如下图所示:

如何掌握Android架构的知识体系呢?
图-4.  基于简单造形,去掌握复杂的架构

----俗语说,内行人看门道;专业的视角、专业的造形(Form)和模式(Pattern)就是其中之道。


2.  看待Android架构的十个制高点(新视角)

----大家都知道,创新不一定要去发明全新的东西,变换一些全新视角(View)来看原有事物,做不一样的联想、以新的连结&组合,做为新产品的独特架构,只要能更贴近用户的需要和口味,就能创造获利机会。Android设备愈来愈多、百花齐放,提供了无限大的组合创新空间;记得,变换观点、独特组合、贴近用户、努力经营,就能捕捉到好机运;千载难逢的好机会,不要错过。

如何掌握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 ~


ee                                                                    ee


如何掌握Android架构的知识体系呢?如何掌握Android架构的知识体系呢?

                                                     (高老師的新書 博文視點出版)


EE                                                                     EE