在应题之前,有必要先说说何谓“物联网”。
顾名思义,物联网
相对于互联网
所代表的计算机(包括服务器和PC终端)网络化而言,是对万物(非计算机)之间的组网连结。
两者最核心的差异在于互联网是人和人之间的联网,而物联网是物和物之间的联网,因此移动计算,比如手机、平板这类终端,也应归于互联网范畴。
Android系统,从出生那天起,就是为人更好的操作移动通讯设备而设计的。
在其后的发展中,他不断的在多媒体方向和图形显示加速方面增强,比如更多的CPU核,更快的GPU,更高分辨率的Camera和LCD....
其目的在于提高人们播放高清视频、玩游戏、刷朋友圈、自拍、购物消费、出行导航.....等方面的体验和快感。
但对于物联网
来说,这些机制和功能完全没有用处,因此将Android应用在物联网设备上最大的问题就是其过于臃肿。
以Android 4.4为例(当前最新版为7.0),以下几组数据可以作为参考:
Android的开发包中包含500多个git仓库,仅framework文件夹内的文件总量就高达6万个,总大小1.6GB。
可供烧写的固件总大小超过500MB。
Android启动后,后台的进程总数超过100。
由于Android是一个开放系统,需要特别考虑对厂商APP的支持,并且对其安全问题大费周章,这些无疑都增加了Android系统的复杂性和冗余度。
从用户体验来说,用过Android手机的用户都有这样的体会和经历:Android系统越用越慢和必须定期重启以消除各种奇怪现象。
Android是为手机专门定制的一套系统,虽然他构建于Linux内核之上,但是他自身拥有庞大的HAL层用以消除不同硬件平台的差异。
因此,如果用户希望从APP中访问一些工控接口比如串口、IIC或CAN总线,那么将不得不自行编写HAL层和JNI与APP交互。
Android出于多种考虑,重写了C库和系统初始化启动过程,其配置非常繁琐。
用户将不得不依赖芯片厂商和服务公司提供这些配置和中间层驱动。
而大多数物联网硬件平台,不具备手机/平板这些平台的功能,比如没有LCD屏幕,使得Android无用武之地。
更多的硬件处理器连Linux都无法运行,惶论Android?
Android团队也非常了解这一事实,于2015年推出Android/Brillo。作为一款被阉割的微型Android,Java虚拟机也被裁剪。在Android上运行的APP不得不重写才能适应Brillo。这使得Brillo优势尽失,变成了一款食之无味,弃之可惜的鸡肋系统。