Android采用分层的架构,分为四层,从高层到底层分为应用程序层(app+System apps),应用程序框架层(Java API Framework),系统运行库和运行环境层(Libraries + android Runtime)和Linux核心层(HAL+ Linux Kernel),如下图所示:


Android平台示意图

还有一张中文简化版的分层图如下:


Android分层图

1. Linux核心层

linux内核(Linux Kernel)

Android平台的基础,直接和硬件打交道。硬件驱动、进程管理、内存管理、网络管理的功能在这里实现。

硬件抽象层(Hardware Abstraction Layer)

为上层的Java API Framework提供相关硬件的界面显示,Audio,Bluetooth等是组成硬件抽象层的库模块,实现每个硬件的界面显示功能。

2. 系统运行库和运行环境层

Android 运行环境(Android Runtime)

Android 5.0(API 21)之前使用的是Dalvik虚拟机,之后被ART所取代。
ART是Android操作系统的运行环境,通过运行虚拟机来执行dex文件。其中,dex文件是专为安卓设计的的字节码格式,好处多多,不再赘述。Android toolchain(一种编译工具)可以将Java代码编译为dex字节码格式,过程如下图,jack是一种编译工具链(tool chain)


Java代码编译为dex代码

为了便于理解,做个类比,我们都知道,java程序的运行需要java的核心包的支持,然后通过JVM虚拟机来运行我们的应用程序。在Android中,Android程序的运行需要core Libararies的支持,然后通过ART或者Dalvik来运行该程序。

原生C/C++ 库(Native c/c++ Libraries)

上面提到的ART就依赖于C/C++库。开发者可以通过调用Java API Framework来使用原生库的功能,也可以用Android NDK直接调用原生库。

3. 应用程序框架层

java API Framework

我们最常用的组件和服务都在这一层,也是每一个安卓开发者必须要熟悉的一层,

4. Application层

系统应用(system apps)

可以理解为内置在Android系统的app,我们可以像调用Java API Framework层一样直接调用系统app。

我们也可以自己编写System app,但是要注意系统应用的权限比较特殊,直接写在manifest里面是不行的。需要做特别的处理,参考http://www.programgo.com/article/76213742299/

因此,app开发主要研究Java API Framework层和应用程序层即可,如果有用到JNI,还需要研究一下Native c/c++ Libraries。但是Android运行库和Android运行时主要是从事系统开发的人员需要研究的。把握全局的同时,也要搞清楚重点,毕竟,术业有专攻。·

更多相关文章

  1. Android系统dimension单位详解
  2. Android(安卓)- adb - Linux - 程序“adb”尚未安装
  3. Android设置中清除应用数据源码分析
  4. react native 相关资料
  5. Applying Styles and Themes - 应用Style和Theme - Android官方
  6. Android(安卓)8.1.0 SystemUI 修改之 - 系统锁屏状态下点击用户
  7. Android(安卓)5.1 启动有线网卡并为其分配静态IP地址
  8. Android软件开发之常用系统控件界面整理
  9. 如何调试Android(安卓)Annotation Processor程序

随机推荐

  1. MSSQLSERVER跨服务器连接(远程登录)的示
  2. t-sql/mssql用命令行导入数据脚本的SQL语
  3. mssql函数DATENAME使用示例讲解(取得当前
  4. SQLSERVER加密解密函数(非对称密钥 证书
  5. SQLSERVER全文目录全文索引的使用方法和
  6. sql实现split函数的脚本
  7. SQLSERVER启动不起来(错误9003)的解决方
  8. 2分法分页存储过程脚本实例
  9. MsSQL数据导入到Mongo的默认编码问题(正
  10. 教你轻松学会SQL Server记录轮班的技巧