让我们将事前的忧虑,换为事前的思考和计划吧!
整整一个三月,投了很多家,面试机会很少,目前还是0 实习Offer,要加油(ง •_•)ง
android 系统架构
Android系统分为五层,从上到下依次是:应用层,应用框架层,系统运行库层,硬件抽象层,Linux内核层。
应用层 System Apps
手机上自带的软件,比如相机,音乐播放器等,我们可以在代码中去调用。
应用框架层 Java API Framework
四大组件,Notification,Resource,Window等,平常用的比较多的。
系统运行库层
- C/C++程序库,OpenGL ES 3D绘图函数库,SQLite数据库引擎,SSL安全套接层等
- Android运行时库,
- 核心库:提供Java语言核心库大多数功能,开发者可以使用Java语言来编写Android应用。
- ART/DVM:允许在有限的内存中运行多个虚拟机实例,每个实例作为一个独立的Linux进程。独立的进程保证了系统的稳定性。
ART和DVM区别:DVM每次运行,字节码都需要即时编译器Just In Time转化为机器码。在ART中,Android应用的时候,会执行一次预编译Ahead of Time,将字节码预先存储到本地。
这就导致了:同样的配置Android5.0 安装应用的速度比4.X
慢,但是打开应用的速度快。
硬件抽象层
对蓝牙,照相机等硬件的抽象化,隐藏具体硬件的API,统一为一致的API,为上层提供支持。
Linux内核层
基于Linux系统,增加了Android专用的驱动,系统安全性,内存管理,进程管理等。
Android 系统源码目录
- 源码下载地址:Http://pan.baidu.com/s/1ngsZs
- 在线阅读地址:http://andriodxref.com
- 源码阅读工具:Android studio,sublime,source Insight
目录结构:/
- Art : ART运行环境
- bionic:C库
- bootable:启动相关代码
- build:编译规则
- dalvik:Dalvik运行环境
- device:设备相关配置
- frameworks:应用程序框架,由Java和C++编写
- hardware:硬件抽象
- sdk:sdk
- packages:应用程序包
- tools:工具文件
- ... 略
应用层部分/packages/
- apps 核心应用程序
- experimental 第三方应用程序
- inputmethods 输入法目录
- providers 内容提供者目录
- screensavers 屏幕保护
- service 通信服务
- wallpapers 壁纸
应用框架层/frameworks/
- api 定义API
- core 核心库
- docs 文档
- include 头文件
- libs 库
- media 多媒体相关库
- nfc-extras NFC相关
- opengl 2D/3D图形API
- sax XML接收器
- telephony 电话通信管理
- vr vr相关
- cmds 重要指令
- data 字体和声音数据
- keystore 数字签名证书相关
- location 地理位置
- native 本地库
- obex 蓝牙
- packages 设置TTS,VPN
- services 系统服务
- wifi 无线网络
/hardware/
手机厂商改动最大的区域,更具不同的硬件,修改以保证向上层提供统一的Api。