安卓各版本差异

Android 4.X

1、系统恢复开源
2、统一手机与平板,通知栏支持单个清楚,人脸解锁,数据流量监视器,内置拼音检查,Roboto字体,Wi-Fi直连即WLAN直连(4.0)
3、三重缓冲,Google Now(基于时间和位置的语音搜索),离线语音输入支持,通知中心增强,应用增量更新技术(4.1.2)
4、ART模式支持,RAM优化,Emoji键盘,增强蓝牙,NFC付费(4.4.2)
5、32位系统支持

Note:

WIFI直连(即WLAN直连)是一种基于无线WiFi传输技术实现点对点的文件共享传输媒介,突破传统的基于无线接入点AP或路由器实现相同设备之间的文件共享传输功能,WLAN直接可简单、高效且快捷实现两个设备间文件传输操作。

三重缓冲:http://www.apkbus.com/blog-705730-61226.html

增量更新:即首先将应用的旧版本Apk与新版本Apk做差分,得到更新的部分的补丁,例如旧版本的APK有5M,新版的有8M,更新的部分则可能只有3M左右(这里需要说明的是,得到的差分包大小并不是简单的相减,因为其实需要包含一些上下文相关的东西),使用差分升级的好处显而易见,那么你不需要下载完整的8M文件,只需要下载更新部分就可以。

ART模式:Android Runtime,与传统的Dalvik模式不同,ART模式可以实现更为流畅的安卓系统体验。ART模式与Dalvik模式最大的不同在于,在启用ART模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会先将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。

Dalvik模式:Android系统是以Linux系统为底层构建的,Android系统是开源(源代码公开)的,Android系统势必会适配到不同硬件配置的设备上,因此谷歌为了降低应用的开发难度在Linux底层之上构筑了一个名为“Dalvik”的虚拟机。因为Dalvik虚拟机的存在,Android系统的开发者只需使用谷歌提供的SDK(软件开发工具包)即可较为轻松的按照一套“规则”创建APP,不用顾忌硬件、驱动等问题,在每次执行应用的时候Dalvik虚拟机都会将程序的语言由高级语言编译为机器语言,这样当前设备才能够运行这一应用。在每次运行应用时都需要一次编译,这样程序的执行效率大大下降。

Android 5.X

1、引入对64位系统的支持,兼容支持32位应用
2、卡片化、扁平化设计风格
3、新增浮动通知
4、预先编译(AOT)Android运行时由Android核心库集和Dalvike虚拟机改成Android核心库集和ART。两者的区别就是Dalvike虚拟机采用了一种被称为JIT(just-in-time)的解释器进行动态编译,而ART模式则在用户安装App是进行预编译AOT(Ahead-of-time)。将android5.X的运行速度提高了3倍左右。
5、Android 5.1添加了对同时使用多个蜂窝运营商SIM卡的支持。

Android 6.X

1、动态权限,用户可直接在运行时管理应用权限。
2、取消了Apache HTTP客户端。
3、Doze电量管理功能,在“Doze”模式下,手机会在一段时间未检测到移动时,让应用休眠清杀后台进程减少功耗,谷歌表示,当屏幕处于关闭状态,平均续航时间提高30%,这个区别于IOS的墓碑机制。在安卓开发,需要后台运行时,最好在前台留有进程,防止被误杀。
4、从Android6.X起,Ecilpse ADT不再更新支持Android开发。
5、谷歌正式将指纹识别加入系统底层,开发相关的API,加大指纹开发的安全性。
6、加入了Android Pay进一步强化移动支付

Android 7.X

1、多窗口支持,用户可以并排运行两个应用
2、更便捷的通知栏,自动将多条通知合并,可以直接回复通知
3、快速的应用安装路径,只需几秒钟就可以完成安装。系统更新也变得更快,因为省去了优化步骤。
4、随时随地低电耗模式,屏幕关闭一段时间,且设备未插电源,低电耗模式就会对应用使用熟悉的CPU和网络限制。
5、“快速设置”通常用于直接从通知栏显示关键设置和操作,非常简单。
6、号码屏蔽和来电过滤
7、WebView:Chrome和WebView配合使用、多进程、Javascript在页面加载之前运行、不安全起点上的地理定位
8、支持app应用签名v2的打包方式,引入一项新的应用签名方案APK Sigature Scheme v2,它能提供更快的应用安装时间和更多针对未授权APK文件更改的保护。
9、权限更改,面向Android 7.0或更高版本的应用私有目录被限制访问。
10、JIT/AOT编译共存(Just In Time, Adead of Time)

Note:

使用 Java/Koltin 开发 Android App,在编译打包生成APK文件时,会有这样一个流程:

  1. Java编译器将Java文件编译为class文件
  2. dx工具将编译输出的类文件转换为dex文件(Android虚拟机不支持class文件)

而Android虚拟机有两种:DalvikART,JIT与AOT是虚拟机为了提高运行效率等采用的不同的编译策略

Dalvik和JIT

JIT意思是Just In Time Compiler,就是即时编译技术,与Dalvik虚拟机相关。

JIT是干嘛的

JIT在Android2.2到Android4.4版本(7.0版本也有,后文会叙述),JIT的目的是为了提高Android的运行效率。

Dalvik虚拟机可以看做是一个Java虚拟机。在 Android系统初期,每次运行程序的时候,Dalvik负责将dex翻译为机器码交由系统调用。这样有一个缺陷每次执行代码,都需要Dalvik将操作码代码翻译为机器对应的微处理器指令,然后交给底层系统处理,运行效率很低

为了提升效率Android在2.2版本中添加了JIT编译器,当App运行时,每当遇到一个新类,JIT编译器就会对这个类进行即时编译,经过编译后的代码,会被优化成相当精简的原生型指令码(即native code),这样在下次执行到相同逻辑的时候,速度就会更快。JIT 编译器可以对执行次数频繁的 dex/odex 代码进行编译与优化,将 dex/odex 中的 Dalvik Code(Smali 指令集)翻译成相当精简的 Native Code 去执行,JIT 的引入使得 Dalvik 的性能提升了 3~6 倍。

JIT缺陷

  • 每次启动应用都需要重新编译(没有缓存)
  • 运行时比较耗电,耗电量大

ART和AOT

AOT是指"Ahead Of Time",与"Just In Time"不同,从字面来看是说提前编译。

AOT是干嘛的

JIT是运行时编译,是动态编译,可以对执行次数频繁的dex代码进行编译和优化,减少以后使用时的翻译时间,虽然可以加快Dalvik运行速度,但是有一个很大的问题:将dex翻译为本地机器码也要占用时间。 所以Google在4.4推出了全新的虚拟机运行环境ART(Android RunTime),用来替换Dalvik(4.4上ART和Dalvik共存,用户可以手动选择,5.0 后Dalvik被替换)。

AOT 是静态编译,应用在安装的时候会启动 dex2oat 过程把 dex预编译成 ELF 文件,每次运行程序的时候不用重新编译。 ART 对 Garbage Collection(GC)过程的也进行了改进:

  1. 只有一次 GC 暂停(Dalvik 需要两次)
  2. 在 GC 保持暂停状态期间并行处理
  3. 在清理最近分配的短时对象这种特殊情况中,回收器的总 GC 时间更短
  4. 优化了垃圾回收的工效,能够更加及时地进行并行垃圾回收,这使得 GC_FOR_ALLOC 事件在典型用例中极为罕见
  5. 压缩 GC 以减少后台内存使用和碎片

AOT的缺陷

  • 应用安装和系统升级之后的应用优化比较耗时(重新编译,把程序代码转换成机器语言)
  • 优化后的文件会占用额外的存储空间(缓存转换结果)

JIT和AOT共存

Android 7.0上,JIT 编译器被再次使用,采用AOT/JIT 混合编译的策略,特点是:

  1. 应用在安装的时候dex不会再被编译
  2. App运行时,dex文件先通过解析器被直接执行,热点函数会被识别并被JIT编译后存储在 jit code cache 中并生成profile文件以记录热点函数的信息。
  3. 手机进入 IDLE(空闲) 或者 Charging(充电) 状态的时候,系统会扫描 App 目录下的 profile 文件并执行 AOT 过程进行编译。

Android 8.X

1、安装未知来源的第三方开关被移出,变成了每次安装未知的第三方都要手动授权。
2、通知功能的改变,应用收到通知时,会在应用的右上角显示一个红点,长按会跳出一个弹出菜单。
3、画中画功能的加入。
4、支持自动填写的功能。

Android 9.X

1、DNS over TLS: 是一个通过传输层安全协议(TLS)来加密并打包域名系统(DNS)的安全协议。此协议设计目的是为了防止中间人攻击与控制DNS数据以增强用户隐私。
2、(刘海屏)全新的手势操作界面,不带返回键和多任务键。
3、GPS定位之外的WiFi定位,增加了平台级支持IEEE 802.11 mc Wi-Fi协议,让开发者可在App中使用室内定位。
4、网络和神经网络,设备会对网络有更精细的调整:根据任务需求的数据大小和当前的网络环境。在收费网络里延迟一些网络请求,而在不急飞的网络里可以通过消息预获取来得到更好的用户体验。神经网络API的更多操作则是让设备变得更智能,更聪明。

你可能感兴趣的:(安卓各版本差异)