安卓技术架构演进及未来

0
回复
141
查看
[复制链接]

186

主题

177

帖子

6495

安币

管理员

Rank: 9Rank: 9Rank: 9

发表于 2019-4-22 14:25:01 | 显示全部楼层 |阅读模式
如果对本篇文章感兴趣,请前往,原文地址:http://www.apkbus.com/blog-900274-79917.html

本文来自2019安卓巴士开发者大会现场实录,由于录入匆忙,内容可能存在些许偏差,欢迎大家扫描文末二维码查看现场实录视频和下载大会完整PPT。演讲者:袁辉辉





大家好,我是袁辉辉。今天跟大家分享的主题是关于安卓巴士技术架构的演进以及未来的情况,看过我博客的人知道,我其实源码比较多,今天不是给大家讲那么烧脑的源码,我今天带领大家宏观的角度看一下我们安卓巴士这些年是怎么发展的。
我们先来想三个问题,就是我们Android已经迭代了10年,到底往什么方向发展,还有一个是瓶颈在什么地方,未来趋势是什么,并且Android会不会很快被取代,从事Android还有前途吗?带着这几个问题的思考,我们可以接着往下看。
因为我的工作一直从事在Android底层,可是我没有直接做过应用的开发,我主要还是系统方面经验比大家理解的更深一点。所以我简单讲讲我们Android系统是怎么样的一个演变过程,还有我们应用技术它有哪些发展。





第一个我们回到时间轴,08年我们说是我们的Android1.0,那个时候手机还是有实体键盘的,时间到03年的时候,Android研发了5年才出了1.0,这个时候我们IOS也初试了,这个时候还是赛班的时代,我们迭代了几年之后到了2012年,从Android1.0—Android4.0是一个不断丰富的过程,到了2012Android和IOS已经终结了赛班王朝,并且Android是统治态势。到了Android4.0时代我们发现我们的用户和开发者都非常多了,但是我们的手机非常不流畅,然后有了这个黄油计划,就是让我们的手机更加流畅。其实原理也非常简单,就是加了一个三层缓冲机制,让我们的同步刷新可以更加一致,因为我们的细节这是不是三四分钟就可以讲清楚的,所以我说一个架构核心的点带大家领略一下我们一路发展的历程。我们说到无障碍这些点,这个时候我们脑海要记住一个黄油计划这个事情,这个就是为了流畅。





到了13年我们的Android4.4出来了,那个时候我们的手机内存比较小,我们发现我们运行起来内存比较大,于是有了一个瘦身计划,让低端机让也可以跑我们的各种应用。与此同时有一个沉浸式体验大家也听得比较多,当然还有NFC传感器这些,时间轴再往后2014年Android5.0,谷歌发现我们手机耗电比较严重,其实谷歌功耗这方面一直以来都是落后各大手机厂商的,因为他们远离用户对这方面没有什么关注,但是华为小米和三星这些企业都是和用户直接沟通的,所以领先厂商一直做功耗方面的策略。
这个时候除了一个词叫做扁平化,几乎每一个Android大版本都会涉及到通知栏的调整,到了Android5.0的时候,ART出现了,手机的性能进一步提升,我们可以直接编译为本地代码的模式。时间轴再往后,到了2015年Android6.0出来的,那个时候我们一看所有的应用一上来所有的权限安装的时候就获取了,所以我们那个时候做了运行的时候权限的处理,现在你打开一些应用也一直弹出权限的事情。
所以我们说用户隐私很重要,因此我们新增了运行时的权限操作,其实Android6.0应该是我印象最深的系统,看过我博客的人都知道,我写了100多篇Android6.0,从底层各个技术到全方位他们是怎么实现的我都做了剖析。





16年有了我们Android7.0,这个时候我们想我们能不能把我们的后台优化管控起来,比如后台的一些广播,那个时候就有了我们的分屏功能,这个时候又说JIT和AOT的编程模式,那个时候对于我们的存储空间占用比较大。
到了2017年我们Android8.0来,这个时候有了一个Treble计划,我们发现Android碎片化比较严重,谷歌每次发布新的版本到了一些厂商跟进之后要一年以上,谷歌就想加快这个速度,所以搞了一个Treble这个计划,所以就做了分离,并且我们可以在不升级硬件的情况下升级系统,当然同样也是理想很圆满,现实很骨感,真正落地的效果并不好,那个时候也有了自动填充框架和画中画。
到了去年2018年Android9.0出现了,这个时候因为其实每一次大版本发布的时候提前一年或者两年都在预演,这个时候我们的AR人工智能很火,所以谷歌的团队想在手机上做一些智能,所以我们基于用户的习惯做了一个省电模式,基于这个模式我们做了一些自适应的功耗策略,还有我们自动背光也是做了相应的调整。我们说人工智能在手机上的落地直到现在也没有特别好,但是我相信未来还是会有机遇的。





我们看这二个还是增强通知栏,因为每一次通知栏优化的细节都非常多,所以我这里简单说一下。再到了现在19年来了是Android10.0,里面有一个计划叫做Mainline计划,我们和谷歌的工程师讨论了很多次,这个改动对于厂商和应用的影响都比较大,一些技术点我们和他们沟通结果是有一些结果是我们推到了Android11上,还有一些暗黑模式这些我们都做了一个处理。我们知道我们的手机从是的小屏幕机械键盘到我们刘海屏和水滴屏以及全面屏和可折叠屏,我们的屏幕一直是在变化的。好在大家一路走过来可能又忘了他们到底做了什么,我简单把每一个版本举一个突出的点。
我们可以看到这个过程当中,Android迭代的10年当中在用户体验和安全隐私都取得了很大的进步,遇到瓶颈的时候就进行专项的突破,这样在我们的Android4.1的时候我们发现我们要流畅度提升,后续的版本都是跟进这个事情,5.0的时候我们注重功耗的事情,后面也是不断的强化我们的功耗和续航。在Android10.0的时候我们把之前的一些计划也做了增强,所以我觉得我们的系统已经可以和IOS媲美了。这个是时间轴一路看到我们Android系统的演变过程,其实它不管怎么演变,我们发现这么多年的演变基础架构是没有大动的,主要主要还是核心的几个内容变了。





其实最开始的框架我们可以理解为一个骨架,之后我们增加血肉和肌肉,让它慢慢强壮,使它成为一个战士。我们看完了系统的演变,我想在座的做应用开发的人比较多,当然我也只是一个蜻蜓点水的方式带着大家看一下我们在应用层都有什么东西是大家比较关注的点。
第一个不得不说的就是跨平台,就是我们做应用的都希望跨平台,不然你写一个Android端,又写一个IOS的很费劲,大家都想跨平台,我们在2011年杜比收购了这个公司之后,这个时代我理解就是混合编程,但是它的核心是依赖于外部业务,它的性能明显有很大的瓶颈。再后面发展到2015年脸书推出了一个技术,直到现在也是一个非常火热的技术,16年阿里还跟进他们做了一个相关的技术。这个技术他们已经不再使用IN回归原生了,因为你的工程项目比较大的时候,也会有很多无法解决的问题,之后谷歌又推出了一个跨平台非常好的技术,这个也是现在一个比较热的焦点,我认为它现在还是一个发展期。我们下午的分会场会有这方面的专家细节讲一些实战的应用。





第二个我们听得比较多的热修复和插件化,今天我不讲这些细节,谷歌系统层面我印象比较深的Android7.0我们做了一些调研限制,就相当于给NDK的调动限制做了一个手铐,而且我觉得AndroidP对于Java层SDK的调动限制就是脚铐,我们发现我们很多的加固软件都受到了影响,就好比插件化好比是带着手铐和脚铐跳舞,限制非常的大,现在谷歌也在考虑怎么用更优雅的方式限制这个事情,如果继续做就变成了一个攻防战。
第三个我们经常谈得比较的是MVC和MVP还有MVVM。MVC是一个比较古老的东西了,它也不是诞生于我们Android,我们发现他们之间基于我们的UI操作其实都是混杂在一起,我们希望他们结藕,之后就有了MVP,再之后就有了MVVM,这里细节不展开,我们讲讲我们的几个层面的知识点。





谷歌去年做了一个Jetpack,就是把我们常用的一些库和一些工具打了一个包,给了一些官方认证,主要四块一个是架构,一个是基础,一个是行为,一个是UI。比如我们数据化的一些操作还有我们的生命周期以及我们的按需加载还有后台管理下载等等,它的这些都是把这一堆的三方包变成官方认证,我们说我们专注于产品和项目这些交互相关的。
往下这里是是我们数据的一下调度,最下面是数据是本地和远程可以交替获取,让这个架构更清晰。还有一个信号语言叫做Kotlin,我出去参加论坛很多人讲这个事情,我们关注一下。它是非常简洁比较安全的,它可以帮你高效的实现统计,你用Kotlin开发代码相比以前的方法可以节省12%的精力,但是这里你要考虑你的历史包袱和团队配置,基于一个现状来考虑,的公司说我看大家的工作量是基于代码的统计那就不能转。





再往下谷歌提出了一个APP  Bundle,随着我们的发展,安卓手机越来越多,我们的图片和各种资源也越来越大,我们把所有的东西打包在一起,其余对于APP是非常大的,虽然现在的存储越来越大,但是手机的空间还是不够用的。因为用户手机里面很多的图片都是高清的,一个微信就占了好几个G,这里不是说我们安装的时候就全部有了,而是用户需要的时候我们加载。
这里需要我们的支持和结合我们的谷歌一起做,很遗憾国内的一些厂商没有跟进这个事情,其实我们建议国内的应用商也把这个机制要做起来,我们在国内就也可以做这套技术了。
刚才其实带着大家了解了做应用层一些比较重要的点,最后的话题是Android的未来,我们的未来如何。当然我觉得前面说了性能、功耗上都可以做,但是碎片化始终是一个老大难的问题,我相信谷歌还是会解决碎片化的问题,对于影视和安全这一块他们会进一步加强,之前我去美国和谷歌开会的时候,我说Vulkan你们怎么看,他们说他们要推这个东西。做系统的人Android性能好,就把CPU布置上去,做功耗的就要关一下,很多的策略都是平衡的艺术,但是这个比较好可以两者兼得。





还有一个我认为人工智能虽然现在不完美,所以未来才有很大的可能性。华为现在他们也做了编译器的改动,在Android11了之后,可能厂商不需要直接修改虚拟机,谷歌可能会有一些动作。网络这一块也是,就像我们现在一个手机发现旁边一个设备,协议这里没有统一的方法和标准的话,各自为阵其实不是一个很好的效果,谷歌这一块也会有一些限制。
我们再讲解一下这个Treble,这里你可以理解为我们的APP,简单来讲就是硬件无关的一层,这个只是其中的一部分,我们理论的模型是厂商底层不用任何修改直接就可以把这个系统拿过来上,当然这里里面还有一些问题需要不断的改进。
当然如果做到了这样,我们发现升级肯定发展快,因为现在的情况下谷歌来一个版本我们要升级,厂家要适配,因为要和硬件各个功能都打交道,所以这里对于我们以后说不定谷歌发一个新的版本,厂商3—6个月就安卓跟上。





这里我们说到Mainline,这个是我画的新的架构图,这里以后都是谷歌下发,厂商不需要修改,厂商可以修改的是OEM的定制。做这个事情的初衷是什么?厂商为什么愿意让步,大家也有一个观点就是Android越来越走向封闭了,其实沟通的时候他们是为了考虑用户的隐私用户的安全以及一致性的体验。
举个例子,我们在多媒体这块其实经常会有一些恶意的安全补丁,这个时候我们修复的时候,比如小米3现在还有用户在使用,但是不会去更新了,这个时候更新的成本太高了。所以他就只会维护一个手机到一年三年,如果我们有了这套机子,我可以独立之后和系统强耦合,这里可以直接更新。
还有一些东西我们觉得很碎片化,比如一个指纹认证一样,每个界面都不一样你会想是不是APP也会弹?其实这只是一个小起点,和大家透露一下安卓我们的当时沟通我们改动的模块,所以强烈建议加入相关的功能在Android11的时候。我们说加只是核心的点,不是所有的。





这里我们再来看一下谷歌,它不光有Android手机,手表、TV,还有自动驾驶,以及物联网相关的系统,甚至16年还秘密研究Fuchsia,所以你会发现谷歌的布局是全方位的,它因为覆盖我们所有的电子产品随着5G时代的到来,我觉得智能汽车智能家居都会有一个广阔的空间,而且我觉得人工智能没有到一个变化的点,到的这个变化的时候,整个的行业和领域都有一个翻天覆地的变化。
智能汽车我觉得也是一个非常不错的方向,它有一些比较好的优势。我们说一下Fuchsia,因为它比较火,所以我也看了一下之后画了一个它的大概的架构图。我们看一下底层它用的是一个微内核,很多人说Fuchsia这个系统是不是要取代Android,其实就目前来说,Fuchsia他们现在是谷歌内部一个100多人的团队来做,大概就是一个实验室的感觉,我觉得这个才是刚刚开始,而且还只是在实验。网络说Fuchsia要替代Android的言论,我认为是不可能,五年之内起码不可能,我觉得它首先可以在物联网领域会现发力。当然这个是我的个人观点,不一定正确。





我们思考未来的系统到底如何,我认为一个技术革命性的创新不是联系性的创新,而是非联系性的创新,就像我们的手机小屏幕从3.5寸到刘海屏到全面屏,其实只是一个量变,到最后需要一个全新的交互支持改变,最重要的就是输出和输入,手机其实就是这样的一个东西,我们最开始的技术不够发达,所以19世纪60年代的时候一个大房子才有一个电脑,那个时候键盘是我们的输入,输出是它给我们的结果,后来演变为我们的个人电脑和手机,我们发现手机的屏幕越来越大,因为手机是我们的输出,那些黑边框和小屏都是因为科技做不到。
所以未来的变化是输入和输出,系统发展到一定的高度,我们塞班到键盘再到触摸,未来还有可能需要进一步颠覆,我认为能不能把我们的语音还有我们的无感把我们所有的感触都做进去,因为输出是可以非常流畅的。
现在当下可行的输入方面我们经常说安静一点,别打扰我做TIT,但是老罗至少给我们做了语音的尝试,但是场景没有无缝的切入。我说一个例子,汽车就是一个比较好的领域,因为汽车比较安静,因为你开车的时候你的双手是受到限制的,所以未来我觉得输入和输出方面这两块会不断的扩大,会不的诞生新技术。
我认为大家不太担心,我觉得至少未来五年Fuchsia内不太可能取代Android,颠覆Android的可能是因为我们的交互方式变了。说了这么变,你把这个种子已经埋下了,面对Android未来的不确定性我们肯定有一点迷茫,我们是不是要放弃Android转行,我收到很多人咨询我,这个问题我想说三个点。





第一个把事情做到机制,把事情做到超预期。比如你现在从事Android,就像打井一样,到处换地方看似你好像跟上了时代的超过,其实是什么都没有做好,因此你现在从事Android你就要做到极致。
说我个人的两个例子,我记得我刚刚毕业的时候加入了联想,因为那个时候应届生肯定没有委以重任,当时我做的那个工作就非常的枯燥无聊,拿上手机之后就测试,看一下数据值,之后我就研究了这个盒子,研究用一个程序控制盒子和手机做各个场景,最后输出结果。然后我实习期的时候,领导看到了我做的工具化,领导就觉得很意外,所以就是一个枯燥的东西你可以很极致,自然而然就有人相信你了。还有一个例子就是我之前在小米的时候,当时在公司就做了一个技术,ODM的工厂都觉得非常好。
第二个就是勤于思考与总结,提升内功修为,我把我的心得和体会都写到了我的博客上,我熬了无数个凌晨写我的文章及我记得我刚刚参加工作研究很多动作的时候,我在北京几乎没有去过任何景点,我的公司是965,但是我每天的学习时间可能每一周都是一直在进行,就像我们很多的创业者创业的时候真的是996吗,还不止,你要奋斗做好一个事情的时候一定会拼尽全力,这样才可以提升你的内功。
第三个我建议大家做终生学习者,我们做技术的停下脚步不学习就面临一个大龄程序员怎么办的问题,不要为了工作而工作,工作我建议大家要双赢,一个是要有产出,一个是要有提升,对得起公司,对得起自己,保持对技术的热度。你要时刻警惕出现了真正新的物种,你要关注这个领域。所以我做系统,但是我看大家经常做的一些框架以及谷歌做的一些东西是上来,不是我一头扎下去就做,一定要保持终生学习。


袁辉辉博客:
http://gityuan.com/





  • 现场PPT分享:
    关注【安卓巴士Android开发者门户】公众号,后台回复“420”获取讲师完整PPT。



  • 大会现场视频小程序

  继续阅读全文



想在安卓巴士找到更多优质博文,可移步博客区

如果对本篇文章感兴趣,请前往,
原文地址:
http://www.apkbus.com/blog-900274-79917.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )