如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
万方数据Android系统架构及其驱动研究胡伟的一场革命。而国内目前研究和介绍该系统的从Linux操作系统的角度来看,第一、二层次之(广州大学华软软件学院,广东广州510990)摘要:Android作为Google公司推出的专为智能终端定制的操作系统,已经成为目前智能手机中增长最快的操作系统,并且必将对手持终端操作系统的发展产生重要而深远的影响。文章研究、分析了该操作系统的架构、代码结构,并着重研究了其驱动的原理和特点。关键词:Android;Linux;架构;驱动程序中图分类号:TP316文献标识码:A文章编号:1672—0385【2010)04—0096—06Android是Google公司在2007年11月发布的基于Linux系统的手机系统平台,是HTC、Motorola等企业多款智能手机的操作系统。据世界消费和零售市场研究领导者NPDGrop数据报告显示,从今年第一季度开始,Android已经取代苹果的iPhone成为美国第二大智能手机操作系统和增长速度最快的智能手机操作系统。凭借Google公司强劲的创新和开发能力以及其开源和免费的特性,其必将是移动终端操作系统文章较少,本文着重介绍了该系统的系统架构和驱动工作机理。二、Android系统架构Android是为移动设备设计的软件平台,包括操作系统、中间件和一些关键应用。AndroidSDK提供了必须的工具和进行应用开发所必须的Java接口API。Android是一个开放的软件系统,为用户提供了丰富的移动设备开发功能,从下至上包括4个层次,如图1所示。其中第一层是Linux内核层,包括Linux操作系统及驱动,依赖于Linux2.6内核,不支持linux2.4内核。如An—droidl.0(release一1.0)使用Linux2.6.25,An—droidl.6(sdk一1.6)使用Linux2.6.29。除了标准的Linux内核外,Android系统还增加了IPC驱动、WiFi驱动、蓝牙驱动等驱动程序,为系统运行提供了基础性支持。第二层是核心的扩展类库,如SQLite、WebKit、OpenGL等,它们可以通过JAVA本地调用JNI(JavaInterface)的接口函数实现和上层之间的通信。该层由Android的Java虚拟机Dalvik和基础的Java库为Java运行环境提供了Java编程语言核心库的大多数功能。第三层是包含所有开发所用的SDK类库和某些未公开接口类库的框架层,是整个Android平台核心机制的体现。第四层是应用层。系统部分应用和第三方开发的应用都是位于这个层次上,但两者不完全相同,其中系统应用会用一些隐藏的类,而第三方的应用,是基于SDK基础上开发的。一般Android开发是在SDK基础上用Java编写应用程序,但本机开发程序包NDK提供了应用层穿越Java框架层直接和底层包含了JNI接口的C/C++库直接通信的方法。其中第一层由c语言实现,第二层由c和c++实现,第三、四层主要由Java代码实现。问是内核空问与用户空问的分界线,第一层运行于内核空间,第二、三、四层运行于用户空问。第二、三层之问,是本地代码层和Java代2010年第4期(总第41期)广州广播电视大学学报一、引言2010年8月作者简介:胡伟(1973一),男,河南信阳人,讲师,研究生,硕士,主要研究方向为嵌入式Linux系统软硬件设计、开发。BinderNative收稿日期:2010—05—2796JOURNALOFGUANGZHOUOPENUNIVERSITYV01.10No.4Aug.2010万方数据—PnrTlrTlnn——Makefile——bionic——booⅡoader——build——dalvik——development——extemal——frameworks——hardware——kemel——packages——prebuilt——recovery——system——CaseChec——casecheck.txt——host码层的接口。第三、四层之间是系统API接口。三、Android代码结构Android代码包括3个部分:①核心工程(CoreProject文件夹)是建立Android系统的基础,在根目录的各个文件夹中;②扩展工程(ExternalProject文件夹中)是使用其他开源项目扩展功能;③包(Package)提供Android的应用程序和服务。其中既包含了原始Android的目标机代码,还包括了主机编译工具、仿真环境等。代码包经过解压缩后,第一级别的目录和文件如下所示:(全局的Makefile)(这里面是一些基础的库的源代码)(引导加载器)(目录的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)(JAVA虚拟机)(程序开发所需