Android系统架构与分层

Android系统架构与分层如下:

图1 Android系统架构与分层
软件从底层到上层分为:Uboot,Linux Kernel和Android OS。

1 Uboot

将flash中的kernel搬到内存,引导kernel的启动;而cpu会引导uboot的启动,cpu中有一段固化的rom,可以从usb,sdcard,flash中引导uboot启动。

2 Linux Kernel

将底层硬件抽象为文件,向上提供接口。

3 Android OS

从底层到上层分为:

3.1 Hal

将主要外设抽象成一套接口,供Framework(C++)层调用。若底层硬件变动,Hal与Framework(C++)之间的接口不会改变,可能改变的是Hal层调用Linux Kernel层驱动的方式。

3.2 Framework(C++)

对上Framework(Java)提供服务,对下对接Hal层。

3.3 ThirdParty Library

libjpeg,libpng,skia,opengl,webkit等。

3.4 Dalvik

使用Java写app(Java写代码的效率和复用率高于C++),同时提供内存管理。

3.5 Framework(Java)

ActivityManger,WindowsManger,PackageManger,WifiManager等。

3.6 App

基于Java实现,运行在Dalvik虚拟机之上。

4 Android代码目录说明

目录

说明

bionic

C库

build

编译系统规则

cts

兼容性测试

dalvik

java虚拟机

external

Android引入的第三方模块

frameworks

框架层

hardware

硬件适配层(hal)

system

底层系统文件库

device

产品目标

out

编译生成目标文件

sdk

android原生sdk

packages/app

android原生app

5 编译

5.1 source build/envsetup.sh

(1)加载编译命令
如lunch,mm等,加载后编译命令才可用。
(2)加载平台分支信息

5.2 lunch

选择特定的平台分支,配置到环境变量里(export)。
特定分支的mk会把特定分支的某些文件(device/.../目录下)拷贝到编译输出目录out下。

5.3 make -j16

全编译源码
如果要编译单个模块libpng:
(1)mmm /external/libpng
(2)mm 需要先进入到/external/libpng目录下,再mm 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值