Android群英传读书笔记——Android体系与系统架构
1.1 Google生态系统
Android系统,底层通过最快的C语言保证效率,上层使用Java简单快速的进行开发
1.2 Android系统架构
Android系统大致分为4层,Linux内核,库与运行时,Framework层,应用层
1.2.1 Linux
Linux层包含了android系统的核心服务,包括硬件驱动,进程管理,安全系统等等。
1.2.2 Dalvik与ART
Dalvik包含了一整套android运行环境虚拟机,每个app都会分配虚拟机保证互不干扰。特点是运行时编译。Android5.X后ART模式取代了Dalvik,特点是安装时编译。
1.2.3 Framework
1.2.4 Standard libraries
在开源环境下可以使用的开发库
1.2.5 Application
SDK开发和NDK开发APP的主要构成都有Android Manifest,Dalvik Classes,Resource Bundle这几个东西,NDK多出Library
1.3 Android app组件架构
1.3.1四大组件如何协同工作
Activity负责向用户展示信息和处理结果,,而这些信息的来源,可以通过资源获取,也可以通过Content Provider来获取其他应用的信息,或是Service从后台计算、下载、处理的结果,当然也可以是Boardcast Receiver获取到的广播信息。使用Intent进行组件间通信。
1.3.2应用运行上下文对象
上下文,在程序中可以理解为当前对象在程序中所处的一个环境,一个与系统交互的过程。
Activity,Service,Application都继承自Context,创见时间点不同,APPLICATION->ACTIVITY->SERVICE,在Activity中获取context可以直接使用this,在匿名内部类中使用就要用XXXXActivity.this
1.4 Android系统源代码目录与系统目录
Android系统的目录与Android源代码的目录结构是不相同的,而是与源代码编译之后,打包生成的Image文件的结构相同。
1.4.1 Android系统源代码目录
Android源代码网站:http://androidxref.com/
Android和很多其他语言一样,引入Makefile机制,大型工程通常有一个Makefile文件来对不同目录的不同模块进行管理。它定义了一系列规则来指定模块,那些文件需要编译,以及这些文件该按照怎样的顺序编译,定义编译规则,打包规则,因为Makefile解像一个Shell脚本,不仅有自己的语法,也能调用系统的命令。
Makefile最大的好处就是自动化编译和可控制编译。Makefile语法制定了源代码该如何连接并生成相应的可执行程序。Android源代码目录结构中每个最小功能的目录下都会有一个makefile文件
1.4.2 Android系统目录
/system/app/ 放的是一些系统app
/system/bin/ 主要放得是Linux自带的组件
/system/buile.prop 这里记录的是系统的属性信息
/system/front 系统字体存放目录
/system/framework/ 系统核心文件,框架层
/system/lib/ 存放几乎所有的共享库(.so)
/system/media/ 保存系统声音铃声
/system/user/ 保存用户的配置文件如键盘布局
/data/app/ data目录包含用户的大部分信息。 /data/app/ 包含了用户安装或升级的app
/data/data/ 包含了app的数据信息,文件信息,数据库信息等,以报名区分各个应用
/data/system/ 这个目录包含手机的各项系统信息
/data/misc/ 这个目录保存大部分Wifi,v*n信息
1.4.3 App文件目录
AS中的project相当于Eclipse的WorkSpace,AS中的Module相当于Eclipse的Project