03.06 运行方舟编译器编译出来的APP,手机上必须预置方舟编译器吗?其他手机运行会变快吗?

caiyi74362036


目前方舟只适配麒麟芯片,经方舟编译的APP目前只支持华为手机,而且只支持经底层优化跳过安卓虚拟机的EMUI。但方舟是开源的,所有的手机厂家都可以基于方舟适配自己的手机芯片。

但这有个问题,安卓的兼容性变差了,碎片化更加严重,因为即使都是高通芯片,小米OV适配的编译器也许都不一样,那么以后就会出现小米OV不同版本的微信,严重割裂安卓市场。解决方法只有统一方舟编译器,适配所有手机芯片。之所以谷歌不干掉虚拟机,也是因为直接编译对作为一个整体的安卓一点好处没有,只是对华为三星这些大厂商有好处。


心帆远影


    采用华为方舟编译器编译之后的APP,据说运行流畅度可以媲美IOS,改善了安卓系统内存回收机制,彻底告别了“卡顿”。

    用户手机不需要安装方舟编译器,只需要软件编写者将APP源代码通过方舟编译器编译形成APK文件就行。那这个方舟编译器到底是什么黑科技呢,下文具体说一说。


    方舟编译器

    先说一说什么是编译器,学过编程的人都知道,APP是通过高级语言比如JAVA编写的,需要转换成机器能够认识的语言,而编译器就担任了这个角色,将高级编程语言写的源代码翻译成机器认识的二进制代码。


    安卓手机采用了JAVA虚拟机的形式,所有的APP需要在虚拟机上边解释,边运行,所以系统资源占用比较大,因此对于安卓手机来说,运行内存越大越好,目前8G的运行内存已经成为主流。

    华为的方舟编译器,程序员完成APP源代码编写之后,经过方舟编译器编译,直接编译为在安卓系统可以运行的代码,实现静态编译,不需要JAVA虚拟机,同时改进了内存回收机制,随时回收内存,恶如不是将垃圾堆在一起回收。采用华为的方舟编译器,有可能告别安卓手机大内存的时代。


    方舟编译器的优势

    相比目前普遍在JAVA虚拟机上运行APP,经过华为方舟编译器编译的应用有以下优势:

    1、应用程序直接实现静态编译,不需要运行在JAVA虚拟机上。

    2、优化了内存回收机制,随时回收内存,而不是像JAVA虚拟机一样累积之后回收。

    3、方舟编译器将开源,根据华为官方公布的日程,将于2019年11月,实现方舟编译器的开源,促进方舟编译器更好的发展。


    总之,方舟编译器刚刚推出不久,是否能够得到大规模的推广和普及,现在还很难说,毕竟应用开发商和手机厂商有自己的考虑。

如果觉得对你有帮助,可以多多点赞哦,也可以随手点个关注哦,谢谢。

Geek视界


不叫编译器,应该叫骗译器。

现在根本没有编译过的app,你看华为骗译器官方有放出编译过的APP吗?

没有!

如果有,大家一对比编译过的华为版和没编译过的官方版就知道是否真有功效,但华为从来没放出成功编译后的APP,连华为自己的APP都没有编译前和编译后的对比APP。

现在网上流传的什么支付宝编译过流畅了,人家支付宝都说了没用过,是自己优化的功能。


娱十说


采用华为方舟编译器编译之后的APP,据说运行流畅度可以媲美IOS,改善了安卓系统内存回收机制,彻底告别了“卡顿”。

用户手机不需要安装方舟编译器,只需要软件编写者将APP源代码通过方舟编译器编译形成APK文件就行。那这个方舟编译器到底是什么黑科技呢,下文具体说一说。

方舟编译器

先说一说什么是编译器,学过编程的人都知道,APP是通过高级语言比如JAVA编写的,需要转换成机器能够认识的语言,而编译器就担任了这个角色,将高级编程语言写的源代码翻译成机器认识的二进制代码。

安卓手机采用了JAVA虚拟机的形式,所有的APP需要在虚拟机上边解释,边运行,所以系统资源占用比较大,因此对于安卓手机来说,运行内存越大越好,目前8G的运行内存已经成为主流。

华为的方舟编译器,程序员完成APP源代码编写之后,经过方舟编译器编译,直接编译为在安卓系统可以运行的代码,实现静态编译,不需要JAVA虚拟机,同时改进了内存回收机制,随时回收内存,恶如不是将垃圾堆在一起回收。采用华为的方舟编译器,有可能告别安卓手机大内存的时代。

方舟编译器的优势

相比目前普遍在JAVA虚拟机上运行APP,经过华为方舟编译器编译的应用有以下优势:

1、应用程序直接实现静态编译,不需要运行在JAVA虚拟机上。

2、优化了内存回收机制,随时回收内存,而不是像JAVA虚拟机一样累积之后回收。

3、方舟编译器将开源,根据华为官方公布的日程,将于2019年11月,实现方舟编译器的开源,促进方舟编译器更好的发展。

总之,方舟编译器刚刚推出不久,是否能够得到大规模的推广和普及,现在还很难说,毕竟应用开发商和手机厂商有自己的考虑。

如果觉得对你有帮助,可以多多点赞哦,也可以随手点个关注哦,谢谢。



游戏人超超


方舟编译器的原理我就不说了,很多人有介绍:主要是把原来ART动态编译通过方舟编译器预先让开发者在电脑上编译成机器码,减少手机端的开销。缺点是会增大软件储存空间。华为宣称,方舟编译器可让系统操作流畅度提升24%,系统响应速度提升44%,第三方应用重新编译后流畅度可提升60%。

第一张图是华为2019开发者大会上已经报备会支持方舟的软件厂商。第二张是V20升级EMUI10 的更新明细,上面有写到EMUI10方舟编译器已经新增35款软件主流应用。现在方舟已经开源,除华为手机外要想在手机上使用方舟编译过的软件肯定得在手机上装上方舟编译器兼容逻辑层,不然系统如何知道是用ART运行软件还是直接内核CPU就可以执行的机器码?

2019年8月31日,华为正式将方舟编译器开源,针对前端、后端持续进行开源,预计2020年对Java编译器工具链开源,支持Java程序编译。2021年对JavaScript编译器工具链开源,可用于JS程序的编译。





煮酒论乾坤


目前有很多人对方舟编译器的理解上还存在误区,认为编译是运行了手机上的。主要是长久以来“方舟编译器能大幅提升系统及App运行速度”这样类似消息很容易让非技术领域的人们产生误解,从字面意思看起来好像方舟编译器是用在手机上的,因此,很多人都期待华为什么时候发布带有方舟编译器的手机。

方舟编译器不是给手机用的!!

用户不能在手机上使用方舟编译器,该编译器是软件开发者用来编译软件用的,可供开发者在将高级语言编译为机器码,而手机能不能运行此类App,需要看硬件是否支持,而不是看是否预置了编译器。


为什么通过方舟编译器编译的App运行速度会得到很大提升?

编译器的作用就是把高级语言编译成能直接机器或虚拟机执行的目标代码。


首先来看看为什么Android很慢,Android的App都是基于Java开发的,而且编辑后机器 不能直接“看懂”,机器能执行的都是0,1这样的二进制机器码,所以需要一个“翻译员”来把Java语言翻译成机器能“看懂”的语言,而这个“翻译员”就是Java虚拟机,因为走了一条弯路,再加上Java虚拟机本身也要占用系统资源,所以Android的运行效率相比而言较低。


而通过方舟编译器编译后的App,指令是机器能直接“看懂”的,中间不需要虚拟机来“翻译”,所以运行速度有显著提升,理论上跟IOS相当。

简单的说,就是A只会中文,B只会英语,B要听懂A的话中间就需要一个翻译,这样传达消息的效率就很低,现在A报了个补习班把英语学会了,就可以直接用英语和B对话了,这样中间就省了一个环节,效率也就明显提升了。


所以,不要错误地把方舟编译器理解成手机系统层面的工具。


至于方舟编译器编译出来的App在其他手机运行快不快的问题,答案是肯定的,但前提条件是手机硬件和系统支不支持运行此类App。


负1楼


华为开发并开源了方舟编译器,使用这个编译器出来的APP,可以显著提升APP在安卓系统里面的运行速度,让手机反应更快。不过用户的手机上并不需要预置方舟编译器。

华为在软件方面的技术提升越来越明显了,它对于安卓系统的速度提升起到了显著的作用,华为对于安卓的优化也是系统DNA级别的,它对于安卓的源码都有重新编译,并且被谷歌采用,提升了安卓的系统流畅度。而华为的方舟编译器,更是从应用的代码编译层面进行优化,让APP在安卓系统里运行更流畅,减少影响用户体验的卡顿感。

目前来说,华为EMUI10已经使用了这个方舟编译器,但是它并不是要求用户手机上一定要使用这个编译器,它只是让开发者使用它来开发安卓应用的APK文件的。使用方舟编译器出来的APP,可以提升手机运行流畅度。减少应用打开的卡顿感。


黑米桃


不知道大家是否还记得华为P30系列的发布会,在发布华为P30的时候,华为还为我们带来了一个“小彩蛋”,那就是正式向大家展示了“方舟”的编译器,也许很多热对方舟编译器还不太清楚,现在就简单的介绍一下。

概念

众所周知,安卓的程序大多都是Java语言编写的,小部分是C语言编写的,其中中间层则把Java直接翻译成了汇编语言,而在安卓5.0以前,安卓手机出现了卡慢顿的毛病,这主要是因为当时安卓使用的是中间层+JIT的模式。



不过到了安卓7.0以后,谷歌也开始意识到了更多的问题,所以就开始将中间层、JIT以及AOT共同的连接在一起,在这一模式之下,安卓的运行速度得到了进一步的提升和升级。那么华为方舟到底优化了什么呢?



如果说谷歌对安卓的优化是属于大杂烩类型的,那么华为的方舟编译器则直接进入到安卓的灵魂深处,从手机CPU可以理解的二进制代码入手,以此来提升效率,而作为开发者,还可以根据不同的程序特点,进行相应的优化。



此外,华为方舟编译器还利用了程序多线程运行的特点,将程序进行了一个全新的升级,做到了连贯的同时,还能够节约系统的资源,以此来带给用户更好的体验。所以毫不夸张的说。泛舟编译器之下,安卓程序的安装速度的确更快了,并且让手机更加的省电,节能。


互联网前沿消费


运行方舟编译器编译出来的APP,手机无须预置编译器

方舟编译器是提供给开发者使用的,普通用户无需关注。在数字世界里,CPU只认识"0"和“1”,CPU所执行的指令以及处理的数据都是由"0"和“1”组成。如果我们编程的时候也用"0"和“1”来进行,那么效率是极低的,可读性也极差,操作起来难度也相当高。最开始的时候我们用汇编语言来编程,每一条指令和数据都可以编译成不同的"0"和“1”组合。虽然汇编语言可以用于编程,但随着各种程序APP功能的不断复杂,汇编语言已经不能满足我们编程的需求了。所以“C”,“C++”,“JAVA”,“Python”,“GO”,"SWIFT"等等各种高级语言就应运而生了。高级语言大大提升了我们编程的效率,也有非常好的可读性。高级语言编写好的程序通过编译器编译成CPU能够识别的机器代码就可以了。

手机运行APP为什么不用预置编译器?

APP需要在操作系统内运行。运行IOS系统的苹果手机,需要安装适配ISO的APP;运行安卓系统的手机,需要安装适配安卓的APP ;运行鸿蒙系统的手机,当然就要安装适配鸿蒙系统的APP了。编译器把开发者开发出来的程序编译为可以安装在操作系统的的APP,所以编译好的APP就无须预置编译器了。

方舟编译器是什么?

方舟编译器是华为研发的一个编程平台,它可以支持多种语言,多种芯片平台。方舟编译器以开源的方式发布,众多开发者可以对方舟编译不断的优化。据华为发布的信息,方舟编译器编译出来的APP运行效率会更高。

华为发布的"麒麟系列"是用于移动智能设备的SoC芯片;华为发布的“鸿蒙系统"是一款面外未来的操作系统。芯片SoC平台有了,操作系统有了,当然不能缺少用于连接芯片与操作系统的方舟编译器了。

华为为什么要发布方舟编译器?

目前IOS和安卓基本上瓜分完移动设备操作系统份额。没有各种APP的支持,操作系统就没有吸引力了。不能安装微信,不能安装支付宝的智能手机,你会买吗?华为要推广鸿蒙系统,必须吸引开发者构建生态。方舟编译可以直接编译基于安卓开发的APP,编译出来的APP可以运行在安卓和鸿蒙系统,运行效率更高。通过这样一波操作,华为就可以更容易的吸引开发者,降低构建应用生态的难度!

欢迎关注@电子产品设计方案,一起享受分享与学习的乐趣!关注我,成为朋友,一起交流一起学习


电子产品设计方案


根据华为官方介绍,通过方舟编译器编译优化过之后,系统流畅度会提升24%,系统响应速度会提升44%,第三方应用(比如:微博)的操作流畅度会提升60%。换句话说,方舟编译器通过底层优化将安卓应用的各方面性能整体提升了一个档次。

对于普通用户而言,我们的安卓手机可以随时安装经过方舟编译器优化过的APP,同时不需要安装方舟编译器。

什么是方舟编译器?

关于方舟编译器,大家如果没有学习过编程,可能就不太了解了。那么什么是编译器呢?

运行在安卓手机上的APP都是使用Java语言编写的,但是像Java这种高级编程语言,机器是不认识的;所以,需要通过Android内置的Java虚拟机翻译成机器语言,这样机器就可以完美运行应用了。而编译器就是这样一个类似于“翻译官”的角色,负责将Java代码翻译成机器代码。

安卓Java虚拟机的编译过程是动态的,程序的运行往往是一边编译一边执行;所有这些过程对于系统资源的耗费非常大,所以我们可以看到安卓手机的运行内存这几年增长非常快。

而方舟编译器则改变了Java虚拟机的编译方式,将动态编译变为静态编译,可以做到全程只执行机器码直接运行程序,不经过Java虚拟机,这样就大大缩短了程序的响应时间,同时还减少了编译运行过程对于系统资源的耗费。


方舟编译器对于Android另一项巨大提升的方面就在于垃圾处理机制(GC)的不同。方舟编译器首次将Java/C/C++等混合代码一次编译成机器码直接在手机上运行,彻底告别Java的JNI额外开销,也彻底告别了虚拟机GC内存回收带来的应用进程掉线,使操作流畅度大幅提升。如果说目前最新的安卓系统是和谐号动车,那么经方舟编译的安卓系统便是高铁,是“复兴号”。

方舟编译器的优势

由于方舟编译器是从底层优化了Android,所以经过方舟编译器优化之后的系统和应用程序相比于Java虚拟机,在性能方面都会有巨大的提升,具体来说,有以下几个方面:


  • 大大简化了Java虚拟机编译执行代码的步骤, 彻底告别了额外的JNI开销

  • 方舟编译器改变了Java虚拟的垃圾回收机制,替换了Android system-server的所有后台服务,大幅度提升系统的性能

  • 方舟编译器还可以完美编译除Java之外的其他语言,适用性更加广泛


总的来说,方舟编译器对于Android最直接的优化就在于它能够完全脱离Java虚拟机,从而天生就没有Java虚拟机所具有的那些缺陷。


赠人点赞,手留余香。我是小强Talk,欢迎大家关注我,和我一起共同成长进步!


分享到:


相關文章: