一.Android框架
Android框架层级:Android自下而上分为4层;
--Linux内核层;
--各类库和Android运行环境层;
--应用框架层;
--应用层;
1.Linux内核层
Android的Linux内核层组成:Linux内核和驱动程序;
Linux内核:Android2.x是基于Linux2.6内核;
驱动程序:
--DisplayDriver(主板驱动):Linux的帧缓冲驱动;
--FlashMemoryDriver(Flash显存驱动):基于MTD的Flash驱动程序;
--CameraDriver(单反驱动):基于Linuxv4l驱动;
--AudioDriver(音频驱动):基于ALSA驱动;
--WifiDriver(Wifi驱动):基于IEEE801.31标准的驱动程序;
--KeyBoardDriver(按键驱动):作为输入设备的按键驱动;
--BluetoothDriver(蓝牙驱动):基于IEEE801.35.1标准的无线传输技术;
--BinderIPCDriver:Android特有的驱动程序,有单独的设备节点,提供进程通讯的功能;
--PowerManagement(电源管理):管理电瓶电量等信息;
解析驱动:
--FrameBuffer(帧缓冲):视频输出设备中包含有完整帧数据的视频缓冲区,使用该缓冲区驱动视频显示设备;
--v4l(Videoforlinux):Linux中的摄像头驱动;
--ALSA(AdvancedLinuxSoundArchitecture):中级Linux声音体系驱动,该组件提供了声卡驱动;
2.库和Android运行环境
该层分两部份:Android运行环境和各类库;
各类库介绍:这种库以系统中间件方式提供,与联通设备平台的应用有密切的关系;
--C标准库:Android系统最底层的库,该标准库调用内核的系统调用实现所需的功能;
--MediaFramework(多媒体框架):Android多媒体核心部份,是基于PacketVideo的OpenCore框架,功能一音频视频回放,功能二音频视频记录;
--SGL:2D的引擎;
--SSL(SecureSocketLayer):主要为TCP/IP合同与应用层合同之间的数据通讯提供安全支持;
--OpenGLES:3D引擎;
--SurfaceManagement(界面管理工具):管理显示子系统的功能;
--SQLite:嵌入式数据库;
--WebKit:网路浏览器内核;
--FreeType:提供位图和矢量字体功能;
Dalvik虚拟机与JVM区别:
--执行文件:JVM执行.class标准字节码文件,Dalvik虚拟机执行.dex文件;
--最大区别:JVM是基于栈(Stack-based)的虚拟机,Dalvik虚拟机是基于寄存器(Register-based)的虚拟机,前者可以按照硬件实现更好的优化;
3.应用程序框架层
应用框架层:该层提供了应用程序使用的APIlinux学习,包括各类UI组件和其它组件linux培训机构,包括下边的组件;
--Activity:主要活动界面;
--BroadcastReceiver:广播接收者;
--Service:服务;
--ContentProvider:内容提供者;
4.应用程序层
该层主要是apk安装程序;
二.Android源码结构
基于android-2.3.4_r1版本的源码进行剖析;
Android源码结构分类:
--核心部份:该部份是构建Android系统的基础,被保存在根目录的文件中;
--扩充工程:使用其它开源项目的部份;
--包部份:提供了Android应用程序,四大组件等,在package目录中;
1.根目录(/)
bionic:基础库的源码linux内核社区,C运行时支持库libc,libmlinux内核社区,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:SecureSocketLayer,是一个网路合同,为数据通讯提供安全支持;
4.frameworks
base:Android核心框架库基本内容;
opt:可选部份;
base目录内容:
--cmds:重要的命令;
--core:核心库命令
--data:字体声音数据文件;
--docs:文档;
--graphics:图形相关;
--include:头文件;
--keystore:数据签名证书;
--libs:库;
--location:地区库;
--media:媒体相关库;
--obex:蓝牙相关的库;
--opengl:3D图形库;
--packages:设置TTSV**等库;
--sax:XML解析;
--services:各类服务;
--telephony:电话通讯管理;
--test-runner:测试工具相关;
--test:各类测试;
--tools:各类工具;
--v**:
--wifi:
5.packages目录(/packages)
Apps:Android中的各类应用程序;
providers:保存内容提供者信息;
inputmethod:输入法;
wallpapers:壁纸;