Android现状调研报告
Android的架构
与其他操作系统一样,Android也采用分层的架构设计,从高到低分别是系统应用层(System Apps),Java API 框架层(Java API Framework),Android系统运行层(包括Android Runtime和原生态的C/C++库 Native C/C++ Libraries)、硬件抽象层(Hardware Abstraction Layer)、Linux内核层(Linux Kernel)
- 应用层(System Apps)
该层中包含所有的Android应用程序,包括电话、相机、日历等,我们自己开发的Android应用程序也被安装在这层;大部分的应用使用JAVA开发,现在Google也开始力推kotlin进行开发 - 应用框架层(Java API Framework)
这一层主要提供构建应用程序是可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的,开发者也可以通过使用API来构建自己的应用程序。 - 运行层
1)系统Native库
Android包含一些C/C++库,这些库能被Android系统中不同的组件使用
2)Android运行时环境
Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。虚拟机也在该层启动。
每个Android应用都有一个专有的进程,这些进程每个都有一个Dalivik虚拟机实例,并在该实例中运行。 - 硬件抽象层(HAL)
Android的硬件驱动与Linux不同,传统的Liunx内核驱动完全存在于内核空间中。但是Android在内核外部增加了一个硬件抽象层(HAL-Hardware Abstraction Layer),把一部分硬件驱动放到了HAL层。
为什么Android要这么做呢?
Linux内核采用了GPL协议,如果硬件厂商需要支持Linux系统,就需要遵照GPL协议公开硬件驱动的源代码,这势必会影响到硬件厂家的核心利益。
Android的HAL层运行在用户空间,HAL是一个“空壳”,Android会根据不同的需要,加载不同的动态库。这些动态库由硬件厂家提供。硬件厂家把相关硬件功能写入动态库,内核中只开放一些基本的读写接口操作。这样一些硬件厂家的驱动功能就由内核空间移动到了用户空间。
Android的HAL层遵循Apache协议,并不要求它的配套程序,因此厂家提供的驱动库不需要进行开放,保护了硬件厂家的核心利益。 - Liunx 内核(Marco Kernel)
Android平台的基础是Linux内核,比如ART虚拟机最终调用底层Linux内核来执行功能。Linux内核的安全机制为Android提供相应的保障,也允许设备制造商为内核开发硬件驱动程序。
Android和iOS的优劣势
机制的不同
ios系统采用沙盒机制,封闭性比较强,在内存控制方面,iOS系统禁止应用程序在后台运行,只有前台程序可以占用CPU
而Android系统基于Linux开发,开放性极强,即使在休眠状态下,手机上的App仍可在后台任意占用CPU和内存,安装的应用越多,给系统的负荷也就越重,系统速度被大幅拖慢
屏幕反馈带来体验差异
iOS对屏幕反应的优先级是最高的,它的响应顺序依次为Touch--Media--Service--Core架构,当用户只要触摸接触了屏幕之后,系统就会最优先去处理屏幕显示也就是Touch这个层级,然后才是媒体(Media),服务(Service)以及Core架构。而Android系统的优先级响应层级则是Application(应用)--Framework(框架)--Library(图像处理)--Kernal架构,当你触摸屏幕之后Android系统首先会激活应用,其次是框架然后才是屏幕最后是核心架构。
生态差异存在天壤之别
人们常说苹果IOS的生态很强大,其实倒不如说是国内的安卓生态实在是太烂了。因为国内用户无法接入Google Play,各个手机厂商完全各自为政,因此用户体验也是千差万别。
国内安卓手机用户的APP获取途径是极为复杂的,用户不仅从手机品牌官方的应用商店获取APP,也会从各种途径安装到各种来路不明的应用。这就导致了缺乏统一高标准的监管,导致各种因素泄露隐私,骚扰不断,甚至被恶意吸费的损失。
隐私的保护
ios的应用由自家的应用商店进行审查,不合规的应用会直接不予上架,并且一些设备号也被禁止获取,比如:IMEI:国际移动设备识别码,iOS 5 之后被禁止获取,mac地址:包括WiFi mac地址和蓝牙mac地址。iOS 7之后被禁止获取,UDID:与手机绑定,用来标示设备的唯一性 。iOS 6 之后被禁止获取.但是对于安卓,这些权限都可以轻易的取得,安装app后他会给你提示获取权限,不给,就无法使用该app,尽管这些权限和app的作用并没有什么关系,尽管在安卓6.0之后谷歌更新了权限获取的方式,但是也只是对君子不对小人,对于规范一些的App,拒绝就拒绝了。但是对于某些流氓App,就不见得有用了
Android的发展前景和进步
进步
以前的安卓手机总是被人说卡,这与当时安卓手机硬件情况参差不齐,碎片化严重,软件市场没有强有力的干预是分不开的,在安卓5.0这个里程碑式的更新后,谷歌为安卓界面开发采用卡片化,扁平化,在原来的XY轴的基础上添加Z轴的设计理念,最重要的一点是Android运行时由Android核心库集和Dalvike虚拟机改成Android核心库集和ART。两者的区别就是Dalvike虚拟机采用了一种被称为JIT(just-in-time)的解释器进行动态编译,而ART模式则在用户安装App是进行预编译AOT(Ahead-of-time)。将android5.X的运行速度提高了3倍左右,安卓的后续更新也加入了动态权限,Doze电量管理,原生分屏,夜间模式,虚拟按钮等功能,国内手机厂商大打价格战,高性价比手机成为了第一选择,良好的硬件基础加上统一的安卓系统迭代也为安卓的流畅性大大加分
发展前景
Android系统迭代更新10余年,在用户体验、性能、功耗、安全、隐私等方面都取得很大的进步,后续版本会持续在内存、文件系统、虚拟机、图形图像等方向优化。随着Android系统功能越来越多,系统架构中有些模块未来可能会被重构,某些服务大锁制约性能,比如Android 8.0优化过binder大锁让性能显著提升。关于图形方面,Vulkan将会是未来Android平台的一个发展方向,尤其是游戏领域。人工智能在Android系统上目前效果不太显著,Google未来应该还会持续投入,比如在AI预测用户行为加上相应后台管控策略用于提升手机续航。碎片化仍是当下最主要的问题,碎片化也导致用户隐私、安全和体验一致性方面得不到保障,Google专门成立团队致力于Android Mainline,从Android Q开始规划Mainline,未来的版本都将逐步迭代更新。
网友评论