【Android 系统开发】Android框架 与 源码结构
一. Android 框架
Android框架层级 : Android 自下 而 上 分为 4层;
-- Linux内核层;
-- 各种库 和 Android运行环境层;
-- 应用框架层;
-- 应用层;
1. Linux内核层
Android 的 Linux 内核层 组成 : Linux 内核 和 驱动程序;
Linux内核 : Android 2.x 是基于 Linux 2.6 内核;
驱动程序 :
-- Display Driver (显卡驱动) : Linux 的帧缓冲 驱动;
-- Flash Memory Driver (Flash 内存驱动) : 基于 MTD 的 Flash 驱动程序;
-- Camera Driver (相机驱动) : 基于 Linux v4l 驱动;
-- Audio Driver (音频驱动) : 基于 ALSA 驱动;
-- Wifi Driver (Wifi驱动) : 基于 IEEE 801.31 标准的驱动程序;
-- KeyBoard Driver (键盘驱动) : 作为输入设备的键盘驱动;
-- Bluetooth Driver (蓝牙驱动) : 基于 IEEE 801.35.1 标准的无线传输技术;
-- Binder IPC Driver : Android 特有的驱动程序, 有单独的设备节点, 提供进程通信的功能;
-- Power Management (电源管理) : 管理电池电量等信息;
解析驱动 :
-- Frame Buffer (帧缓冲) : 视频输出设备 中包含 有 完整帧数据的 视频缓冲区, 使用该缓冲区 驱动视频显示设备;
-- v4l (Video for linux) : Linux 中的 摄像头驱动;
-- ALSA (Advanced Linux Sound Architecture) : 高级 Linux 声音体系驱动, 该组件 提供了 声卡驱动;
2. 库 和 Android 运行环境
该层分两部分 : Android 运行环境 和 各种 库;
各种库介绍 : 这些库以系统中间件形式提供, 与移动设备平台的应用有密切的关系;
-- C标准库 : Android 系统最底层的库, 该标准库调用 内核的系统调用实现所需的功能;
-- Media Framework (多媒体框架) : Android 多媒体核心部分, 是基于 PacketVideo 的 OpenCore框架, 功能一 音频视频回放, 功能二 音频视频记录;
-- SGL : 2D的引擎;
-- SSL (Secure Socket Layer) : 主要 为 TCP/IP 协议 与 应用层协议 之间的数据通信 提供安全支持;
-- OpenGL ES : 3D引擎;
-- Surface Management (界面管理工具) : 管理显示子系统的功能;
-- SQLite : 嵌入式数据库;
-- WebKit : 网络浏览器内核;
-- FreeType : 提供位图 和 矢量字体功能;
Dalvik虚拟机 与 JVM 区别 :
-- 执行文件 : JVM 执行 .class 标准字节码文件, Dalvik 虚拟机执行 .dex 文件;
-- 最大区别 : JVM 是基于栈 (Stack-based) 的虚拟机, Dalvik 虚拟机 是基于寄存器 (Register-based) 的虚拟机, 后者可以根据硬件实现更好的优化;
3. 应用程序框架层
应用框架层 : 该层 提供了 应用程序使用的 API, 包括 各种 UI 组件 和 其它组件, 包括下面的组件;
-- Activity : 主要活动界面;
-- BroadcastReceiver : 广播接收者;
-- Service : 服务;
-- ContentProvider : 内容提供者;
4. 应用程序层
该层主要是 apk 安装程序;
二. Android 源码结构
基于 android-2.3.4_r1 版本的源码进行分析;
Android 源码结构分类 :
-- 核心部分 : 该部分是建立Android 系统的基础, 被保存在根目录的文件中;
-- 扩展工程 : 使用其它开源项目的部分;
-- 包部分 : 提供了 Android 应用程序, 四大组件 等, 在 package 目录中;
1. 根目录 (/)
bionic : 基础库的源码, C 运行时支持库 libc, libm, libdl, 动态 linker;
bootable/bootloader/legacy : 内核引导加载器, 加载内核之前运行的程序;
build : 编译和配置所需要的脚本 和 工具;
dalvik : Android中的 Java 虚拟机, 提供Android应用程序运行基础;
development : 程序开发所需的模板和工具, 层次较高;
external : 使用的其它的开源的扩展库;
frameworks : 应用程序框架层, 四大组件等;
hardware : 硬件相关的库;
kernel : Linux 内核源码;
packages : Android 各种应用程序;
prebuilt : 各种平台下的编译预置脚本;
recovery : 与 Android 系统恢复功能相关;
system : Android 底层库;
Makefile : 整个 Android 源码 编译的 Makefile;
2. development 目录 (/development)
apps : Android 应用程序模板;
build : 编译脚本模板;
host : windows 平台的一些工具;
samples : 示例程序, 简单的Android程序, 可以作为模板;
3. external 目录 (/external)
opencore : Android 多媒体框架核心;
webkit : Android 网络浏览器核心;
sqlite : Android 数据库系统核心;
openssl : Secure Socket Layer, 是一个网络协议, 为数据通信提供安全支持;
4. frameworks
base : Android 核心框架库基本内容;
opt : 可选部分;
base 目录内容 :
-- cmds : 重要的命令;
-- core : 核心库;
-- data : 字体声音数据文件;
-- docs : 文档;
-- graphics : 图形相关;
-- include : 头文件;
-- keystore : 数据签名证书;
-- libs : 库;
-- location : 地区库;
-- media : 媒体相关库;
-- obex : 蓝牙相关的库;
-- opengl : 3D图形库;
-- packages : 设置 TTS VPN 等库;
-- sax : XML 解析;
-- services : 各种服务;
-- telephony : 电话通信管理;
-- test-runner : 测试工具相关;
-- test : 各种测试;
-- tools : 各种工具;
-- vpn :
-- wifi :
5. packages 目录 (/packages)
Apps : Android 中的各种应用程序;
providers : 保存内容提供者信息;
inputmethod : 输入法;
wallpapers : 墙纸;
【Android 系统开发】Android框架 与 源码结构的更多相关文章
- Android框架 与 源码结构
一. Android 框架 Android框架层级 : Android 自下 而 上 分为 4层; -- Linux内核层; -- 各种库 和 Android运行环境层; -- 应用框架层; -- 应 ...
- C# WINFORM进销存系统开发(内涵免费源码+部分实操视频讲解)
互联网的时代,电商火爆,大家都开始进行线上销售货品,那你是如何管理你的商品库存和进销问题?软积木--小敏用的是C# WINFORM进销存系统来管理我的数据,给我带来了很多便利. 它是高频需求项目,很多 ...
- [原创]Android系统中常用JAVA类源码浅析之HashMap
由于是浅析,所以我只分析常用的接口,注意是Android系统中的JAVA类,可能和JDK的源码有区别. 首先从构造函数开始, /** * Min capacity (other than zero) ...
- Java开发在线考试系统 使用ssh框架编写源码
开发工具: Eclipse, Tomcat, MySql 1. 登录页面登录功能, 输入用户名与密码, 选择角色, 滑动箭头拉到最右边才可以点击登录 2. 学生角色登录 ...
- Android Mms专题之:Mms源码结构
从软件的功能角度来讲,Mms分为对话列表,消息列表,短信编辑,彩信编辑,短信显示,彩信显示和配置. 从实现的角度来看,它分为GUI展示层,发送/接收,彩信解析,彩信附件,信息数据等,这些分类对应着源码 ...
- Python Tornado框架三(源码结构)
Tornado 是由 Facebook 开源的一个服务器“套装”,适合于做 python 的 web 或者使用其本身提供的可扩展的功能,完成了不完整的 wsgi 协议,可用于做快速的 web 开发,封 ...
- Android系统开发--灯光系统之电池灯的流程分析
Android系统开发--Android灯光系统之电池灯的流程分析 前期系统准备 运行初始化,创建系统服务 创建电池服务,获得电池灯;创建监听者监听上报电池事件: mSystemServiceMana ...
- 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
分类: Android 系统开发(5) 作者同类文章X 版权声明:本文为博主原创文章 ...
- Android系统的体系结构、开发语言及源码结构
整理自android系统体系结构 Android 是google公司针对手机开发的一个平台,并公布了其中大部分代码,其大部分应用程序都是用JAVA开发的,毕竟它是商业性的产品嘛,有所保留也是理所 当然 ...
随机推荐
- 纯CSS菜单样式,及其Shadow DOM,Json接口 实现
先声明,要看懂这篇博客要求你具备少量基础CSS知识, 当然如果你只是要用的话就随便了,不用了解任何知识 完整项目github链接:https://github.com/git-Code-Shelf/M ...
- JavaScript 比较和逻辑运算符
比较和逻辑运算符用于测试 true 或者 false. 比较运算符 比较运算符在逻辑语句中使用,以测定变量或值是否相等. 给定 x=5,下面的表格解释了比较运算符: 实例 »实例 » 大于 大于或等于 ...
- Android中Sqlite数据库进行增删改查
今天这篇文章写Sqlite数据库,通过一个小案例来完整讲一下数据库常见的CRUD操作. 先对知识点总结: SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHel ...
- Scikit-learn:分类classification
http://blog.csdn.net/pipisorry/article/details/53034340 支持向量机SVM分类 svm分类有多种不同的算法.SVM是非常流行的机器学习算法,主要用 ...
- Django 是如何实现用户登录和登出机制的(默认版本-数据库版本)
Django session 字典,保存到数据库的时候是要先序列化的(session.encode方法), 读取的时候反序列化(session.decode),这样比较安全. 一 settings.p ...
- MyEclipse如何全局搜索
1全局搜索的启动方式 CTRL+H 2全局搜索自己选择搜索方式 自己选择要搜索的东西,简单吧,里面还有很多好玩的东西需要你去发现,加油! [正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之 ...
- Java集合-----java集合框架常见问题
1什么是Java集合API Java集合框架API是用来表示和操作集合的统一框架,它包含接口.实现类.以及帮助程序员完成一些编程的算法. 简言之,API在上层完成以下几件事: ● 编程更加省力,提高城 ...
- java内存垃圾回收模型
一.java的内存模型 介绍如下6个组成部分 1.程序计数器:一块较小内存区域,指向当前所执行的字节码.如果线程正在执行一个Java方法,这个计数器记录正在执行的虚拟机字节码指令的地址,如果执行的是N ...
- shell入门之流程控制语句
1.case 脚本: #!/bin/bash #a test about case case $1 in "lenve") echo "input lenve" ...
- SSH深度历险(二) Jboss+EJB的第一个实例
学习感悟:每次学习新的知识,都会通过第一个小的实例入手,获得成就感,经典的Hello Workd实例奠定了我们成功的大门哈,这些经典的实例虽小但是五脏俱全呢,很好的理解了,Ejb的核心. 今天主要以这 ...