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 系统的基础, 被保存在根文件夹的文件里;
-- 扩展project : 使用其他开源项目的部分;
-- 包部分 : 提供了 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 5.0 源代码结构
本节书摘来自异步社区<深入理解Android 5 源代码>一书中的第2章,第2.2节分析Android源代码结构,作者 李骏. 网址:https://yq.aliyun.com/artic ...
- Android 4.0 源代码结构
Android源码的第一级目录结构 Android/abi (abi相关代码.ABI:application binary interface,应用程序二进制接口) Android/bioni ...
- Android 源代码结构(转)
简介 在使用Andriod SDK进行应用程序开发的时候,我们需要对源代码进行调试,有可能需要进入到某个Android API函数内部进行跟踪调试.但是,如果目标版本的SDK没有关联对应版本的源代码的 ...
- Android 源代码结构
简介 在使用Andriod SDK进行应用程序开发的时候,我们需要对源代码进行调试,有可能需要进入到某个Android API函数内部进行跟踪调试.但是,如果目标版本的SDK没有关联对应版本的源代码的 ...
- Android源码目录结构详解(转载)
转自:http://blog.csdn.net/xiangjai/article/details/9012387 在学习Android的过程中,学习写应用还好,一开始不用管太多代码,直接调用函数就可以 ...
- Android开发:程序目录结构详解
HelloWorld程序的目录结构概述 我们可以在文件夹中看到,HelloWorld程序的目录主要包括:src文件夹.gen文件夹.Android文件夹.assets.res文件夹. AndroidM ...
- Android开发之 Android应用程序目录结构解析
建立的HelloWorld的应用项目,其代码是由ADT插件自动生成的,形成Android项目特有的结构框架. 接下来让我带领大家解析一个Android程序的各个组成部分,这次我们拿一个Hello,Wo ...
- 说一说Android的工程目录结构
这段时间正在学习有关Android的知识,对在Eclipse下开发的Android项目的目录结构有了一定的了解,在此对目录结构做一个简单的介绍.下图是在Eclipse下Android项目展开的项目目录 ...
- Android开发系列之Android项目的目录结构
今天开始正式学习Android开发的种种细节,首先从最基本的概念和操作学起. 首先看一下Android项目的目录结构. 这是我随便建立的一个test项目,我们重点关注一下几个方面的内容: 1.src目 ...
随机推荐
- 【原创】leetCodeOj ---Convert Sorted List to Binary Search Tree 解题报告
原题地址: https://oj.leetcode.com/problems/convert-sorted-list-to-binary-search-tree/ 题目内容: Given a sing ...
- freemarker里的分页--ftl文件的传值
在上一篇<freemarker里的分页--ftl文件>中我们讨论了分页的逻辑,在这一篇文章中,我们開始看一下怎样进行ftl的传值 或许你在上一篇文章中已经发现了端倪.是的,不错,我们须要一 ...
- PHP扩展memcache模
研究yii当配套部件,发现自己PHP甚至不支持memcache该模块,于是,我就展开位. 本机环境:win8.1 开发环境:php 5.5 第一步:先把所需的文件包下载全然,我已经打包好,这里能够下 ...
- C#中对于float,double,decimal的误解
原文:C#中对于float,double,decimal的误解 一直很奇怪C#的预定义数据类型中为什么加了一个decimal,有float和double不就够了吗?今天来挖一挖. 浮点型 如果我们在代 ...
- Android - 用Fragments实现动态UI - 创建Fragment
你可以把fragment当作activity中的一个活动模块,它有自己的生命周期,自己接收输入消息,可以在activity运行的时候添加和删除(就像可以在其他activity中重用的"子ac ...
- 【SEO 决胜网络索引】 课程大纲及第一部分第一课:网络营销战略中的索引
内容简介 1.课程大纲 2.第一部分第一课: 网络营销战略中的索引 3.第一部分第二课预告: 索引是什么 课程大纲 现在是网络为王的时代,人们越来越离不开互联网: SEO(Search Engine ...
- __weak如何实现目标值自己主动设置nil的
在开始评论__weak机制之前,首先,一些床上用品 ARC 实现 苹果公司的官方介绍说,.ARC这是"内存管理由编译器"的,但事实上,只有编译器不能完全胜任,ARC另外还要看OC执 ...
- 使用axis公布weblogic(一个)
1.在MyEclipse创建一个新的Web Project.新类,声明函数名称.参数,为了不写功能实体. 2.将java2wsdl.bat将文件复制到classes目录,据内部参数更改自己的实际情况 ...
- 10gocm->session5->数据库管理实验->GC资源管理器的资源消耗组介绍
<GC资源管理器> 官方文件:administrator's Guide->24 Using the Database Resource Manager 用法:在实际生产环境中使用 ...
- 部署Redis主-从
Redis主-从部署实践 0. 前言 这篇文章简要介绍Redis的主从部署,实现了一主二从,使用两个哨兵监控,以实现简单的HA,其中从库作为备机. 1. 部署 这里有三台服务器,其中239主机上的Re ...