【Android】【系统架构】

学习自

《Android进阶解密》

 

架构

 

Framework层暴露给应用层的能力

  1. Activity Manager:管理各个应用生命周期,以及常用的导航回退功能
  2. Location Manager
  3. Package Manager:管理所有安装的App
  4. Notification Manager
  5. Resource Manager
  6. Telephony Manager
  7. Window Manager
  8. Content Provider
  9. View System:UI绘制系统
    以上只是暴露的API,其实现非常复杂,Framework的很多一部分还是C实现的

 

运行时

C支持库

  1. OpenGL ES:3D渲染
  2. Libc:嵌入式Linux专用C支持库
  3. Media Framework
  4. SQLite
  5. SGL:2D渲染
  6. SSL
  7. FreeType:字体引擎

运行时库 = Java核心库能力 + 虚拟机

5.0以前是Dalvik,5.0后是ART
Dalvik区别于JVM,专门为移动端定制,每个进程都是一个Dalvik虚拟机
Dalvik的应用每次运行时,都通过JIT,把字节码转换为机器码
ART的应用,在安装时,用AOT,一次把所有字节码转换为机器码
前者运行慢,后者安装慢
在后来的版本,出现了混合编译,各取所长

 

硬件抽象

这一层是操作系统内核、硬件电路之间的接口层
抽象了硬件
一来屏蔽不同设备上硬件的差异
而来保护硬件厂商的知识产权

 

Linux内核

在Linux内核的基础上,定制了移动端的各个驱动
Android系统的安全、内存管理、进程管理、网络协议栈、驱动模型都依赖这一层

 

源码根目录

art
bionic:系统C库
bootable:启动引导相关代码
build:系统编译规则、generic等基础开发包配置
cts:兼容性测试套件标准
dalvik
developers
development
device
docs:
external:开源模组
frameworks
hardware
libcore
libnativehelper:实现JNI库的基础
out
pdk:本地开发套件
platform_testing
prebuilts:X86和ARM架构下预编译的一些资源
sdk
packages:应用层
system
toolchain
tools
makefile

 

应用层目录

apps
experimental:三方程序
inputmethods:输入法
providers
screensavers:屏幕保护
services
wallpapers

 

应用框架层目录

api
core
docs
include
libs
media
nfc-extras:与NFC相关
opengl
sax
telephony
tests
vr
cmds
data:字体、声音等数据文件
graphics
keystore
location
native
obex:蓝牙
packages:设置、TTS、VPN等
services
test-runner
tools
wifi

 

C/C++程序库目录

bionic:Google开发的系统C库,以BSD许可形式开源
frameworks/av/media
frameworks/native/opengl
frameworks/native/services/surfaceflinger
external/splite
手机厂商最倾向于改动art/和hardware/目录

 

收获

阅读并理解抽象的Android系统架构图
看似无用,实则有用
看似简单,实则困难
随着对Android理解的加深,对Android架构的认识也会发生变化
建议在不同的学习阶段,都要温故此图,并得到更新的理解

 

后记

有什么写得错误、让人费解或遗漏的地方,希望可以不吝赐教,我会马上更改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值