Android群英传笔记——第一章:Android体系与系统架构


图片都是摘抄自网络

今天确实挺忙的,不过把第一章的笔记做一下还是可以的,嘿嘿

1.1 Google的生态圈

还是得从Android的起源说起,Android是一个以Linux为基础的开源移动设备操作系统,主要用于智能手机和平板电脑,由Google成立的Open Handset Alliance(OHA,开放手持设备联盟)持续领导与开发中。Android已发布的最新版本为Android 6.0.1(M)。

Android系统最初由安迪·鲁宾(Andy Rubin)等人开发制作 ,最初开发这个系统的目的是创建一个数码相机的先进操作系统;但是后来发现市场需求不够大,加上智能手机市场快速成长,于是Android被改造为一款面向智能手机的操作系统。於2005年8月被美国科技企业Google收购。2007年11月,Google与84家制造商、开发商及电信营运商成立开放手持设备联盟来共同研发改良Android系统,随後,Google以Apache免费开放原始码许可证的授权方式,发布了Android的原码,让生产商推出搭载Android的智能手机,Android後来更逐渐拓展到平板电脑及其他领域上。我们来看看Android的成长史;

这里写图片描述

这里写图片描述

大概就是一个这样子的情况了

1.2 Android系统架构

看到Android的系统架构,确实是很多人都会想到这样的一张图片

这里写图片描述

确实很形象的把Android的架构一览无余

Android分四层

  • Linux底层
  • 库和运行时
  • Framework层
  • 应用层

1.2.1 Linux

linux层,主要是一些驱动什么的,看图片(红色部分)就可以看出,什么相机驱动,蓝牙驱动什么的,这些事Android最底层最核心的部分,我们打开关于手机就可以看到内核版本,这就是我们使用的Linux内核版本,包含了Android的整个核心服务,驱动等。

这里写图片描述

1.2.2 Dalvik和ART

这两种都是运行环境的虚拟机,Dalvik是以前的,ART是Android 4.4(好像是)的时候发布的,因为Dalvik是应用运行的时候进行编译,而ART是全部编译完了再运行,效率要高很多

1.2.3 Framework

说起这Framework,那绝对是高端词汇了,你可以看上图的Android系统构架方面,Framework后基本上去统治者所有的管理器之类的啥啥啥,书中没有详细赘述,这里也就一笔带过了

1.2.4 Standard libraries

看Android的架构,libraries层中是一些标准的开发库

1.2.5 Application

Application可以说是一个大环境,他就是整个项目的意思,管理所有的东西,以后再说。

1.3Android App组件架构

这个也是面试中经常问到的四大金刚,Android中的四大组件,Activity,Service,BroadCastReceiver,Contentprovider,这些也是组成一个APP最基本的东西

1.3.1 Android四大组建是如何协同工作

主要还是看应用场景,但是也是各自都是相互有些许联系的,Activity负责界面,展示数据,数据的来源可以通过资源获取,Contentprovider也可以获取其他应用的信息,还有一个不需要用户看到的操作可以用Service来处理,而且Android系统在执行某种特定的操作的时候回发出一个广播出来,我们可以用BroadCastReceiver去接收,他们之间的信息联动靠的是Intent这个信使,是一样四大组件的运行即是独立也有紧密的联系

1.3.2 应用运行上下文对象

上下文我们经常接触到,具体的也可以去看一下郭霖的Android Context完全解析,你所不知道的Context的各种细节,其实就是这个运行环境的意思,activity,service,application都是继承context,不难发现,当我们程序第一次运行并且创建application的时候,同时也创建了一个application context,他就掌握着全局的动向,而现在创建activity和service的时候,我们就已经实例了context对象,这就意味着可以直接使用this了,而在非context运行环境下,就需要xxxx.this了

1.4 Android系统源代码目录

Android的源代码包含了许多东西,大牛也都是直接看源码分析原理的,我们今天先来看下源代码的结构

1.4.1 Android系统源代码目录

想要看懂Android的源代码其实还是有些费劲的,因为应用层用的是JAV,而底层还是用C,你还要懂脚本,还要动软硬交互,而且源代码很多,实在是多,你要慢慢看,慢慢看,但是我们其实只要知道哪些在什么结构就行,什么地方有问题我们可以找到并且说出个所以然来就差不多了,这里也提供了一个查看源代码的网站:

Android源代码:http://androidxref.com/

这里写图片描述

具体的有时间的同学可以慢慢研究,但是要注意,这个目录结构也只有给予AOSP的Android项目才是,其他厂商,比如MTK就不是,而Android作为手机操作系统,我们需要把他编译后才能使用,这里我们就不能使用AS,Eclipse之类的开发IDE了,这里它使用的是一种Mackfile机制

Mackfile解析:一个像Android这样大的工程,源码肯定是有很多的,而且种类更是繁多,这些文件都是由一个叫做Mackfile的文件来管理的,他有自己的规则来归类这些信息,比如编译规则,打包规则,所以Mackfile就像一个shell脚本,不仅可以使用自己的语法,而且可以调用操作系统的命令

Mackfile确实很强大,最大的好处是这货还能自动化编译,所以机制形成了,编译也就有条不紊 的进行着了

做过framework层开发的应该知道,要是没有Mackfile机制,你的电脑配置再好,都要花费很长的时间去编译源码

1.4.2 Android系统目录

Android的手机和其他手机的目录也是不同的,在

system/app里放着的使我们系统的应用

这里写图片描述

system/bin放着Linux自带的一些组件

这里写图片描述

system/build.prop 清单文件,记录着各种各样的信息

这里写图片描述

system/fonts 字体

这里写图片描述

system/framework 系统的核心文件,框架层

这里写图片描述

system/lib 存放一些共享库

这里写图片描述

system/media 铃声之类的声音文件

这里写图片描述

system/usr 保存用户的数据

这里写图片描述

data/app 用户安装的app

这里写图片描述

data/data 应用数据

这里写图片描述

data/system 各项手机信息

这里写图片描述

data/misc 保存着wifi vpn等信息
已经连接的wifi密码也是在这里看到的

这里写图片描述

1.4.3 Android APP文件目录

我们可以新建一个程序看看我们的Android程序目录是什么样的

这里写图片描述

这里就不再描述每个文件具体的含义了,相信大家都知道!

笔记下载:链接:http://pan.baidu.com/s/1c0U7k2W 密码:9v0g

Logo

开源、云原生的融合云平台

更多推荐