Android本身是一套软件堆叠(Software Stack),或者成为软件叠层架构,叠层主要分成三层:操作系统、中间件和应用程序。
Android构架
1. Application 应用程序层:用Java语言编写的运行在虚拟机的程序
用户直接使用的功能,其基本应用比如:电话、联系人、短信、邮件等,还有无数第三方应用。
2. Application Framework 应用架构层:编写Google发布的核心应用程序的API框架
开发应用程序使用的基础组件,相当于供应用程序调用的API、Java开发,包括:丰富的界面控件、Content Provider,数据存储组件,应用程序可以通过Content Provider分项数据给其他应用,也可以访问其他程序的数据,A Resource Manager,资源管理器,帮助应用程序访问图片,布局文件等资源,A Notification Manager,提示信息管理器,An Activity Manager,主要负责管理应用程序的生命周期和调用栈等。
3. Android Runtime 系统运行库层:
包括两个部分,一是运行环境:应用程序的运行空间,包括一个实现Java语言大多数功能的核心库,以及一个类似Java虚拟机的Dalvik虚拟机,所有应用程序都是运行在虚拟机中。二是库文件界面:一系列的C/C++库,相当于Android系统在Linux核心系统上的功能扩展,为Application Framework层的许多功能提供支持。
4. Linux Kernel 核心层:
Linux 核心,Android的基础,基于2.6的版本,基本的操作系统组件,包括内存管理,进程管理,存储管理,网络栈,驱动模型等等。
Android建立在Linux内核之上,但是Android不是Linux,它没有支持本地窗口系统,没有支持glibc运行库,没有包含完整的Linux内核。
Android系统特点
1. 开放性
2. 应用程序无限性:Android上的应用程序可以通过标准API访问核心移动设备功能,通过互联网,应用程式可以声明它们的功能可供其他应用程序使用。
3. 应用程序是在平等条件下创建的:移动设备上的应用程序可以被替代或扩展。
4. 应用程序可以轻松嵌入网络
5. 应用程序可以并行运行:在后台运行时,应用程序可以生成通知来引起用户注意。
Linux文件系统结构
Android系统基于Linux,因此,做Android测试掌握一定的Linux知识是必要的。Linux文件系统结构是用户空间和内核中与文件系统相关的主要组件之间的关系:
用户空间包含一些应用程序和GUN C库,它们为文件系统调用提供用户接口。
VFS是底层文件系统的主要接口,这个组件导出一组接口,然后将它们抽象到各个文件系统。
有两个针对文件系统对象的缓存:inode cache 和 dentry,它们缓存最近使用过的文件系统对象。
缓冲区缓存会缓存文件系统和相关块设备之间的请求。
Linux文件系统采用阶层式树状目录结构,最上层是"/",然后再下边创建其他的目录,如/bin。