进阶解密1 | Android系统结构

让我们将事前的忧虑,换为事前的思考和计划吧!

整整一个三月,投了很多家,面试机会很少,目前还是0 实习Offer,要加油(ง •_•)ง

android 系统架构

Android系统分为五层,从上到下依次是:应用层,应用框架层,系统运行库层,硬件抽象层,Linux内核层

系统架构

应用层 System Apps

手机上自带的软件,比如相机,音乐播放器等,我们可以在代码中去调用。

应用框架层 Java API Framework

四大组件,Notification,Resource,Window等,平常用的比较多的。

系统运行库层

  1. C/C++程序库,OpenGL ES 3D绘图函数库,SQLite数据库引擎,SSL安全套接层等
  2. 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。

你可能感兴趣的:(进阶解密1 | Android系统结构)