Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 549|回复: 0

[实例教程]Android源码的层次结构分析

[复制链接]

该用户从未签到

发表于 2011-10-22 12:45:08 | 显示全部楼层 |阅读模式
bionic,整个系统的基础类库,Android系统就是基于这个类库开发的,



system,Android系统类库,基于bionic类库开发,包含工具类库(libcutils),LOG类库(liblog),压缩类库(libzipfile)类。

主要功能有:

一、完成Android初始化(init)。

解析init.rc并开启系统初始化时需要加载的程序(parser.c),初始化设备(devices.c),开启属性服务(property_service.c)等。

二、开启Android系统的一些基础服务。

1、系统的设备服务(vold)。比如完成SD卡挂载、卸载管理,从内核处接收事件建立设备结点等。

三、SHELL程序及相应的toolbox。

四、ADB程序。

五、logcat系统。



可以说,bionic和system两个文件里的东西完成了Android对Linux的封装,在这两个文件夹的基础上构建起了Android系统的两大核心模块:Dalvik和Framework。Dalvik是一个基础纯C的VM,这个网上有比较详细的说明。重点一层层地分析一下Framework。

最底层就是几大模块:

1、utils工具库(frameworks/base/libs/utils/目录下)

这个类库基于bionic编译写,提供了一些对bionic里面的基础C/C++类库中的高层次封装。Framework中的C++程序大量使用这里的类库来封装更高层的系统功能。

2、binder库(framewoks/base/libs/binder/目录下)

这个与OpenBinder开源项目相似,提供了一种进程通信机制。C++和java层都大量使用了这种机制。它把通信双方分为服务提供者和使用者两种角色。提供者内部有注册的服务接口,使用者去查找调用。

3、ui库(frameworks/base/libs/ui/目录下)

这个库主要提供了UI绘制和视频输出两类接口,整个系统的输出框架都是以这个库为基础,通过它与FrameBuffer通信。

4、surfaceflinger库(frameworks/base/libs/surfaceflinger/目录下)

对ui库的更高层次的封装,通过binder机制对Android系统中的上层模块提供输出服务。

5、audioflinger库(frameworks/base/libs/audioflinger/目录下)

音频输出基础类库,上层模块通过这个库与驱动还有打交导输出声音。

6、大量开源库(external/目录下)



这几大模块构成了整个Framework的基础。围绕这几大模块,就可以构建一个真正的操作系统的上层模块,创建应用程序运行环境了。比较典型的有:

多媒休服务,提供给音视频播放和录制服务。

服务管理,维护和管理系统中存在的大量服务提供程序,应用程序通过binder机制通过服务管理中心的servicemanager来访问和使用这些服务,比如电源、蓝牙、Wifi等模块都以服务的形式存在于系统中供应用程序调用。

运行时环境,初始化应用程序的运行环境,并加载第一个应用程序,Launcher。



应用程序运行时环境创建完成后,系统就算正式启动起来了。当一个应用程序被加载到系统中时,它和系统打交导最多的就是系统提供的开发API了。主要集中在frameworks/base/core/目录下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-9 07:50 , Processed in 0.335547 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表