ANDROID FRAMEWORK AND HAL 简介
1 认识ANDROID
1.1 ANDROID 起源
Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良。
Andy Rubin
苹果,微软,创业,GOOGLE
1.2什么android
Android 是一种基于 Linux® V2.6 内核的综合操作环境。从开发人员角度看,ANDROID是一个大型应用程序,将各种开源项目的应用组织在一起,整合成了一个有综合功能的系统。
Android 用到的知名开源项目有:
Linux-2.6:一种自由和开放源码的类Unix操作系统
Webkit:一个的浏览器引擎,Google Chrome是基于Webkit的,APPLE的Safari 浏览器也是基于该项目改成的。
Sqlite:一款轻型的数据库,是遵守ACID的关联式数据库管理系统。
Opencore:是ANDROID的多媒体框架,原型是PacketVideo Opencore。
Opengl es:是OpenGL三维图形API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。
Skia: 谷歌的开源矢量图形引擎,早期由SKIA公司开发,2005年被GOOGLE收购。
WPA Supplicant:一个开源的用于控制WIFI连接的守护程序。
Bluez:蓝牙协议栈
Openssl:为网络通信提供安全及数据完整性的一种安全协议。
FreeType:是一个完全免费(开源)的、高质量的且可移植的字体引擎.
还有png,jpeg等开源库,可以说ANDROID是一个开源应用的大集成。
1.3 ANDROID
ANDROID 的是www.android,该网分三大模块:
source.android
关于ANDROID源码的,有介绍编译环境搭建和源码获取方法。
developper.android
关于ANDROID应用开发的,关于开发环境搭建,SDK,开发工具,API库等。
www.android/market
关于GOOGLE的MARKET,介绍MARKET上一些最新流行的应用。
1.4 ANDROID版本发布
2009年4月30日,Android1.5
2009年9月15日,Android1.6
2009年10月28日,Android 2.0
2010年5月19日,Android2.2
2010年12月7日,Android2.3
2011年2月2日,Android3.0
1.5 ANDROID 版本命名
ANDROID版本都是以甜品名称来命名的,并且遵从C,D,E,F,G的顺序来。
Cupcake(1.5)->Donut(1.6)->Eclair(2.1)->Froyo(2.2)->Gingerbread(2.3)->Honeycomb(3.2)
下一个版本据说是Ice cream
1.6 ANDROID 的开放协议
ANDROID 的开放协议采用的是Apache Licence。
Apache Licence
•需要给代码的用户一份Apache Licence
•如果你修改了代码,需要再被修改的文件中说明。
•在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
•如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改
Apache Licence代码鼓励代码共享,但需要尊重代码作者的著作权。Apache Licence由于允许使用者修改和重新发布代码,也允许使用或在Apache Licence代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。
Linux的开放协议采用的是GPL(GNU General Public License)
GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。GPL协议的主要内容是只要在一个软件中使用(“使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。
2 ANDROID 框架
红:C语言
绿:C/C++
蓝:JA V A
黄:JA V A/C/C++
2.1 Aplications
应用程序,是JA V A写的,后缀为APK的应用,像电话,通信录等。
2.2 Application Framework
这一层是编写Google发布的核心应用时所使用的API框架,开发人员使用这些API来开发自己的应用;SDK所提供的API就来自这里。
View System:可以用来构建应用程序,它包括列表、网格、文本框、按钮以及可嵌入的Web浏览器。
Content Providers:它可以让一个应用访问另一个应用的数据,或共享它们自己的数据。
Resource Manager:提供非代码资源的访问,如本地字符串、图形和布局文件。
Notification Manager:应用可以在状态栏中显示自定义的提示信息。
Activity Manager:用来管理应用程序生命周期并提供常用的导航退回功能。
Window Manager:管理所有的窗口程序。
Package Manager:Android系统内的程序管理。
2.3 Libraries、Android Runtime
Bionic系统C库:C语言标准库,系统最底层的的库,C库通过Linux系统来调用。
多媒体库(MediaFramework):Android系统多媒体库,基于PackerVideo OpenCORE,该库
支持多种常见格式的音频、视频的回放和录制,以及图片,比如
MPEG4、MP3、AAC、AMR、JPG、PNG等。
SGL:2D图形引擎库。
SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。
OpenGL ES 1.0:3D效果的支持。
SQLite:关系数据库。
Webkit:Web浏览器引擎。
FreeType:位图(bitmap)及矢量(vector)。
公司介绍源码 在android操作系统中,每个Java程序都运行在Dalvik虚拟机上,其只能执行.dex的可执行文件。当Java程序通过编译后生成.dx,然后通过SDK中的dx工具转为成.dex格式才能正常在虚拟机上执行,Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专 有的文件格式dex(Dalvik Exceutable)的文件。
Dalvik虚拟机有如下几个主要特征:
1.专有的dex文件格式。
2.dex的优化,dex文件的结构是紧凑的。
3.基于寄存器。
4.一个应用,一个虚拟机实例,一个进程。每一个Android应用度运行在一个Dalvik虚拟机实例中,每一个虚拟机实例都是一个独立的进程空间。
2.4 Linux Kernel
显示驱动(Display Driver):基于Linux的帧缓冲(Frame Buffer)驱动。
键盘驱动(KeyBoard Driver):作为输入设备的键盘驱动。
Flash内存驱动(Flase Memory Driver):基于MTD的Flash驱动程序。
照相机驱动(Camera Driver):常用的基于Linux的v412(Video for Linux)的驱动。
音频驱动(Audio Driver):常用的基于ALSA的高级Linux声音体系驱动。
蓝牙驱动(Bluetooth Driver):基于IEEE 802.15.1标准的无线传输技术。
WiFi驱动:基于IEEE 802.11标准的驱动程序。
Binder IPC驱动:Android的一个特殊的驱动程序,具有单独的设备节点,提供进程间通信的功能。 Power Management(电源管理):比如电池电量等。
2.5 Android 源码结构
bionic [Build 系统] C运行时支持:libc、libm、libdl、动态linker bootloader/legacy Bootloader 参考代码 (内核加载器,在内核运行之前运行) build [Build 系统] Build系统
dalvik Dalvik虚拟机
delelopment 高层的开发和调试工具
framework/base Android 核心的框架库
framework/policies/base 框架配置策略
hardware/libhardware 硬件抽象层库
hardware/ril 无线接口层(Radio Interface Layer)
kernel Linux 内核
prebuilt [预编译内核] 对Linux 和 Mac OS 编译的二进制支持
system/core 最小化可启动的环境
system/extras 底层调试和检查工具
external 各种开源库,如webkit,opencore,skia等。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论