一. Android 框架

http://elinux.org/Master-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 Source Code的更多相关文章

  1. Troubles in Building Android Source Code

    Some Troubles or problems you may encounter while you setup the Android source code build environmen ...

  2. Learning English From Android Source Code:1

    英语在软件行业的重要作用不言自明,尤其是做国际项目和写国际软件,好的英语表达是项目顺利进行的必要条件.纵观眼下的IT行业.可以流利的与国外客户英文口语交流的程序猿占比并非非常高.要想去国际接轨,语言这 ...

  3. Learning English From Android Source Code:2 Ampersand

    这一次想把标点符号的英语表达总结一下,这些单词非常重要但easy被我们忽视.以我的经验,还是多认识几个.以备不时之需. 以下从"标点符号"開始: punctuation [英][ˌ ...

  4. Google android source code build 问题总结【转】

    本文转载自:http://light3moon.com/2015/01/31/Google%20android%20source%20code%20build%20%E9%97%AE%E9%A2%98 ...

  5. Increasing heap size while building the android source code on Ubuntu 15.10

    http://stackoverflow.com/questions/34940793/increasing-heap-size-while-building-the-android-source-c ...

  6. Android source code compile error: “Try increasing heap size with java option '-Xmx<size>'”

    export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g" ./pr ...

  7. android activity 启动过程分析(source code 4.4)

    说实话,android source code从2.3到4.4变化是蛮多的,尤其是media部分,虽然总的框架是没有多大变化,但是找起代码来看还是挺麻烦的.在android里面最受伤的是使用了java ...

  8. Compile android source and kernel for emulator in Debian

    1.download the android source code Reference from http://source.android.com/source/downloading.html ...

  9. ubuntu 12.04 下 eclipse关联 source code

    一.JDK source code 命令行中: sudo apt-get install openjdk-7-source 下好的jdk源码在 Linux 在目录 usr/lib/jvm/openjd ...

随机推荐

  1. Linux编译内核提示'make menuconfig' requires the ncurses libraries错误

    原来使用的ubuntu 11.10系统由于误操作,导致系统崩溃,重新安装了ubuntu 11.10: 在编译内核的时候,提示如下错误: dingq@wd-u1110:~/hwsvn/2sw/1prj_ ...

  2. 在线演示平台 | Highcharts中文网 (曲线图、区域图、3D图等等)

    http://www.hcharts.cn/ 在线演示平台 | Highcharts中文网

  3. 007--VS2013 C++ 显示位图半透明化

    以后所有图片都放在根目录下: 如有另放,会特别注明 //全局变量HBITMAP bg,girl;HDC mdc; //起始坐标const int xstart = 50;const int ystar ...

  4. 【转载】about slack

    About Slack slack is the difference b/w the REQUIRED TIME and the ARRIVAL TIME. 1.WHAT IS SLACK WITH ...

  5. CRC校验算法

    typedef unsigned char UCHAR;typedef unsigned char BOOL; /* 计算cnt字节数据的crc,最后一个字节的低7比特必须是0,实际上求的是(cnt× ...

  6. STL学习系列四:Stack容器

    Stack简介 stack是堆栈容器,是一种“先进后出”的容器. stack是简单地装饰deque容器而成为另外的一种容器. #include <stack> 1.stack对象的默认构造 ...

  7. Think in java备忘录

    1..new在内部类中的使用 .new可以用使用外部类对象创建一个内部类,对象 DotNew.java package com.gxf.innerclass; public class DotNew ...

  8. .net sql 防注入 httpmodule

    1 新建一个类,实现IHttpModule接口 using System; using System.Collections.Generic; using System.Linq; using Sys ...

  9. 多种方法实现H5网页图片动画效果;

    在web开发中,GIF动画效果是随处可见,比如常见的loading加载.人物奔跑的gif图片等等,那么这些都是怎么实现的呢?其实实现的原理很简单,简而言之,这些所谓的动画都是一帧一帧的图片经过一段时间 ...

  10. 问题:ldconfig

    显示加载库文件libjli.so时候出错. 解决办法 1.find / -name 'libjli.so'文件 路径在:/data0/home/app/act/jdk/jdk1.7.0_15/jre/ ...