第一篇 Android的认识

        之前对Android泛泛的学习了一边,感觉自己掌握的要点并不是很明了,因此,在此,再次地利用空余时间学习下,对于一些的图片资源可能会利用别人的,因此申明下。毕竟,学习是重要的目的,学习最好的方式就是将其记下来,在很久很久以前,老师们就教导我们,好记心不如烂笔头。

        在此,强烈要求自己,多多抽出空余时间来学习,将Android系统的,结构的,一步一步的学习。

        在学校,一次毕业设计中,我将Android中的A写成了a,本来这是无关紧要的的,然而,老师认真地指出来了,Android是个专用名词,在初中英语中是学过的,大学的英语被自己耽误的差不多了,没有太注重这些细节问题。下面说说,Android的中文意思是“机器人”,中文翻译为“安卓”,是Google与2007年11月5日发布的机遇Linux平台的开源手机操作系统的名称。

        对于初学者来说,所面对的是Application,即为Android系统架构中的最上层,Java Application。Android手机系统是基于Linux Kernel的分层智能手机操作系统,有四层,从上往下分别是:Java Application应用层,Java Framework应用框架层,User Libraries系统运行库层,Linux Kernel核心层。如下图图1.1所示:

1.1    Android系统的层次结构图

1.      应用层(Application)

应用层是可以使用Java语言,并且借助xml文本设置界面布局,就可以的开发一些应用程序,比如GPS车载、通讯录管理、连接Email、上网查看内容用的浏览器等都属于应用层上的程序,许多开发出来的程序也都是运行在应用层上的。还包含许多的资源文件,Java程序及相关的资源经过编译后,将生成一个APK包,而生成一个手机软件。

2.      应用框架层(Application Framework)

应用框架层主要是一些操作支持的类库,是应用层的基础,因此本层提供的框架首先需要包含众多的组件,这些组件用来构建应用程序的显示界面中的内容,如文本组件、按钮组件、列表显示等。一个Android应用程序可以利用应用框架层中的ActivityBroadcastIntentReceiveServiceContent Provider这里面,实现了对底层C/C++的调用封装,Android为开发都提供了基本的应用接口,是java实现的,java调用底层的C/C++则是通过JNI机制来实现。在这里,好的应用框架开发,可以给上层的应用调用提供更好的帮助。包括视图View、资源管理器Resource Manager、通知管理器Notification Manager、Activity 管理器Activity Manager。

3.      系统运行库层(Libraries)

Android系统提供C/C++的库文件,从而来支持程序所使用的组件,使其可以更好地为程序服务,此层位于应用框架的下面,说明系统运行库层是应用框架层的基石,这层主要是管理层,对数据库、媒体库等地操作。在系统运行库层中包含有,桌面管理器、媒体库、关系型数据库、3D支持库、系统运行环境等。系统运行库层,主要是由C和C++语言开发,实现了系统接口调用和其他的运行模块。在这里面如libc实现的并不像平时的linux下的glibc,而是由android自己开发的一个llibc,称为bionic,只有200多k,运行速率明显比glibc实现的来得快多了。但这也就成了我工作一大困难点,因为在这里,libc是原有glibc下有所裁剪,有些功能不实现,如IPC上的接口,消息发送接口,及内存共享接口等没有接供,这让原本linux下源码中依赖这些ipc机制接口的代码移植碰到了一个问题,如何去解决这个问题,是对程序移植的一大挑战。

       在运行库层中,还包含着如下:

       Surface Manager:对应用层的显示子系统的管理,为应用层提供2D和3D的无疑的融合;

       Media Framework:可以支持多种格式的音频和视频的录制和回放,包含对静态图像的读取;

       Sqlite: 强大的轻量级的数据库引擎,这是第三方的支持,许多数据库都是以这个Sqlite来作为数据库引擎的,大小大概有500K左右;  

       OpenGL|ES:实现3D图像的硬件加速,及优化后的软加速;

       FreeType:其于位图和矢量图形的字体支持;

       WebKit: 功能强大的浏览器引擎,许多主流的浏览器也是基于该引擎的,如chrome,支持android浏览器,并支持内嵌的web视图。

       SGL: 底层的2D图形引擎;

       SSL:为网络通信提供安全及数据完整性的一种安全协议;

       libc : 如一开始提到的,android开发的bionic,提供标准的系统C调用。

       另外,在这里,还包含着core libraries和Davik虚拟机,corelibraries提供java的核心库,Davik虚拟机与Java的JVM不同在于,JVM是基于堆栈的,而Davik是基于寄存器,至于两者哪个好哪个坏,业界是一个争论的话题。

4.      Linux内核层(Linux Kernel)

程序的安全性,以及驱动程序和进程管理等都由Linux2.6的内核所提供,这层主要为手机提供一个适应环境,为手机中的各个硬件提供相应的驱动程序,即是硬件与智能手机系统之间的桥梁,主要为显示、照相机、蓝牙、USBWIFI等驱动提供驱动程序。主要还是标准的linux,这里面Android对其自身特有的一些硬件又做了相应的驱动开发,并把驱动抽象到了一个Android HAL层(硬件抽象层)。致于为何这样做,有这样的一个说法是若是直接在linux内核上进行开发,需要遵守linux的开源策略,这对很多厂家来说,涉及到了商业秘密的问题。

        对于Android新手而言,也许首先得从最上面开始,了解有一些什么东西,随着自己对Android的深入了解,进一步往下面发展。然而,对于那些熟悉Linux系统核心的和C/C++的可以跳过,直接从底层开始着手。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值