转载请标明出处:
http://blog.csdn.net/yujun411522/article/details/46334057
本文出自:【yujun411522的博客】
1.2 Android体系结构
体系结构按照两种视角来分析:静态和动态视角
1.2.1 静态视角的体系结构
可以分为四层application、application framework、lib和runtime、linux 内核
1.app,可以理解为我们平常使用的app。包括系统的和第三方app,系统的包括Home(对,其实就是一个app)、Contacts联系人、Alarm闹钟等等;第三方app就更多了,qq、微信、uc浏览器等等。这一层次主要使用java语言编写。当然一些需要高性能部分,可以使用NDK开发,有必要看一下
2.Framework,包括为app开发提供API接口,为app提供可复用的组件,规范app的开发。这一层可以使用java和JNI实现,主要组件:
View System:app开发过程中都遇到过,各种UI控件Button,textView,ListVIew等等。
Content Provider:四大组件,不同app之间数据共享的接口
Resource Manager:用来管理各种资源文件:layout,drawable,string等。
Activity Manager:管理Activity的,很重要
Window Manager:管理所有窗口,这里的窗口可以是activity,dialog,menu等等。
Package Manager:apk包管理器,比如查询当前设备安装信息
3 Lib和RunTime
也称为中间件,包括各种库以及运行时环境
库:为framework层做支撑的,android系统内置的多媒体,浏览器,数据库,图形引擎都依靠这些lib的实现:
这一部分的作用是非常重要的,比如在开发浏览器设备时,系统默认使用的是webkit(开源浏览器引擎);我们在使用Sqlite相关接口操作sqlite数据库就需要sqlite库的支持;对于游戏开发来说openGL ES更是不可缺少。
这些库的存在不只是在android系统中,就像是一个第三方库一样,所以也成为中间件。
运行时环境:因为里面涉及有java语言,就需要java运行环境。这里使用的是为android系统开发的Dalvik虚拟机(5.0版本之后有ART):
core Library:对j2se中重要的库进行保留,并加入一些android特有的api。
Dalvik VM:android中运行的java虚拟机。
4 Linux内核
对硬件的管理。这部分内容太多。不做过多介绍
1.2.2动态视角体系结构
将android系统分成两个空间:上层是用户空间,下层是内核空间
用户控件:可以分成两个部分:Native子系统和Java子系统,两者通过JNI连接在一起。
Native子系统有NDK开发的app,框架层的native部分以及标准库c/c++组成
Java子系统有SDK开发的app,系统内置的app,框架层java部分以及java接口组成
内核空间:linux内核以及android扩展,其中android扩展部分有Binder,Logger,OOM等机制,这些都是非常重要的东西。
如何搭建下载、编译环境不做介绍,网上有解决方法,如果官网下载有问题,可以访问这里android源码百度网盘分享