Fork me on GitHub

2017-8-21-Android发行版本

Android的前世今生

Android 出生

  • 2003年10月,Andy Rubin等人创建Android公司,并组建Android团队
  • 2005年8月17日,Google低调收购了成立仅22个月的高科技企业Android及其团队
  • 2007年11月5日,谷歌公司正式向外界展示了这款名为Android的操作系统
  • 2008年,在GoogleI/O大会上,谷歌提出了AndroidHAL架构图(Android HAL架构是什么),在同年8月18号,Android获得了美国联邦通信委员会(FCC)的批准

Android 历史版本

从2009年5月开始,Android操作系统改用甜点来作为版本代号,这些版本按照从C大写字母开始的顺序来进行命名:纸杯蛋糕(Cupcake)、甜甜圈(Donut)、闪电泡芙(Éclair)、冻酸奶(Froyo)、姜饼(Gingerbread)、蜂巢(Honeycomb)﹑冰淇淋三明治(Ice Cream Sandwich)、果冻豆(Jelly Bean)、奇巧(KitKat)、棒棒糖(Lollipop)、棉花糖(Marshmallow)、牛轧糖(Nougat)

  • Android milestone builds (with Astro Boy and Bender floating around in here somewhere)
  • Android 1.0(没有开发代号)
  • Android 1.1 - Petit Four
  • Android 1.5 - Cupcake
  • Android 1.6 - Donut
  • Android 2.0/2.1 - Éclair
  • Android 2.2 - Froyo
  • Android 2.3 - Gingerbread
  • Android 3.0/3.1/3.2 - Honeycomb
  • Android 4.0 - Ice Cream Sandwich
  • Android 4.1/4.2/4.3 - Jelly Bean
  • Android 4.4 - KitKat
  • Android 5.0/5.1 - Lollipop(Android L)
  • Android 6.0 - Marshmallow(Android M)
  • Android 7.0 -Nougat(Android N)

里程碑版本

2010年5月20日,2.2(Froyo 冻酸奶)版本软件开发工具包发布,该版本基于Linux 2.6.32内核。主要的更新如下:

  • 支持将软件安装至扩展内存
  • 集成Adobe Flash 10.1支持
  • 加强软件即时编译的速度
  • 新增软件启动”快速”至电话和浏览器
  • USB分享器和WiFi热点功能
  • 支持在浏览器上传档案
  • 更新Market中的批量和自动更新
  • 增加对Microsoft Exchange的支持(安全政策,auto-discovery,GAL look-up)
  • 集成Chrome的V8 JavaScript引擎到浏览器
  • 加强快速搜索小工具
  • 更多软件能透过Market更新,类似2.0/2.1中的Map更新

2010年12月6日,2.3(Gingerbread 姜饼)版本软件开发工具包发布,该版本基于Linux 2.6.35内核。主要更新如下:

  • 修补UI
  • 支持更大的屏幕尺寸和分辨率(WXGA及更高)
  • 系统级复制粘贴
  • 重新设计的多点触摸屏幕键盘
  • 原生支持多个镜头(用于视频通话等)和更多传感器(陀螺仪、气压计等)
  • 电话簿集成Internet Call功能
  • 支持近场通信(NFC)
  • 强化电源、应用程序管理功能
  • 新增下载管理员
  • 优化游戏开发支持
  • 多媒体音效强化
  • 从YAFFS转换到ext4文件系统
  • 开放了屏幕截图功能
  • 对黑色及白色的还原更加真实
    2010年12月及2011年1月分别发放2.3.1和2.3.2更新包,用于改进及修复Nexus S的Bug。
    Android 2.3.3
    Android 2.3.3更新包于2011年2月9日正式发布,仅针对上一个版本进行了API改进,其他无变化。
    Android 2.3.4
    Android 2.3.4更新包增加了在Google Talk中使用语音通话和视频聊天的支持。
  • 屏幕截图功能(电源键+Home)在2.3.4 才有实现出来(2011 Xperia: 长按Power键,再点击“截图”)
    Android 2.3.5
    Android 2.3.5更新包于2011年7月25日正式发布,该更新包改进了个别机型的功能,针对上一个版本进行如下改进:
    提升了Nexus S 4G的性能,包括其他性能的提升。
  • 修复了存在于三星Galaxy S中存在的蓝牙Bug。
    升级了内置的Gmail应用程序
    增强了滚动列表时产生的阴影动画
    增强了内置的相机功能
    改善了电池耗电量,增加续航时间。
    Android 2.3.6
    Android 2.3.6更新包于2011年9月2日正式发布,针对上一个版本修复了语音搜索存在的Bug。该更新包改进了加拿大版本Nexus S存在的使用WiFi时可能导致增加辐射的问题.2011年2月22日

Android 4.0(Ice Cream Sandwich 雪糕三明治)于2011年4月在
Google I/O
大会上首次被宣布,并且于2011年10月19日正式发布Android 4.0“雪糕三明治”操作系统和搭载Android 4.0的
Galaxy Nexus
智能手机。 Android 4.0.1的软件开发包于2011年10月19日正式发布。Google公司的发言人加布·科恩(Gabe Cohen)指出,Android 4.0“理论上”与任何一个当前市面上搭载了Android 2.3.x 版本的设备兼容。关于Android 4.0的
源代码
已于2011年11月14日正式公布。
该版本的主要更新内容如下:

  • 统一了手机和平板电脑使用的系统,应用会自动根据设备选择最佳显示方式。
  • 提升硬件的性能以及系统的优化,提升系统流畅度。
  • 支持在系统中使用虚拟按键,该功能可以取代物理按键。
  • 界面以新的标签页形式展示,并且将应用程序和其他内容的图标分类。
  • 更方便地在主界面创建文件夹,并且使用“一拖”、“一放”的操作方式。
  • 一个定制的启动器
  • 改进的可视化语音邮件的能力,加快或减慢语音邮件。
  • 在日历中也可以使用多点触控,进行缩放和拖拽操作。
  • Gmail离线搜索,两行预览,和新的任务栏。
  • 与其他第三方微博、博客类应用程序的无缝连接,实时更新的内容会被展示在主界面上。
  • Gmail支持缩放操作,支持左拉、右拉进行查看。
  • 增加截图功能(可以同时按住电源键和音量向下键进行截图操作)。
  • 改进虚拟键盘可以产生的误操作
  • 在锁屏状态下也可以对用户设置的某些应用程序进行操作
  • 改进的复制、粘贴功能
  • 更好的语音集成,实时录音,文本听写等语音功能。
  • 脸部识别进行锁屏,可以通过脸部识别进行锁屏。
  • 新标签页模式的网页浏览器,支持最大同时打开16个标签页。
  • 自动同步用户手机中的网页书签,可以在桌面版Chrome和其他Android设备中进行同步。
  • 全新的现代化Roboto字体
  • 内置流量监控功能,用户可以对流量进行设置,超出设置流量时,手机会自动关闭上网功能,并且可以随时查看已使用和未使用的流量,并且以报表的形式展现出来以帮助用户了解使用情况。
  • 能够随时关闭正在使用的应用程序
  • 提升自带的相机功能
  • 内置图片处理软件
  • 新的图库软件
  • 与其他第三方应用程序进行无缝衔接,用户可以在任何界面看到自己需要的消息和图像。
  • 新的启动画面,主画面右下角类似Tray的图标,内有多个程序可运行。
  • Google Search Bar会设置在最上方
  • Apps/Widgets会类似Honeycomb模样
  • 增加支持硬件加速的功能
  • Wi-Fi直连功能
  • 支持1080p视频播放和录制
    Android 4.0.1
  • 修复Android 4.0中的Bug。
    Android 4.0.2
    Android 4.0.2更新包于2011年11月28日正式发布,该更新包修复了存在于Verizon版本Galaxy Nexus中的Bug。
    Android 4.0.3
    Android 4.0.3更新包于2011年12月16日发布,包括修复Bug和系统的优化,并且针对图形、数据库、拼写检查、蓝牙功能和其他功能的改进。公布了新的API,包括联系人API,日历增强,新的摄像头应用程序,提高视频稳定和QVGA分辨率和辅助功能的改进,如屏幕的改进等。
    Android 4.0.4
    Android 4.0.4更新包于2012年2月6日发布,主要更新如下:
  • 更快的运行性能
  • Android操作系统的漏洞(电池问题)修复
  • 3G/4G切换改进
  • 信号强度增强
  • 新的Power菜单(与之前的4.0.2不同,接近4.0.3)
  • 更快速启动
  • 自动亮度调节功能改动,有了平滑的过渡。
  • 重新调整了相机的Holding down按钮
  • 多点触控的问题解决
  • 自动旋转更迅速
  • 浏览器的性能显著提高
  • 最近应用程序列表打开更快速
  • 相机UI的变化
  • 音量增大
  • 键盘问题修复
  • 更新新闻及天气应用程序的UI
  • 浏览器中的快速控制改进

Android 4.1/4.2/4.3 Jelly Bean

Android 4.1(Jelly Bean“果冻豆”)

  • 不会内置Flash Player,并且Adobe声明停止开发,但可自行安装APK。

Android 4.3
2013年7月24日与Nexus 7平板二代同步发表,主要更新如下:

  • 支持多用户登录,支持一台终端设备上有多个登录帐号。
  • “蓝牙低功耗”功能,开启蓝牙后,耗电量相比之前大幅降低。
  • 支持更多缓冲器对象
  • 新版OpenGL ES 3.0着色语言,支持32 位整数和浮点数据类型以及操作。
  • 增加多个纹理的支持,包括浮点纹理、深度纹理、顶点纹理等等。
  • 多重渲染目标(Multiple Render Targets),让GPU一次性渲染多个纹理。
  • 多重采样抗锯齿(MSAA Render To Texture),让3D物体的边缘不出现毛刺,可提升图像效果。
  • 使用统一的纹理压缩格式ETC
  • 增加TRIM指令,使得内置存储(Internal Storage)不会越用越慢。
  • 新增App Opt功能(默认隐藏),允许用户强行解除已安装应用的特定权限。

Android 4.4 KitKat

  • 支持低电耗音乐播放
  • 全新的原生计步器
  • 全新的NFC付费集成
  • 全新的非Java虚拟机运行环境ART(Android Runtime)
  • 支持Message Access Profile(MAP)
  • 支持Chromecast及新的Chrome功能

Android 5.0 Lollipop
开发代号:Android L
2014年6月25日于Google I/O 2014大会上发布Developer版(Android L),之后在2014年10月15日正式发布且名称定为Lollipop“棒棒糖”。
采用全新Material Design界面

  • 支持64位处理器
  • 全面由Dalvik转用ART(Android Runtime)编译,性能可提升四倍
  • 改良的通知界面及新增优先模式
  • 预载省电及充电预测功能
  • 新增自动内容加密功能
  • 新增多人设备分享功能,可在其他设备登录自己账号,并获取用户的联系人、日历等Google云数据
  • 强化网络及传输连接性,包括Wi-Fi、蓝牙及NFC
  • 强化多媒体功能,例如支持RAW格式拍摄
  • 强化“OK Google”功能
  • 改善Android TV的支持
  • 提供低视力的设置,以协助色弱人士
  • 改善Google Now功能[2]

Android的6.0版本,即盛传已久的Android M已经在Google 2015年的 I/O大会上被正式发布。一个在业内已经被热议的议题是:Android M“为工作升级而生”(Android for Work Update)。有业内人士解释道:“Android M将把Android的强大功能拓展至任何你所能看到的工作领域。”
根据Android系统以往的惯例,每一代新系统往往会根据其字母代号,对应一个关于零食的全名。如2014年在Google I/O大会上发布的Android L,其代号“L”一开始还只是Google为开发者称呼方便而准备的一个代号,但后来逐步演变成了“Lollipop”(棒棒糖Android 5.0)。所以,按照这种命名的传统,Android [字母]这种新模式也将意味着,一款新口味Android“零食”即将出现。
Google I/O 2015大会如约已于2015年5月28日举行。在发布会上代号为“Marshmallow(棉花糖)”的安卓6.0系统正式推出。
主要新功能如下:

  • 应用权限管理
  • SD卡可能和内置存储“合并”
  • Android Pay
  • 原生指纹识别认证
  • 自动应用数据备份
  • App Links(尽量减少诸如“你想要使用什么来打开这个?”的提醒)
  • 打盹和应用待机功能
  • 原生4K输出支持
  • 严格的APK安装文件验证
  • 支持MIDI
  • USB Type-C端口支持

Android 7.0 N

  • 分屏多任务
  • 新下拉快捷开关页
  • 通知消息快捷回复
  • 通知消息归拢
  • 夜间模式
  • 流量保护模式
  • 改进的Doze休眠机制
  • 菜单键快速应用切换

MATERIAL DESIGN Google I/O 2014

为了统一跨设备间的界面和交互,让用户得到连贯的体验。Material Design不再让像素处于同一个平面,而是让它们按照规则处于空间当中,具备不同的维度。按照Wired的话来说,那就是让像素具备海拔高度,这样子的话,系统的不同层面的元素,都是有原则、可预测的,不让用户感到无所适从,也避免开发者担心因为不同的视觉风格而产生冲突。

Material Design还规范了Android的运动元素,让按钮的弹入弹出,卡片的滑入滑出以及从一个界面变化成另一个界面的方法(比如从介绍一首歌的界面到控制播放的界面),都是秩序的、深思熟虑过的。Wired总结,Material Design中只有在高亮动作以及改变交互状态时,才会使用运动元素来表示。

对于现实世界中的隐喻,Material Design更加倾向于用色彩来提示。我们按下屏幕当中的按钮时,可以看到按钮颜色迅速发生变化,向石头投入湖面一样,产生了一波涟漪。杜瓦迪这样设计是因为Material Design中的按钮都处于一个平面,不再突起,因此它必须采用和以往不同的表示方法,以表明自己已经被按下。

Material Design所展示的模板当中,最显眼的是它的小圆点。它的作用好像iPhone上的Home键,是快捷功能入口,又是视觉上有趣的点缀。
然而,正如Material Design名字所暗示的,为了适应多尺寸的屏幕,杜瓦迪以及他的团队,寻求一种更加抽象的表达,一种存在屏幕里的显示“材料”。根据The Verge报道,杜瓦迪团队在面对Google产品里大量采用的卡片式设计时,灵感火花一闪:何不如这些“卡片”,想像成现实当中存在的,四处滑动的物体。

>
重磅教程!帮你全面彻底搞定MATERIAL DESIGN的学习笔记
>

Dalvik和ART运行时环境的区别

Dalvik

Dalvik虚拟机,是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即“Dalvik Executable”)格式的Java应用程序的运行。.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik由Dan Bornstein编写的,名字来源于他的祖先曾经居住过的小渔村达尔维克(Dalvík),位于冰岛Eyjafjörður。
大多数虚拟机包括JVM都是一种堆栈机器,而Dalvik虚拟机则是寄存器机。两种架构各有优劣,一般而言,基于堆栈的机器需要更多指令,而基于寄存器的机器指令更长。

Dalvik经过优化后,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行,独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。其实就是每一个应用都是作为独自的虚拟机运行,与其他应用互不牵扯。目前在Android4.4及其以下的版本中,应该全都是使用的Dalvik这种模式。

ART (Android Runtime)

Android Runtime(缩写为 ART),是一种在Android操作系统上的运行环境,由Google公司研发,并在2013年作为Android 4.4系统中的一项测试功能正式对外发布,在Android 5.0及后续Android版本中作为正式的运行时库取代了以往的Dalvik虚拟机。ART能够把应用程序的字节码转换为机器码,是Android所使用的一种新的虚拟机。它与Dalvik的主要不同在于:Dalvik采用的是JIT技术,而ART采用Ahead-of-time(AOT)技术。 ART同时也改善了性能、垃圾回收(Garbage Collection)、应用程序除错以及性能分析。

JIT最早在Android 2.2系统中引进到Dalvik虚拟机中,在应用程序启动时,JIT通过进行连续的性能分析来优化程序代码的执行,在程序运行的过程中,Dalvik虚拟机在不断的进行将字节码编译成机器码的工作。 与Dalvik虚拟机不同的是,ART引入了AOT这种预编译技术,在应用程序安装的过程中,ART就已经将所有的字节码重新编译成了机器码。应用程序运行过程中无需进行实时的编译工作,只需要进行直接调用。因此,ART极大的提高了应用程序的运行效率,同时也减少了手机的电量消耗,提高了移动设备的续航能力,在垃圾回收等机制上也有了较大的提升。 为了保证向下兼容,ART使用了相同的Dalvik字节码文件(dex),即在应用程序目录下保留了dex文件供旧程序调用然而.odex文件则替换成了可执行与可链接格式(ELF)可执行文件。一旦一个程序被ART的dex2oat命令编译,那么这个程序将会指通过ELF可执行文件来运行。因此,相对于Dalvik虚拟机模式,ART模式下Android应用程序的安装需要消耗更多的时间,同时也会占用更大的储存空间(指内部储存,用于储存编译后的代码),但节省了很多Dalvik虚拟机用于实时编译的时间。

Google公司在Android 4.4中带来的ART模式仅仅是ART的一个预览版,系统默认仍然使用的是Dalvik虚拟机,4.4上面提供的预览版ART相对于Android 5.0以后的ART运行时库有较大的不同,尤其体现在兼容性上。

Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。(dx 是一套工具,可以将 Java .class 转换成 .dex 格式. 一个dex档通常会有多个.class。由于dex有时必须进行最佳化,会使档案大小增加1-4倍,以ODEX结尾。)   

1、Dalvik 和标准 Java 虚拟机(JVM)的首要差别

Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。 JVM字节码中,局部变量会被放入局部变量表中,继而被压入堆栈供操作码进行运算,当然JVM也可以只使用堆栈而不显式地将局部变量存入变量表中。Dalvik字节码中,局部变量会被赋给65536个可用的寄存器中的任何一个,Dalvik指令直接操作这些寄存器,而不是访问堆栈中的元素。

2、Dalvik 和 Java 字节码的区别

VM字节码由.class文件组成,每个文件一个class。JVM在运行的时候为每一个类装载字节码。相反的,Dalvik程序只包含一个.dex文件,这个文件包含了程序中所有的类。Java编译器创建了JVM字节码之后,Dalvik的dx编译器删除.class文件,重新把它们编译成Dalvik字节码,然后把它们写进一个.dex文件中。这个过程包括翻译、重构、解释程序的基本元素(常量池、类定义、数据段)。常量池描述了所有的常量,包括引用、方法名、数值常量等。类定义包括了访问标志、类名等基本信息。数据段中包含各种被VM执行的函数代码以及类和函数的相关信息(例如DVM所需要的寄存器数量、局部变量表、操作数堆栈大小),还有实例变量。
小主,求您多少赏点儿~