文章目录
android体系结构
Android系统的底层是基于linux系统(linux2.6内核)之上,和其他的操作系统一样Android也采用分层的架构,从底到高分别是:Linux内核层(Linux Kernel)、Android系统运行层(包括Android Runtime和原生态的c/c++库Native C/C++ Libraies)、Java Api框架层(Java Api Framework)、Applications 应用层。
Linux kernel
Android系统建立在linux2.6之上。linux内核提供了 安全性、内存管理、进程管理、网路协议栈和驱动模型等核心系统服务,即Android系统的底层硬件驱动由Linux kernel内核负责。除此之外,linux内核也是系统硬件和软件叠层之间的抽象层。
Android系统运行层
C/C++库
Android包含了C/C++库的集合,通常情况下Android应用开发者不能直接调用,需要通过java Api层来调用。
- 系统C库
一个从BSD系统派生出来的标准出来C系统库(libc),并且专门为嵌入式Linux设备调整过。 - 媒体库
基于PacketVideo的OpenCORE,这套媒体库支持播放和录制音频和视频格式,以及查看静态图片。主包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等多媒体格式。 - Surface Manager
管理对显示子系统的访问,并可以对个应用程序中的2D和3D图像提供无缝整合。 - LibWebCore
一个全新的Web浏览器引擎,该引擎为Android浏览器提供支持,也为WebView提供支持,WebView完全可以嵌入开发者自己的应用程序中。 - SGL
底层的2D图像引擎。 - 3D libraries
基于OpenGL ES API实现的3D系统,这套系统3D库既可以使用硬件3D加速,也可以使用高度优化的软件3D加速。 - FreeType
位图和向量字体显示。 - SQLite
供所有应用程序使用的功能强大的轻量级关系数据库。
Android Runtime
Android运行时由两部分组成:Android核心库集和ART。其中核心库提供了java语言核心库所能使用的绝大部分功能,而虚拟机(和java的虚拟机类似)负责运行Android应用程序。
- ART、Dalvik、AOT、JIT
在Android5.0之前Android的运行时由Dalvil虚拟机和Android核心库组成,它采用了一种JIT(just in time “即时编译技术”)的解释器进行动态编译并执行,这就导致Android的软件在运行速度比较慢。而ART模式使用的AOT(Ahead Of Time “提前编译技术”),就是在程序第一次安装时,字节码就会预先编译成机器码,这样就避免了每次运行时都需要编译程序,从而提高程序的启动和运行速度,但这样会导致程序所需要的空间比较大,可以理解成一种空间换时间的技术。
Java Api框架层
Java Api框架层提供了大量的Api供开发者使用,除了作为应运程序开发的基础之外,也是软件复用的重要手段,任何一个应用程序都可以发布他的功能模块(发布时需要准守跨框架的约定)。
Applications(应用程序)框架层
所有的Android应用程序和我们编写的程序都会被安装在这层。
Android Studio的工程目录
其中文件的代码、资源等内容基本都是放在App文件夹下的,下面将介绍一下App文件夹中的重要内容。
- build
build目录是在程序编译时自动生成的文件,包括一些零时文件,还有生成的.apk文件就在该目录下。 - libs
存放项目中使用的第三方jar包,该目录下的jar包会自动添加到构建路径中。 - src/AndroidTest
用来编写Android Test测试永猎的,可以对项目进行一些自动化测试。 - src/main/java
存放编写的java代码 - src/main/res
存放需要的资源文件drawable:存放图片
mipmap: 存放应用图标
values: 存放字符串、颜色、样式配置
layout:布局文件 - src/main/AndroidManifest.xml
安卓应用清单文件,该文件时每个Android项目所必需的,他是整个android应用的全局描述文件。该文件说明了该应用的名称,所使用的图标以及包含的组件等。 - test
此处用来编写unit Test测试用例,可以对项目进行自动化测试。