‘壹’ 什么是android系统,android的发展以及android的平台架构和特性
Android平台采用了整合的策略思想,包括底层linux操作系统、中间层的中间件和上层的java应用程序。下面我把Android的特性及其架构体系结构总结一下。
一、Android的平台特性
Android平台有如下特性:
1. 应用程序框架支持组件的重用与替换。
这样我们可以把系统中不喜欢的应用程序删除,安装我们喜欢的应用程序。
2. Dalvik虚拟机专门为移动设备进行了优化。
Android应用程序将由Java编写、编译的类文件通过DX工具转换成一种后缀名为.dex的文件来执行。Dalvik虚拟机是基于寄存器的,相对于Java虚拟机速度要快很多。
3. 内部集成浏览器基于开源的WebKit引擎。
有了内置的浏览器,这将意味着WAP应用的时代即将结束,真正的移动互联网时代已经来临,手机就是一台“小电脑”,可以在网上随意遨游。
4. 优化的图形库包括2D和3D图形库,3D图形库基于OpenGL ES 1.0。
强大的图形库给游戏开发带来福音。在3G最为重要的的应用莫过于手机上网和手机游戏。
5. SQLite用作结构化的数据存储。
6. 多媒体支持包括常见的音频、视频和静态印象文件格式
如MPEG4、H.264、MP3、AAC、AMR、JGP、PNG、GIF。
7. GSM电话(依赖于硬件)。
8. 蓝牙(Bluetooth)、EDGE、3G、WiFi(依赖于硬件)。
9. 照相机、GPS、指南针和加速度计(依赖于硬件)。
10. 丰富的开发环境包括设备模拟器、调试工具、内存及性能分析图表和Eclipse集成的开发环境插件。
Google提供了Android开发包SDK,其中包含了大量的类库和开发工具,并且针对Eclipse的可视化开发插件ADT。
二、Android平台架构
从上图我们可以看出,Android操作系统的体系结构可分为4层,由上到下依次是应用程序、应用程序框架、核心类库和Linux内核,其中第三层还包括Android运行时的环境。下面分别来讲解各个部分。
1. 程序应用
Android
连同一个核心应用程序包一起发布,该应用程序包包括E-mail客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是用Java编写的。
2. 应用程序框架
开发者完全可以访问核心应用程序所使用的API框架。该应用程序框架架构用来简化组件软件的重用,任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。该应用程序重用机制使得组件可以被用户替换。
以下所有的应用程序都由一系列的服务和系统组成,包括:
1)一个可扩展的视图(Views)可以用来创建应用程序,包括列表(lists)、网络(grids)、文本框(text
boxes)、按钮(buttons),甚至是一个可嵌入的Web浏览器。
2)内容管理器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。
3)一个资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串、图形和分层文件(layout files)。
4)一个通知管理器(Notification Manager)使得应用程序可以在状态栏中显示客户通知信息。
5)一个活动类管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。
3. Android程序库
Android包括一个被Android系统中各种不同组件所使用的C/C++集库。该库通过Android应用程序框架为开发者提供服务。
以下是一些主要的核心库:
1)系统C库:一个从BSD继承来的标准C系统函数库(libc),专门为基于Embedded Linux的设备定制。
2)媒体库:基于PacketVideo
OpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态映像文件包括MPEG4、H.264、MP3、AAC、JPG、PNG。
3)Surface Manager:对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。
4)LibWebCore:一个最新的Web浏览器引擎,用来支持Android浏览器和一个可嵌入的Web视图。
5)SGL:一个内置的2D图形引擎。
6)3D libraries:基于OpenGL ES 1.0 APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。
7)FreeType:位图(bitmap)和向量(vector)字体显示。
8)SQLite:一个对于所以应用程序可用、功能强劲的轻型关系型数据库引擎。
4. Android运行库
Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对同时高效地运行多个VMs实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都是经由Java汇编器编译,然后通过SDK中的DX工具转化成.dex格式由虚拟机执行。
Dalvik虚拟机依赖于Linux的一些功能,比如线程机制和底层内存管理机制。
5. Linux内核
Android的核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的硬件抽象层。
‘贰’ android中构造方法有什么特点
构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。
在Java中,任何变量在被使用前都必须先设置初值.Java提供了为类的成员变量赋初值的专门方法。构造方法是一种特殊的成员方法,它的特殊性反映在如下几个方面:
1.构造方法作用:(1).构造出来一个类的实例 (2).对构造出来个一个类的实例(对象)初始化。
2.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。
3.主要完成对象的初始化工作,构造方法的调用是在创建一个对象时使用new操作进行的。
4.类中必定有构造方法,若不写,系统自动添加无参构造方法。接口不允许被实例化,所以接口中没有构造方法。
5.不能被static、final、synchronized、abstract和native修饰。
6.构造方法在初始化对象时自动执行,一般不能显式地直接调用.当同一个类存在多个构造方法时,java编译系统会自动按照初始化时最后面括号的参数个数以及参数类型来自动一一对应。完成构造函数的调用。
7.构造方法分为两种:无参构造方法 有参构造方法
构造方法可以被重载。没有参数的构造方法称为默认构造方法,与一般的方法一样,构造方法可以进行任何活动,但是经常将他设计为进行各种初始化活动,比如初始化对象的属性。
8.构造代码块:
(1)作用:给对象进行初始化,对象一建立就执行,而且优先于构造函数执行
(2)构造代码块和构造函数的区别:
构造代码块是给所有不同对象的共性进行统一初始化,构造函数是给对应的对象进行初始化
‘叁’ android中怎么实现分层开发
ndroid开发笔记2----Android定义和分层介绍
(2010-11-25 14:38:45)
转载▼
分类: Android
一. 开放手机联盟
开放手机联盟,Open Handset Alliance:是美国Google公司与2007 年11 月5 日宣布组建的一个全球性的联盟组织。这一联盟将会支持Google发布的Android手机操作系统或者应用软件,共同开发名为Android的开放源代码的移动系统。
二. Android含义
Android是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Android SDK提供了在Android平台上使用Java语言进行Android应用开发必须的工具和API接口。
三. Android系统构架
Android分为4层,从高到底分别是应用层、应用框架层、系统运行库层和Linux内核层:
1.应用层
应用是用Java语言编写的运行在虚拟机上的程序。Google最开始时就在Android系统中捆绑了一些核心应用,比如E-mail 客户端、SMS 短消息程序、日历、地图、浏览器、联系人管理程序,等等。
2.应用程序框架层
应用程序框架层是编写常用核心应用所使用的API框架,开发者可以在开发自己特色的应用程序中重复利用这些组件和服务。目前所有的应用程序都是由这些组件和服务构成。
(1) 丰富而又可扩展的视图(View):可以用来构建应用程序,它包括列表(List)、网格(Grid)、文本框(Text Box)、按钮(Button),以及可嵌入的Web浏览器。
(2) 内容提供器(Content Providers):它可以让一个应用访问另一个应用的数据(如联系人数据库), 或共享它们自己的数据。
(3) 资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串、图形和布局文件(Layout file)。
(4) 通知管理器(Notification Manager):应用可以在状态栏中显示自定义的提示信息。
(5) 活动管理器(Activity Manager):用来管理应用程序生命周期并提供常用的导航退回功能。
(6) 窗口管理器(Window Manager):管理所有的窗口程序。
(7) 包管理器(Package Manager):Android 系统内的程序管理。
3.系统运行库(C/C++库以及Android 运行库)层
程序库:
Android 包含一些C/C++库,这些库能被Android 系统中不同的组件使用。它们通过Android 应用程序框架为开发者提供服务。以下是一些核心库:
** 系统C库- 一个从BSD 继承来的标准C 系统函数库(libc),它是专门为基于embedded linux的设备定制的。
** 媒体库- 基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
** SurfaceManager - 对显示子系统的管理,并且为多个应用程序提供了2D和3D 图层的无缝融合。
** LibWebCore - 一个最新的web 浏览器引擎用,支持Android 浏览器和一个可嵌入的web 视图。
** SGL - 底层的2D图形引擎
** 3D libraries - 基于OpenGL ES 1.0 APIs 实现;该库可以使用硬件3D 加速(如果可用)或者使用高度优化的3D 软加速。
** FreeType -位图(bitmap)和矢量(vector)字体显示。
** SQLite - 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
运行库:
Android 包括了一个核心库,该核心库提供了JAVA 编程语言核心库的大多数功能。
Dalvik:
每一个Android 应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik 被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik 虚拟机执行(.dex)的Dalvik 可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA 编译器编译,然后通过SDK中的"dx" 工具转化成.dex 格式由虚拟机执行。
4. Linux内核层
Android系统平台是基于优化了的Linux内核,是其系统平台的核心。它提供诸如内存管理、进程管理、设备驱动等服务,同时也是作为硬件与软件栈之间的抽象层,用来做相互沟通的工作.
四. 进程间通信
Android 采用OpenBinder
‘肆’ 系统运行库Android主要包含哪些库
* Bionic系统 C 库:C语言标准库,系统最底层的库,C库通过Linux系统来调用。
* 多媒体库(MediaFramework):Android系统多媒体库,基于 PacketVideo OpenCORE,该库支持多种常见格式的音频、视频的回放和录制,以及图片,比如MPEG4、MP3、AAC、AMR、JPG、PNG等。
* SGL:2D图形引擎库。
* SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。
* OpenGL ES 1.0:3D效果的支持。
* SQLite:关系数据库。
* Webkit:Web浏览器引擎。
* FreeType:位图(bitmap)及矢量(vector)。
‘伍’ 如何从android源码中编译webkit
android本来自带了webkit浏览器,但是要对其进行custom就需要android源代码才行, 但是在没有源码的情况下,那么就需要用到ndk了,比如,我是在xoom上做custom webkit的。 虽然ndk提供的库很少,而且没有skia,但是好在有bitmap,这样显示慢了点,没有硬加速,但不是不可能。 webkit需要的第三方库,freetype,png,jpeg,sqlite3等虽然android源码中有,但是ndk没有开放, 因此所有的第三方库,freetype,png,jpeg,sqlite3,cairo,curl,fontconfig,pixman,iconv等 都需要用ndk cross-compile成静态库,然后链接到最终的动态库中。 选择iconv是icu太大,而且没有多语言的需求,选择cairo+pixman是skia的移植性不好,而且cairo支持很多种backend。 编译第三方库需要用到autoconfig,ndk中有如何生成交叉编译链的文档,然后在configure时使用这个工具链就可以了, 但是android用到的是bionic库,因此会有很少的地方需要修改,有些库也不能生成test程序,但是静态库是没问题的。 利用ndk生成的交叉工具链,在加上webkit自带的cmake编译系统,生成webkit的动态库是没有问题的, 当然是webkit的内核,而且有些平台相关的部分代码需要修改,但是只要是以linux平台为基础,修改还是很容易的, 我移植的webkit是先移植到linux平台上,然后移植到android平台上的,所以修改相对少了很多, 但是修改大多都在WebCore/platform下,在选择了的平台相关库后,做相应的配置和修改, 其次是在WebKit目录,这个主要是支持和使用WebCore,因此在需求不是整个浏览器,而只是正常地显示网页时, 还是可以写的比较简单的。
‘陆’ 安卓程序是用什么语言编写的
Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。
两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的 Activity 全部画面被其他 Activity 取代时,该 Activity 便被停止(stopped),甚至被系统清除(kill)。
(6)androidfreetype扩展阅读
Android应用程序是android系统智能手机的主要构成部分,实现了智能手机的多样性、多功能性,结合了办公功能、娱乐功能、生活实用功能等,广受人们的喜爱。
Android应用程序有很多,其中让人耳目一新的个性化实用性应用程序有:
MINT、CHROME、神奇阿莱西、SWYPE/SWiftKey键盘、SWYPE/SWiftKey键盘、Swype、POCKET阅读器、SNAPSEED、EYE IN THE SKY天气、FLICK NOTE、LIGHT FLOW、ANY.DO。