一、系统架构
1.1 应用层:
主要是一些系统应用以及一些非系统应用,用于与用户直接进行交互的
1.2应用框架层:
对开发人员提供一些开发的API,包括一些系统应用;其中包括一些Managers:
Activity Manager、Location Manager、Package Manager、Notification Manager、Resource Manager 、Window Manager、Content Providers 、View System
1.3系统运行库层(Native)
C/C++程序库
能被Android 系统中的不同组件所使用,并通过应用程序框架为开发提供服务
Sqlite
Android 运行时库
又分为核心库
和ART(Android Runtime,Android5.0后取代了Dalvik虚拟机)
;
ART > DVM >JVM
①相比于 JVM,DVM(Dalvik 虚拟机)是专门为移动开发定制的,因为它允许在有限的内存内,同时允许多个 Dalvik虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行,而独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭;
②DVM中的应用每次运行的时候,都需要通过JIT(Just In Time)即时编译器,将字节码转换为机器码,这样使得运行的效率降低;
③ART中,系统在安装应用时会进行一次预编译AOT(Ahead of Time),将字节码预先编译成机器码存储在本地,这样每次运行的时候都不需要执行编译了,运行效率大大提高;
1.4硬件抽象层(HAL)
位于操作系统内核层和硬件电路层之间的接口层,目的在于将硬件抽象化,为了保护硬件厂商的知识产权,隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多个平台上进行移植;
1.5Linux内核层(Linux Kernel)
Android核心系统服务基于 Linux内核层,在此基础上又添加了部分Android专用的驱动。系统的安全性、内存管理、进行管理、网络协议栈、驱动模型等都依赖于该内核;
二、源码阅读:
1.在线阅读:
点击版本进入对应的页面,比如8.0:
比如在framework中搜索 MediaPlayer.java
2.本地阅读:
下载源码到本地后,可以使用Android Studio、Eclipse、Sublime、Source Insight(推荐)
这里使用Source Insight
http://www.cnblogs.com/dakewei/p/7993613.html
下资源码:
https://pan.baidu.com/s/1ngsZs