华为方舟编译器将开源,安卓手机卡顿能被解决了吗?

__满脸阴霾


安卓手机卡顿的主要原因还是在于安卓系统上,华为方舟编译器能在一定程度上解决卡顿的问题,但也不可能彻底解决。

安卓系统是一套开源的手机系统,手机上的APP运行都是基于ART虚拟机的,APP在虚拟机上运行的过程是这样的,在运行前,编译器需要先对程序进行编译,对指令进行翻译,然后才能在手机上正常的运行。那么,在这一过程中,经历了编译、编译、运行这一系列动作,而翻译和编译都是需要时间的,这就降低了系统处理的效率,同时也会占用大量运行内存。反应给用户的感觉就是,安卓手机上的应用启动比较慢,手机使用时间长了就会有卡顿的现象。

所以,针对安卓手机这一特性,通过解决APP的运行方式和解决APP对的内存消耗,可以从一定程度上解决卡顿的问题,方舟编译器就是从这两方面着手的。

方舟编译器首先是针对于APP运行的过程,把应用程序的编译过程直接放在了开发端,这样一来,开发者在发不成想之前,可以直接将编程语言编译为机器指令,然后将程序打包发布,供用户安装使用。

当用户安装好程序打开时,就可以直接在手机上运行,从而省略了程序在手机上编译、解析的过程,节省出了系统和程序交互的时间,同时也减少了内存的消耗,提高了程序运行速度。

同时,由于安卓手机上的应用程序在关闭后,某些程序会存在后台继续运行一些相关的服务,从而造成内存继续占用的问题,所以方舟编译器对此也采用了随用随回收的内存回收机制,一旦程序关闭或暂停,就会将该应用所占用的内存回收,释放出更多可用内存,这样就能有效避免手机卡顿的问题。

这种做法是可以解决手机卡顿的问题,但谷歌作为安卓系统的开发者,对于通过改变应用程序编译的方式来解决卡顿它不会不知道吧,之所以谷歌不在安卓系统底层逻辑中做这样的处理,想必还有别的一些原因或问题需要解决,也许是安卓生态下的APP众多,做这样的处理代价太大?

总之,方舟编译器的这种处理方式在解决手机卡顿问题是会起到一定作用,对于华为手机应该是可行的。但要说将方舟编译器开源,供所有安卓手机使用这种方式,或许不太可能,这个还要看谷歌的态度。


码农聊科技


其实,安卓手机的卡顿问题有很多原因,安卓系统的原因占一部分,但还有安卓整体的软件运行环境的责任,也就是说如果这两者任何一点不能够完全解决,也就是说安卓的卡顿将会持续下去。



首先我们说安卓本身的开源就是卡顿问题的最大来源,由于安卓的开源,这让很多手机厂商包括软件,开发商可能不需要谷歌官方的监管就可以随意更改一些系统部分或者是说在软件层面有一些可能比较恶劣的行为。

这也是为什么目前定制系统如此之多的情况下,但能够流畅运行一段时间的系统还是寥寥无几,也就是说很多,手机厂商美其名曰是定制系统,其实,不过是多加了几个自己的软件或者说是多加了几个功能,反而让系统越来越臃肿,也就是说目前的定制系统速度很难,超得过原生的安卓系统。



由此引发的软件运行环境也是比较混乱,我们知道苹果的iOS系统由于有APP store的监管也就说,很多软件厂商在开发软件的时候,要严格遵守苹果的一些规定,否则一不留神就有可能会被苹果暴力下架,这一点也像是悬在很多软件开发商头上的达摩克利斯之剑,让软件开发商可能不敢太过于造次。

这项举措也是维持了iOS平台的规范性的软件运行环境,让很多用户都会慨叹iOS系统包括整体的操作体验是非常流畅的,这与苹果自身的努力和软件开发商的规范操作,有着密不可分的联系。



相反来看的话,这些都是安卓所不具备的特点,除此之外方舟编译器即便开源之后也只能对那些是配方周边一汽的APP,能够有效的优化,而大部分的软件还是没有办法,也就是说流氓应用还将继续流氓下去而安卓还将持续卡顿。

所以综合来看的话,如果想要安卓,不卡顿的话,首先其实谷歌要收回大权,让所有的定制系统包括软件开发商,都要严格按照谷歌自己的标准来生产产品。


互联网的放大镜


回答这个问题前,还得先从Android目前的方式说起:

Android应用程序通过下载APK安装,它是java语言编写后编译打包得到的程序安装包。现在android系统采用的方式是aot+jit方式运行应用程序。aot即ahead of time,指系统在安装apk的时候,会将apk中的java代码提前翻译成机器码。这样程序运行的时候不需要边解释(将java代码翻译成机器码)边执行,提升运行速率。但导致的问题是程序安装时巨慢。jit即jsut in time(即时编译,边解释边执行)。

现android结合了aot和jit方式,应用安装时通过aot只编译用户常用的部分代码。应用运行起来后,做两件事情:必要的时候在运行时直接将java代码翻译成机器码(jit),保存经常运行的代码信息等待设备空闲时再将这部分信息翻译成机器码。

虽然这种方式已经能很大的提升andorid程序的运行速度,但始终绕不过去的一个坎就是,应用在打包成apk的时候,采用的是java代码。而方舟编译器就是解决了这点:

方舟编译器可以将高级语言(Java)直接变成机器码,无需再通过 Android 操作系统中内置的 VM 编译器。按照华为方面的说法:方舟编译器编译的应用在开发阶段就已完成;也就是说,只要是经过编译器编译的应用,在应用市场上上架了以后,用户下载 APK 的就是编译过的了。

据说华为马上要开源了,不知道具体怎么弄的。但在开发阶段直接编译成机器码,如何处理android设备的不同cpu架构呢?每种架构都翻译一遍?如果真的那么容易的话,我相信google早就做了。


空同定翁


会好很多,APP就像车,安卓是公共高速路,各种车都上,之前都是人工收费,上高速得等一下,碰见全家桶一起加塞儿挤,那就容易堵车不动,现在华为的编译器算是给开了个ETC通道,比原来快了不少,但是苹果系统是自己修高速,上高速的APP提前审查过,没有闸口,直接上,还不限速,再加上强劲的发动机,那肯定是溜的飞起



拈花不笑112693312


只能解决部分卡顿,并且代价太高。第一个站出来的就会是谷歌,谷歌大哥不乐意,其它手机厂只能跟着大哥了。再着,编译这件事是比较底层的,你让所有的系统插件和APP都要从新回炉一次,代价也不小。

不过总的是好事,慢慢来吧。路总是要有人走的。


雪漠孤行0901


相对会好点,别期待太高,有去体验店玩了下P30Pro感觉和我的mate20pro相差不大


邻州大地


java本来就是跨平台运行,所以才解释执行。你把它直接build成机器码,速度肯定快些,但这违反了java初衷,损失了跨平台性。


david3322


不能完全解决,因为任何编译器都不可能改变app的业务逻辑。换句话说,编译器可以让app做事效率变得更高,但不能控制app具体做什么事。


TerryLi3030


目前来看是不可能的。编译器只是通过io调度来合理调整频率,解决安卓卡顿问题需要从根源上解决。不过现在的处理器性能都很高,卡顿基本不见了


原谅帽全国经销处处长


卡顿?你一直用的999的安卓机吗?


分享到:


相關文章: