九号下载:您身边最放心的安全下载站!全站导航首页|体育乐|VR中心|智能硬件|H5小游戏|单机游戏|软件发布

首页软件资讯软件资讯 → 安卓系统

安卓系统

相关下载相关文章发表评论
2012/3/10 8:53:12来源:百度整理作者:不详人气:321

   Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。

名称来源

  Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l'Isle-Adam)在1886年发表的科幻小说《未来夏娃》(L'ève future)中。他将外表像人的机器起名为Android。


Logo来源

  Android的Logo是由Ascender公司设计的。其中的文字使用了Ascender公司专门制作的称之为“Droid”的字体。

  Android是一个全身绿色的机器人,绿色也是Android的标志。颜色采用了PMS 376C和RGB中十六进制的#A4C639来绘制,这是Android操作系统的品牌象徵。有时候,它们还会使用纯文字的Logo。


版本

命名规则

  Android用甜点作为它们系统版本的代号的命名方法开始于 Android 1.5 发布的时候。作为每个版本代表的甜点的尺寸越变越大,然后按照26个字母数序:纸杯蛋糕,甜甜圈,松饼,冻酸奶,姜饼,蜂巢,冰激凌三明治,根据最新消息新一代Android版本将命名为果冻豆(Jelly Bean)。

发行版本

版本备注
Android1.12008 年9月发布的Android第一版
Android 1.5 
Cupcake 
(纸杯蛋糕)
2009年4月30日,官方1.5版本(Cupcake 纸杯蛋糕)的Android发布。主要的更新如下: 
1、拍摄/播放影片,并支持上传到Youtube 
2、支持立体声蓝牙耳机,同时改善自动配对性能 
3、最新的采用WebKit技术的浏览器,支持复制/贴上和页面中搜索 
4、GPS性能大大提高 
5、提供屏幕虚拟键盘 
6、主屏幕增加音乐播放器和相框widgets 
7、应用程序自动随着手机旋转 
8、短信、Gmail、日暦,浏览器的用户接口大幅改进,如Gmail可以批量删除邮件 
9、相机启动速度加快,拍摄图片可以直接上传到Picasa 
10、来电照片显示
Android 1.6 
Donut 
(甜甜圈)
2009年9月15日,1.6(Donut 甜甜圈)版本软件开发工具包发布。主要的更新如下: 
1、重新设计的Android Market手势 
2、支持CDMA网络 
3、文字转语音系统(Text-to-Speech) 
4、快速搜索框 
5、全新的拍照接口 
6、查看应用程序耗电 
7、支持虚拟私人网络(VPN) 
8、支持更多的屏幕分辨率。 
9、支持OpenCore2媒体引擎 
10、新增面向视觉或听觉困难人群的易用性插件
Android2.0/2.0.1/2.1 
Eclair 
(松饼)
2009年10月26日,2.0(Eclair 松饼)版本软件开发工具包发布。主要的更新如下: 
1、优化硬件速度 
2、"Car Home"程序 
3、支持更多的屏幕分辨率 
4、改良的用户界面 
5、新的浏览器的用户接口和支持HTML5 
6、新的联系人名单 
7、更好的白色/黑色背景比率 
8、改进Google Maps3.1.2 
9、支持Microsoft Exchange 
10、支持内置相机闪光灯 
11、支持数码变焦 
12、改进的虚拟键盘 
13、支持蓝牙2.1 
14、支持动态桌面的设计
Android 2.2/2.2.1 
Froyo 
(冻酸奶)
2010年5月20日,2.2(Froyo 冻酸奶)版本软件开发工具包发布。主要的更新如下: 
1、整体性能大幅度的提升 
2、3G网络共享功能。 
3、Flash的支持。 
4、App2sd功能。 
5、全新的软件商店。 
6、更多的Web应用API接口的开发。
Android 2.3 
Gingerbread 
(姜饼)
2010年12月7日,2.3(Gingerbread 姜饼)版本软件开发工具包发布。主要的更新如下: 
1、增加了新的垃圾回收和优化处理事件 
2、原生代码可直接存取输入和感应器事件、EGL/OpenGL ES、OpenSL ES。 
3、新的管理窗口和生命周期的框架。 
4、支持VP8和WebM视频格式,提供AAC和AMR宽频编码,提供了新的音频效果器 
5、支持前置摄像头、SIP/VOIP和NFC(近场通讯) 
6、简化界面、速度提升: 
7、更快更直观的文字输入: 
8、一键文字选择和复制/粘帖: 
9、改进的电源管理系统: 
10、新的应用管理方式:

Android 3.0 
Honeycomb 
(蜂巢)
2011年2月2日, 3.0(Honeycomb 蜂巢)版本主要更新如下: 
·优化针对平板 
·全新设计的UI增强网页浏览功能 
·n-app purchases功能
Android 3.1 
Honeycomb 
(蜂巢)
2011年5月11日在Google I/O开发者大会宣布发布,版本主要更新如下: 
Honeycomb蜂巢(改进3.0BUG) 
经过优化的Gmail电子邮箱; 
全面支持GoogleMaps 
将Android手机系统跟平板系统再次合并从而方便开发者。 
任务管理器可滚动,支持USB 输入设备(键盘、鼠标等)。 
支持 Google TV.可以支持XBOX 360无线手柄 
widget支持的变化,能更加容易的定制屏幕widget插件。

Android 3.2 
Honeycomb 
(蜂巢)
2011年7月13日发布,版本更新如下: 
支持7英寸设备 
引入了应用显示缩放功能

Android 4.0 
Ice Cream Sandwich 
(冰激凌三明治)
2011年10月19日 在香港发布, 
4.0(Ice Cream Sandwich 冰激凌三明治)版本主要更新如下: 
1、全新的ui 
2、全新的Chrome Lite浏览器,有离线阅读,16标签页,隐身浏览模式等。 
3、截图功能 
4、更强大的图片编辑功能 
5、自带照片应用堪比Instagram,可以加滤镜、加相框,进行360度全景拍摄,照片还能根据地点来排序 
6、Gmail加入手势、离线搜索功能,UI更强大。 
7、新功能People:以联系人照片为核心,界面偏重滑动而非点击,集成了Twitter、Linkedin、Google+等通讯工具。有望支持用户自定义添加第三方服务。 
8、新增流量管理工具,可具体查看每个应用产生的流量。 
9、正在运行的程序可以像电脑一样的互相切换 
10、人脸识别功能 
11、系统优化、速度更快 
12、支持虚拟按键,手机可以不再拥有任何按键 
13、更直观的程序文件夹 
14、平板电脑和智能手机通用 
15、支持更大的分辨率 
16、专为双核处理器编写的优化驱动 
17、全新的Linux内核 
18、增强的复制粘贴功能 
19、语音功能 
20、全新通知栏 
21、更加丰富的数据传输功能 
22、更多的感应器支持 
23、语音识别的键盘 
24、全新的3D驱动, 游戏支持能力提升 
25、全新的谷歌电子市场 
26、增强的桌面插件自定义
Android 5.0 
Jelly Bean 
(果冻豆)
继“冰激凌三明治”之后的下一版Android系统。


系统架构

  Android的系统架构和其它操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

  Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。

  在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程(如:python、lua、tcl、php等等),还有其他诸如:Qt(qt for android)、Mono(mono for android)等一些著名编程框架也开始支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。另外,谷歌还在2009年特别发布了针对初学者的Android Simple语言,该语言类似Basic语言。而在网页编程语言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已经支持Android开发。

  而在Android系统底层方面,Android使用C/C++作为开发语言。

应用程序(部分)

  早期的Android应用程序开发,通常通过Android SDK(Android软件开发包)下使用Java作为编程语言来开发应用程序,但通过不同的软件开发包,则使用的编程语言也不同。

  例如开发者可以通过Android NDK(Android Native开发包)使用C语言或者C++语言来作为编程语言开发应用程序。同时谷歌还推出了适合初学者编程使用的Simple语言,该语言类似微软公司的Visual Basic语言。此外,谷歌公司还推出了Google App Inventor开发工具,该开发工具可以快速地构建应用程序,方便新手开发者。

Java开发方面

  Android支持使用Java作为编程语言来开发应用程序,而Android的Java开发方面从接口到功能,都有层出不穷的变化。考虑到Java虚拟机的效率和资源占用,谷歌重新设计了Android的Java,以便能提高效率和减少资源占用,因而与J2ME等不同。

  

Android结构

其中Activity等同于J2ME的MIDlet,一个 Activity 类(Class)负责创建视窗(Windows),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的 Activity 全部画面被其他 Activity 取代时,该 Activity 便被停止(Stopped),甚至被系统清除(Kill)。

  View等同于J2ME的Displayable,程序人员可以通过 View 类与“XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用 View 打造出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类(abstract class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity 中,要通过findViewById()来从XML 中取得View,Android的View类的显示很大程度上是从XML中读取的。View 与事件(event)息息相关,两者之间通过Listener 结合在一起,每一个View都可以注册一个event listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有BitMap等同于J2ME的Image。

C/C++开发方面

  早期的Android开发只支持Java作为编程语言开发应用程序,因而使得其他语言开发者只能望而却步。2010年4月,谷歌正式对开发者发布了Android NDK,NDK允许开发者使用C/C++作为编程语言来为Android开发应用程序,初版的NDK使得开发者看到了C/C++在Android开发中的希望。

  但是,当前版本的NDK在功能上还有很多局限性:NDK并没有提供对应用程序生命周期的维护;NDK也不提供对Android系统中大量系统事件的支持;对于作为应用程序交互接口的UI API,当前版本的NDK中也没有提供。但是相对于初版的NDK,现在的NDK已经进行了许多重大的功能改进。

  由此可见,NDK仍然需要完善和发展,相信未来随着NDK的发展,NDK可以做得更多更好。

中介软件

  操作系统与应用程序的沟通桥梁,应用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari 浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。

  Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。

  Android 使用skia 为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但相较于Linux Cairo, skia 功能还只是雏形的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,目前Skia 也是Google Chrome 的图形引擎。

  Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。

  Android的中间层多以Java 实现,并且采用特殊的Dalvik 虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。

  Dalvik虚拟机可以有多个实例(instance), 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik 虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。

硬件抽像层

  Android 的 HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让 Android 不至过度依赖 Linux kernel,以达成 kernel independent 的概念,也让 Android framework 的开发能在不考量驱动程序实现的前提下进行发展。

  HAL stub 是一种代理人(proxy)的概念,stub 是以 *.so 档的形式存在。Stub 向 HAL“提供”操作函数(operations),并由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 这些操作函数。HAL 里包含了许多的 stub(代理人)。Runtime 只要说明“类型”,即 module ID,就可以取得操作函数。

内核

  Android 是运行于 Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 userspace,使得Linux driver 与 Linux kernel彻底分开。bionic/libc/kernel/ 并非标准的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所产生的,这样做是为了保留常数、数据结构与宏。

  目前Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具 Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。

安全权限机制

  Android本身是一个权限分立的操作系统。在这类操作系统中,每个应用都以唯一的一个系统识别身份运行(Linux用户ID与群组ID)。系统的各部分也分别使用各自独立的识别方式。Linux就是这样将应用与应用,应用与系统隔离开。

  系统更多的安全功能通过权限机制提供。权限可以限制某个特定进程的特定操作,也可以限制每个URI权限对特定数据段的访问。

  Android安全架构的核心设计思想是,在默认设置下,所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。这其中包括读写用户隐私数据(联系人或电子邮件),读写其他应用文件,访问网络或阻止设备待机等。

  安装应用时,在检查程序签名提及的权限,且经过用户确认后,软件包安装器会给予应用权限。从用户角度看,一款Android应用通常会要求如下的权限:

  拨打电话、发送短信或彩信、修改/删除SD卡上的内容、读取联系人的信息、读取日程信的息,写入日程数据、读取电话状态或识别码、精确的(基于GPS)地理位置、模糊的(基于网络获取)地理位置、创建蓝牙连接、对互联网的完全访问、查看网络状态,查看WiFi状态、避免手机待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。

  一款应用应该根据自身提供的功能,要求合理的权限。用户也可以分析一款应用所需权限,从而简单判定这款应用是否安全。如一款应用是不带广告的单机版,也没有任何附加内容需要下载,那么它要求访问网络的权限就比较可疑。

程序组成

  技术内容:本系统主要由四个部分组成,分别是:活动(Activity): 用于表现功能。服务(Service): 相当于后台运行的Activity。广播接收器(BroadcastReceiver):用于接收广播。意图(Intent): 用于连接以上各个组件,并在其间传递消息。

1 Activity

  Android 中,Activity 是所有程序的根本,所有程序的流程都运行在Activity 之中,Activity可以算是开发者遇到的最频繁,也是Android 当中最基本的模块之一。在Android的程序当中,Activity 一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么Acitivity就相当于一个网页。在Activity 当中可以添加一些Button、Check box 等控件。可以看到Activity 概念和网页的概念相当类似。

  一般一个Android 应用是由多个Activity 组成的。这多个Activity 之间可以进行相互跳转,例如,按下一个Button 按钮后,可能会跳转到其他的Activity。和网页跳转稍微有些不一样的是,Activity 之间的跳转有可能返回值,例如,从Activity A 跳转到Activity B,那么当Activity B 运行结束的时候,有可能会给Activity A 一个返回值。这样做在很多时候是相当方便的。

  当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。用户可以通过回退操作返回到以前打开过的屏幕。我们可以选择性的移除一些没有必要保留的屏幕,因为Android 会把每个应用的开始到当前的每一个屏幕保存在堆栈中。Activity 是由Android 系统进行维护的,它也有自己的生命周期,即它的一个产生、运行、销毁的一个周期,对于Activity,关键是其生命周期的把握,其次就是状态的保存和恢复(onSaveInstanceState onRestoreInstanceState),以及Activity 之间的跳转和数据传输(intent)。

2 Service

  Service 是android 系统中的一种组件,它跟Activity 的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service 是没有界面的长生命周期的代码。Service 是一种程序,它可以运行很长时间,但是它却没有用户界面。这么说有点枯燥,我们来看个例子。打开一个音乐播放器的程序,这个时候若想上网了,那么,我们打开Android 浏览器,这个时候虽然我们已经进入了浏览器这个程序,但是,歌曲播放并没有停止,而是在后台继续一首接着一首的播放。其实这个播放就是由播放音乐的Service进行控制。当然这个播放音乐的Service也可以停止,例如,当播放列表里边的歌曲都结束,或者用户按下了停止音乐播放的快捷键等。service 可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD 卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务嘛,总是藏在后头的。

3 Broadcast

  在Android 中,Broadcast 是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver 是对发送出来的Broadcast进行过滤接受并响应的一类组件。可以使用BroadcastReceiver 来让应用对一个外部的事件做出响应。这是非常有意思的,例如,当电话呼入这个外部事件到来的时候,可以利用BroadcastReceiver 进行处理。例如,当下载一个程序成功完成的时候,仍然可以利用BroadcastReceiver 进行处理。BroadcastReceiver不能生成UI,也就是说对于用户来说不是透明的,用户是看不到的。BroadcastReceiver通过NotificationManager 来通知用户这些事情发生了。BroadcastReceiver 既可以在AndroidManifest.xml 中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用Context.sendBroadcast () 将它们自己的intent broadcasts广播给其他应用程序。注册BroadcastReceiver有两种方式:

4 Intent

  Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android 各个组件之间的通讯。Intent 负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android 则根据此Intent 的描述,负责找到对应的组件,将Intent 传递给调用的组件,并完成组件的调用。因此,Intent 在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。例如,在一个联系人维护的应用中,当我们在一个联系人列表屏幕(假设对应的Activity 为listActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为detailActivity)。为了实现这个目的,listActivity需要构造一个Intent,这个Intent 用于告诉系统,我们要做"查看"动作,此动作对应的查看对象是"某联系人",然后调用startActivity(Intent intent),将构造的Intent 传入,系统会根据此Intent 中的描述,到ManiFest中找到满足此Intent 要求的Activity,系统会调用找到的Activity,即为detailActivity,最终传入Intent,detailActivity 则会根据此Intent中的描述,执行相应的操作。Intent 主要是用来启动其他的activity 或者service,所以可以将intent 理解成activity 之间的粘合剂。Intent具体有一下3 种形式:

  通过startActivity 方法来启动一个新的Activity;

  通过broadcast Intent 机制可以将一个Intent 发送给任何对这个Intent 感兴趣的BroadcastReceiver;

  通过startService (Intent) 或bindService(Intent,ServiceConnection,int) 来和后台的Service 进行交互。

关注九号手机站
带你玩转移动端
扫一扫,移动内容更精彩

阅读本文后您有什么感想? 已有 人给出评价!

  • 0 囧
  • 0 恶心
    恶心
  • 0 期待
    期待
  • 0 难过
    难过
  • 0 不错
    不错
  • 0 关注
    关注

网友评论

发表评论
字母检索ABCDEFGHIJKLMNOPQRSTUVWXYZ