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


ee                                                                        ee

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

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


观摩Android的多层框架体系_第1张图片观摩Android的多层框架体系_第2张图片

EE                                                                        EE

观摩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.  以去看各层框架

例如,在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  未来性:以软件接口包装通信协议

  • 通信协议的善变是本质性的

  • 软件接口可以包容善变的协议

  • 例如,许多人都盼望通信(协议)的标准化,如下图。虽然,标准化也是设计途径之一,但是系统是永续发展的,而通信技术是日新月异的,试图统一善变的科技,在实务上显示其效果的局限性。

  • 使用软件的来包容过去、现在和未来的通信协议,提升了持续发展的未来性。如下图:

3.  结语

  EIT造形是一个较小的框架;而框架是一个较大的造形。造形与内涵可以分离,所以可以先建立多层框架体系,然后将内涵添加进去。过去,许多人并没有将造形和内涵分离,大多先建立底层平台(包括内涵),再建立中层平台(包括内涵),然后建立上层平台(包括内涵),依序迭上去。当你阅读本文之后,就会以框架和造形思维去看多层平台(框架)体系了。多层框架体系就如同一座森林(造形),而众多子系统就像许多棵树木(内涵)一样,可以不断地添加进去。这就是现在流行的多层框架体系了。

DDD&& 參考文章(请点选) &&DDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDD

1. 智能家庭的软硬整合段架构设计>_案例解说

2. <家庭物联网><移动互联网>衔接的案例&实践代码

3. 智能&大数据时代,架构师思维的十个步骤和演练

4. <基于框架(Framework)的平台开发技>百篇文章

5. 高焕堂的9eBooks(可下载)

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD


更多相关文章

  1. 框架模式MVP在Android中的使用
  2. android 系统架构学习
  3. Android 依赖注入(DI)框架 Dagger
  4. Android插件化框架系列之类加载器
  5. Android Jetpack架构组件之Navigation
  6. [转]让IOS像Android一样LinearLayout线性布局、RelativeLayout相

随机推荐

  1. android中指定颜色格式处理
  2. android 播放视频 Android 播放音频
  3. binder机制详解
  4. 【ALearning】第二章 Androidproject知识
  5. ListView中的android:transcriptMode属性
  6. 让Android后台运行,不用service
  7. 使用AChartEngine画柱状图
  8. Android开发者需要面对的8大挑战
  9. 入坑 React Native 之简单分析项目结构
  10. android布局动画实现方法