如果非要较真,Android的“底层”到底在哪?
“底层”其实是个很模糊的概念,所以即使知道Android采用了分层架构,我们也很难判断手机厂商所谓的“底层优化”具体所指。因为仅从字面理解,它可以是绝对的底层——Linux核心层,也可以是相对的底层——应用程序框架层、系统运行库层和Linux核心层。
如果对“底层优化”这四个字刨根问底,那会是个很有技术难度的问题。这不禁让人思考为何手机厂商会如此频繁地提及这个概念,身为技术小白的同事对此表示:“也许是因为‘底层优化’听上去真的很像从根本上解决问题吧。”
Android到底有什么问题?
如果从产品的维度来考量,到目前为止iPhone依然是综合表现最好的 智能手机 。但值得一提的是,在强大的Android阵营中,即使众厂商都曾站在同一条起跑线上(原生Android),现如今也有人已经走得很远。
当雷锋网记者试图追溯当初第三方OS在中国爆发的契机时,原点心OS的产品运营总监李俊表示:“Android最开始的版本太差了。”造成这种局面的原因有很多,最重要的两点莫过于Google退出中国市场,以及Android的设计初衷。
一方面,Android与iOS很大的一个区别是:在Android的生态中,手机厂商基本上都是“第三方”。所以在适配硬件的过程中,不同厂商之间的表现也千差万别,相机就是其中的典型。同一颗摄像头,同一个解决方案,不同成像质量的例子不胜枚举。
另一方面,Android诞生时并不是软硬件结合的产物,所以相比苹果对iOS的控制力,Google对Android的开发者基本上采取了“放任自流”的态度。自动运行、自动联网、常驻后台、广告推送、通知栏推送、弹窗推送等非常敏感的权限,Android几乎全都提供给了开发者。
而开发者无论是公司还是个人,他们基本上都是靠利益驱动的。所以当他们发现在举手投足之间,就能为自己带来巨大的商业回报时,权限滥用就成为了一种常态。基于以上两点,作为一个对用户体验还有追求的Android手机厂商,“底层优化”就变得必不可少。
底层是哪一层?
Android的基本架构就是四层——应用程序层、应用程序框架层、系统运行库层和Linux核心层。当雷锋网记者采访不同的业内人士,询问“底层优化”的范围时,他们几乎给出了完全不同的答案。
FView CEO彭林:“应用程序层和应用程序框架层。系统运行库层(手机厂商)动不了,Linux核心层更动不了。”
乐蛙CEO 赵力:“应该是指应用程序框架层,有能力动下面两层的厂商不多。”
锤子软件开发工程师:“中间两层都有(应用程序框架层、系统运行层)。”
LBE CEO 张勇:“下面三层对手机厂商而言都算是底层,主要优化在最下面两层。”
魅族软件工程师吴章金:“APP(应用程序层)之下,用户看不到的摸不着的都可以叫底层,更底层的则为 系统运行层以及之下。”
小米安全总监马骥:“优化是贯穿整体的,每一层都需要。”
答案的多样性让问题本身失去了意义,不过在追问的过程中可以洞见,Android手机很多被诟病的问题都是可以通过技术手段来解决的,而Android话语权的分散只是为这一过程平添了难度。
有些地方是不能动的
lbe 张勇告诉雷锋网记者,“有能力在下面两层’动手脚’的厂商不多,小米魅族之类的整天在搞下两层,杂牌机基本上动不了,主要还是靠集成一些第三方的方案。”
不过锤子手机的软件研发工程师表示:“Google对使用Android基本没有限制,但是Linux核心层改完必须开源。另外,Linux一般是芯片厂商干的活,手机厂商的核心竞争力不在那。”
到目前为止,实际上“大刀阔斧”地修改系统运行层和Linux核心层的UI厂商并不多,如果一定要举个特别极端的例子的话, 阿里云os 应该是动作最大的一个,因为它把Android活生生改成了不是Android。众所周知,Java虚拟机的运用是Android的精髓,如果有人动了这里,看似“没有什么不允许”的Google可是很敏感的。
根据阿里云OS前开发人员的解析,“阿里云OS只是重写了dalvik(虚拟机),加上/换掉几个apk(比如launcher)以及服务而已,其他所有架构及模块(audio、display、video、power、usb、input、recovery、windowManager、ActivityManager等)都还是Android,而且一模一样。如果没有重写dalvik,云OS对Android的改动并没有比flyme和MIUI类似这些的多。”
这样的改动引发了Andy Rubin对阿里云OS的公开谴责,其中最有力的一点就是,“阿里云OS对Android的应用并不能完美兼容,这将有可能导致Android阵营的分裂。”总而言之就是一句,UI厂商再疯狂,如果想从Android 生态系统 中获利,必须遵循“所有应用生来平等”这一原则。
Android的最底层
根据赵力的描述,“一些关键元器件的驱动程序会动到Linux Kernel层,如相机、display、audio、keypad等。”在手机厂商在选择某个元器件时,芯片厂商会提供Reference Design,然后手机厂商会在此基础上做二次开发,这就是所谓的“调校”。
虽然听上去十分高深,但很多元器件的迭代周期相对较长,驱动方案也已非常成熟,所以“调校”的成本并不高。其中最能体现厂商优化能力的无非就是摄像头。说到这里,也许有人会提及最近“炙手可热”的高通骁龙810,可需要指出的是,手机厂商对CPU的要求是趋同的——高性能、低功耗、散热好,这和归属于“审美范畴”的摄像头不可同日而语。
即使是对厂商能力边界表示悲观的彭林也认为:“有一个特殊地方就是照片风格,Google允许厂商根据自己用的ISP、加进自己的白平衡算法,有厂商会去买个好的算法。所以这应该也算好优化的一个例子吧。”
当然,除了对驱动程序的编译以外,Android的最底层还提供了各种资源管理与软件机制保障。吴章金表示:“如果这部分出问题,通常可能会造成死机或者重启,这个恢复时间长,甚至要用户手动恢复,体验性非常糟糕。所以,事关稳定性、性能、功耗、温控甚至安全的最核心的改善都是优先从离硬件最接近的 BSP 做起,而 BSP 的优化又会发现硬件设计、结构设计或者是 APP 的缺陷。”
可以看出无论是Google、元器件供应商、还是手机厂商,在针对这些问题的优化上,很多时候都是技术水平和物理世界的抗衡,财力、人力、物力是唯一的解决方案。但对Android有所了解的人都知道,这个生态乱象的根本原因并没有那么纯粹,因为写到这里,我们还没谈到游戏的另一个重要参与者——应用开发者。