Android系统简介

来源:互联网 发布:我不会唱歌知乎 编辑:程序博客网 时间:2024/06/05 08:31

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机平板电脑,由Google公司和开放手机联盟领导及开发。其版本概况如下:

Android版本概览
版本号
名称
发布时间
特性
Android1.1
未命名
2008年9月
内置应用商店;支持html网页浏览
Android 1.5
Cupcake
纸杯蛋糕
2009年4月30日
来电照片显示;采用webkit浏览器;支持复制粘贴操作;屏幕虚拟键盘
Android 1.6
Donut
甜甜圈
2009年9月15日
重新设计的Android Market手势;支持CDMA网络;文字转语音系统;查看应用程序耗电;支持虚拟私人网络(VPN);支持更多屏幕分辨率;支持OpenCore2媒体引擎
Android2.0/2.0.1/2.1
Eclair
松饼
2009年10月26日
优化硬件速度;支持更多分辨率;优化UI;新的浏览器的用户接口和支持HTML5;新的联系人名单;改进Google Maps;支持Microsoft Exchange;支持相机闪光灯;改进虚拟键盘;支持蓝牙2.1;支持动态桌面的设计
Android 2.2/2.2.1
Froyo
冻酸奶
2010年5月20日
3G网络共享功能;Flash的支持;App2sd功能;全新的软件商店;更多的Web应用API接口的开发
Android 2.3
Gingerbread
姜饼
2010年12月7日
优化垃圾回收和优化处理事件;原生代码可直接存取输入和感应器事件、EGL/OpenGLES、OpenSL ES;新的管理窗口和生命周期框架;支持VP8和WebM视频格式,提供AAC和AMR宽频编码,提供了新的音频效果;支持前置摄像头、SIP/VOIP和NFC;一键文字选择复制粘帖;改进电源管理系统;新的应用管理方式
Android 3.0
Honeycomb
蜂巢
2011年2月2日
优化针对平板 ;全新设计的UI增强网页浏览功能 ;n-app purchases功能
Android 3.1
Honeycomb
蜂巢
2011年5月11日
优化Gmail;全面支持Google Maps;将Android手机系统跟平板系统再次合并;任务管理器可滚动,支持USB输入设备(键盘、鼠标等) ;支持Google TV.支持XBOX 360无线手柄;widget支持优化
Android 3.2
Honeycomb
蜂巢
2011年7月13日
支持7英寸设备;引入了应用显示缩放功能
Android 4.0
Ice Cream Sandwich冰激凌三明治
2011年10月19日
全新的UI;新Chrome Lite浏览器,有离线阅读,16标签页,隐身浏览模式;截图功能;Gmail加入手势、离线搜索功能,UI优化;新功能People:以联系人照片为核心,集成了Twitter、Linkedin、Google+等通讯工具;新增流量管理工具,可查看每个应用产生的流量,限制和禁用流量
Android 4.1
Jelly Bean
果冻豆
2012年6月28日
特效动画帧速提高至60fps,增加三倍缓冲;增强通知栏;全新搜索UI、智能语音搜索和Google Now;桌面插件自动调整大小;语言和输入法扩展;新的输入类型和功能;新的连接类型
Android 4.2
Jelly Bean
果冻豆
2012年10月30日
键盘手势输入功能;改进锁屏功能,锁屏状态下支持桌面挂件和直接打开照相功能;可扩展通知,允许用户直接打开应用;Gmail邮件可缩放显示;用户连点三次可放大整个显示频,两根手指进行旋转和缩放,专为盲人用户设计的语音输出和手势模式导航
Android 4.3
Jelly Bean
果冻豆
2013年7月25日
多用户登录;智能蓝牙;OpenGL ES3.0;数字版权加密(DRMs)
Android 4.4
KitKat
奇巧
2013年9月4日
支持两种编译模式;RAM优化;新图标、锁屏、启动动画和配色方案;新的拨号和智能来电显示;加强主动式语音功能;集成Hangouts IM软件;全屏模式;支持Emoji键盘;轻松访问在线存储;无线打印;屏幕录像功能;内置字幕管理功能;计步器应用;低功耗音频和定位模式;新的接触式支付系统;以及新的蓝牙配置文件和红外兼容性。
Android 5.0
Lollipop
棒棒糖
2014年10月15日
  1. 谷歌将为自家的语音服务Google Now 加入一个名为 OK Google Everywhere 的全新功能。
  2. Android 5.0 将会加入更多的健身功能。
  3. 整合碎片化。
  4. 支持64位处理器。
  5. 使用ART虚拟机。
Android6.0
Marshmallow
棉花糖
2015年5月28日
1。锁屏下语音搜索。
2.指纹识别。
3.更完整的应用权限管理。
4.Doze电量管理。
5.Now on Tap功能。
6.App Links。
Android7.0 Android 7.0Nougat(牛轧糖):2016年8月22日

2017年5月5日,谷歌正式向开发者发出通知,宣布Andrdoid 7.0的Beta项目正式停止,最终版本止步在Android 7.1.2,让位于Android O。

安卓系统架构


翻译成中文:


1、蓝色的代表java程序,黄色的代码为运行JAVA程序而实现的虚拟机,绿色部分为C/C++语言编写的程序库,红色的代码内核(linux内核+driver)。在Application Framework之下,由C/C++的程序库组成,通过JNI完成从JAVA到C的调用。

2、架构详解

现在我们拿起手术刀来剖析各个部分。其实这部分SDK文档已经帮我们做得很好了,我们要做的就是拿来主义,然后再加上自己理解。下面自底向上分析各层。

2.1、Linux Kernel

Android基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。

如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各司其职,各层提供固定的SAP(Service Access Point),专业点可以说是高内聚、低耦合。

如果你只是做应用开发,就不需要深入了解Linux Kernel层。

2.2、Android Runtime

Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。

大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以將 Java .class 转换成 .dex 格式。一个dex文件通常会有多个.class。由于dex有時必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。

Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。

2.3、Libraries

Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。下面列出一些核心库:

  • 系统C库——标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备
  • 媒体库——基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG
  • 界面管理——管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层
  • LibWebCore——新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图
  • SGL——基本的2D图形引擎
  • 3D库——基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅
  • FreeType ——位图和矢量字体渲染
  • SQLite ——所有应用程序都可以使用的强大而轻量级的关系数据库引擎

2.4、Application Framework

通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。

开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。

所有的应用程序其实是一组服务和系统,包括:

  • 视图(View)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器
  • 内容提供者(Content Providers)——使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据
  • 资源管理器(Resource Manager)——提供访问非代码资源,如本地化字符串、图形和布局文件
  • 通知管理器(Notification Manager——使所有的应用程序能够在状态栏显示自定义警告
  • 活动管理器(Activity Manager——管理应用程序生命周期,提供通用的导航回退功能

2.5、Applications

Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。更加丰富的应用程序有待我们去开发!

Android系统源码目录介绍:以安卓6.0为例进行介绍:

(1) abi: applicationbinaryinterface,应用程序二进制接口

(2) art: AndroidRuntime,就是6.0新的AOT形式虚拟机

(3) bionic:Bionic是Android的C/C++library库(为何不用glibc?体积小,版权)

(4) bootable:启动引导相关代码

(5) build:系统编译规则及generic等基础开发配置包

(6) cts: Android兼容性测试套件标准

(7) dalvik:顾名思义,虚拟机

(8) developers:作用不详

(9) development:开发者需要的例程和工具

(10) device:设备相关代码,作用不详,里面有谷歌三星摩托罗拉htc的目录

(11) docs:介绍android开源相关的文档,怎么做贡献之类的。

(12) external:使用的一些开源组件,比如AES,网页服务器,压缩工具等等

(13) frameworks:第二层,核心框架(包括核心javaapi) ,是Android应用程序的框架

(14) hardware:主要是硬件适配层HAL代码

(15)kernel_imx:Linux内核代码

(16) libcore:第三层,核心库

(17)libnativehelper:作用不详,只有一句话,支持Android的类库的功能

(18) ndk:顾名思义,ndk(nativedevelopment kit)开发用

(19) packages:应用程序包,放了很多APP,比如闹钟、浏览器、输入法什么的

(20) pdk: 平台开发包(PlatformDevelopment Kit),这个是为OEM准备的

(21) platform_testing

(22) prebuilts: x86和arm架构下预编译的一些资源

(23) sdk:这个不用讲,软件开发套件,包含各版本API和模拟器

(24) system:系统包,底层文件系统库、应用及组件——C语言,重点要看的!

(25) tools:工具,里面有fat32lib和gradle