
【軟件介紹】
華為方舟編譯器是華為公司為了提升Android系統(tǒng)的編譯效率推出的一項系統(tǒng)及應(yīng)用的編譯和運行機制。2019年4月,在華為P30系列國內(nèi)發(fā)布會上,華為首次宣布了該技術(shù)。方舟編譯器是基于GCC開發(fā)的交叉編譯器套件,它包括了C、C++、Fortran的前端,也包括了這些語言的庫(如libstdc++、libgcc等)。HCC運行在X86 linux架構(gòu)服務(wù)器上,生成的二進(jìn)制運行在Aarch64架構(gòu)服務(wù)器上。
【方舟編譯器軟件特點】
1、方舟編譯器通過將Java語言直接變成機器碼繞開虛擬機實現(xiàn)應(yīng)用的直接編譯;2、這樣用戶下載應(yīng)用完成后就自然得到了編譯過的應(yīng)用,操作非常簡單哦;
3、方舟編譯器提供了全新的系統(tǒng)及應(yīng)用的編譯和運行機制,從動態(tài)編譯變?yōu)殪o態(tài)編譯。

【方舟編譯器優(yōu)勢介紹】
1,安卓程序編譯效果更好;2,安卓程序安裝速度更快;
3,安卓程序運行速度更快;
4,系統(tǒng)垃圾隨用隨清,對手機硬件的依賴降低;
5,省電、省電、省電,重要的事情說三遍

【方舟編譯器功能介紹】
開發(fā)階段打包的APK就直接是可執(zhí)行,并且跨語言平臺在方舟編譯器里面,已經(jīng)編譯好的APK,會通過靜態(tài)編譯的方式先轉(zhuǎn)換成機器碼再安裝,這其實是AOT,無需麻煩的虛擬機,提升運行速度和效率。并且作為開發(fā)者,還可以根據(jù)不同的程序特點,選擇不同的編譯優(yōu)化方案,不像安卓官方的方式使用統(tǒng)一的虛擬機方案。

方舟編譯器邊運行變清理,內(nèi)存清爽
現(xiàn)在安卓手機的一大特色就是內(nèi)存越來越大,6GB都是老人機的配置了。這除了程序大以外還有安卓的程序運行產(chǎn)生垃圾多有關(guān)系。那么清理垃圾呢?則需要暫停程序,也就會頓一下,即所謂的“卡”。華為方舟編譯器則是利用程序多線程運行的特點。打個比方,您現(xiàn)在正在用的“中關(guān)村在線”這個APP用了AB兩個線程,在華為的P30手機中,那么線程A運行的時候,B在清理垃圾,然后A線程清理垃圾的時候B線程在運行,程序運行不中斷,垃圾處理不停,做到了又連貫、又節(jié)約系統(tǒng)資源。

谷歌和華為堪稱靈魂伴侶
昨天的新聞,谷歌官方要求美國政府停止把華為加入到實體清單。為什么,因為華為這樣有實力的企業(yè)才能更深入的合作。并且華為在安卓上使用方舟編譯器也得到了谷歌的允許,國內(nèi)銷售的P30系列手機就是方舟編譯器。或許某個版本之后,谷歌系統(tǒng)都是華為方舟編譯器了!

【方舟編譯器安裝步驟】
一、安裝前準(zhǔn)備
1) 環(huán)境要求
方舟編譯器支持如下64位操作系統(tǒng)。
SUSE12sp4及以上版本。
ubuntu16.04及以上版本。
其他glibc版本在2.22及以上的Linux發(fā)行版。
2) 獲取軟件包
安裝方舟編譯器需要獲取如下開源軟件包。(復(fù)制到搜索欄內(nèi)便可以下載)
GCC 7.3.0
編譯器源碼包
https://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
Binutils 2.31.1
匯編器、鏈接器等二進(jìn)制工具集源碼包
https://ftp.gnu.org/gnu/binutils/binutils-2.31.1.tar.gz
Glibc 2.29
GNU libc庫源碼包
https://git.linaro.org/toolchain/glibc.git/snapshot/glibc-2.29.tar.gz
Mpc 1.1.0
復(fù)數(shù)運算庫
https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz
GNU MPFR 4.0.2
多精度浮點計算庫
https://www.mpfr.org/mpfr-current/mpfr-4.0.2.tar.gz
isl 0.21
集和線性約束范圍內(nèi)整數(shù)點關(guān)系的操作庫
http://isl.gforge.inria.fr/isl-0.21.tar.gz
二、安裝HCC編譯器
1) 操作步驟
您可以使用HCC tar包將HCC安裝到當(dāng)前用戶權(quán)限下的任何位置,而不會影響其他編譯器的使用。
a)介紹操作入口,例如用XX帳號登錄XX環(huán)境。
b) 登陸HCC下載地址下載壓縮包
hcc_arm64le.tar.gz
c) 將tar包拷貝至您想要安裝的目錄。
命令腳本如下所示。
cp hcc_arm64le.tar.gz /path/to/your/dir
d) 解壓縮軟件包。
命令腳本如下所示。
tar zxvf hcc_arm64le.tar.gz
e) 設(shè)置環(huán)境變量。
設(shè)置環(huán)境變量命令腳本如下所示。
export PATH=/path/to/your/dir/hcc_arm64le/bin:$PATH
HCC編譯器提供的編譯工具在=/path/to/your/dir/hcc_arm64le/bin目錄下。
2) 安裝后檢查
HCC編譯器安裝完成后,可以執(zhí)行aarch64-linux-gnu-gcc -v命令查詢HCC版本。

【方舟編譯器使用方法】
當(dāng)前大部分安卓應(yīng)用都涉及不同開發(fā)語言,不同語言形成的代碼需要在運行態(tài)中進(jìn)行協(xié)同從而產(chǎn)生額外消耗。
而方舟編譯器是業(yè)界首個多語言聯(lián)合優(yōu)化的編譯器,開發(fā)者在開發(fā)環(huán)境中可以一次性將多語言統(tǒng)一編譯為一套機器碼,運行時無需產(chǎn)生跨語言帶來的額外消耗,并可以進(jìn)行跨語言的聯(lián)合優(yōu)化,提升運行效率。
而方舟編譯器在開發(fā)環(huán)境中就可以完成全部代碼的編譯,手機安裝應(yīng)用程序后無需依賴虛擬機資源,即可全速運行程序,帶來效率上的極大提升。
舉一個例子:EMUI 9.1僅僅對系統(tǒng)組件System Server應(yīng)用了華為方舟編譯器后,就帶來了系統(tǒng)操作流暢度提升24%,系統(tǒng)響應(yīng)性能提升44%的收益。
方舟編譯器,高效的回收機制
內(nèi)存管理是程序開發(fā)與運行時需要重點考慮的部分,也和系統(tǒng)流暢度息息相關(guān)。
安卓在內(nèi)存回收上采用集中回收機制,發(fā)聲全局回收時更需要暫停應(yīng)用,這也是隨機卡頓的根因之一。
而方舟編譯器提供了更高效的內(nèi)存回收機制,回收時無需暫停應(yīng)用,隨時用隨時回收,大大提高運行速度。
方舟編譯器,應(yīng)用級編譯優(yōu)化
代碼優(yōu)化是編譯器最為核心的功能,也是評判一個編譯器優(yōu)劣最重要的標(biāo)準(zhǔn)。
當(dāng)前由于安卓應(yīng)用使用了虛擬機機制,難以面向不同應(yīng)用對虛擬機進(jìn)行針對性的靈活優(yōu)化。
安卓ART的AoT和JIT動態(tài)編譯因為是運行在手機上,受資源所限,因而只能使用簡單的優(yōu)化算法。
而方舟編譯器由于是在應(yīng)用開發(fā)階段進(jìn)行編譯,所以可以允許不同應(yīng)用靈活采用不同的編譯優(yōu)化方案,而且因為在開發(fā)環(huán)境編譯不會受到手機性能的限制,可以使用更多先進(jìn)的優(yōu)化算法,從而使得每個應(yīng)用的性能達(dá)到最佳。

【常見問題】
編譯器是人類和機器建立溝通的橋梁。將人類語言(高級語言)翻譯成機器看的懂的語言。而編譯器的執(zhí)行效率直接影響手機各種APP的相應(yīng)速度。
就拿現(xiàn)在你能看懂這篇帖子中的文字,覺得很輕松,不就是個漢字嘛??墒菍τ谟嬎銠C來說,它實際上根本就不認(rèn)識漢字,它只知道1和0這兩個數(shù)值,我們用高電壓表示1,低電壓表示0。也就是說計算機世界里面的語言是二進(jìn)制的,不是1就是0。
如果想要計算機做到能夠正確表達(dá)你現(xiàn)在寫的文字,那么這時候,編譯器就出現(xiàn)了。編譯器的作用就是將人類語言(高級語言)轉(zhuǎn)換為計算機可以理解的機器語言。
Q2:方舟編譯器和普通編譯器有什么不同?
首先你要知道安卓程序是java寫的,java程序是將源碼代碼最終編譯成機器碼的過程。普通編譯器的這個過程是動態(tài)的,這也是為什么Android程序沒Iphone程序跑得快的根本原因。傳統(tǒng)的安卓系統(tǒng)編譯,很多程序往往需要一邊編譯,一邊執(zhí)行。方舟編譯器的不同之處是將動態(tài)編譯改進(jìn)靜態(tài)編譯,可以做到全程執(zhí)行機器碼高效運行程序,大大縮短了程序響應(yīng)時間。
舉個不太恰當(dāng)?shù)睦?,就像是?0集電視劇改編成了1部電影,觀影的時間短了,但是該有的劇情一個都不會少。
Q3:方舟編譯器真的很牛么?
首先要肯定的是這個東西真的很牛X,牛X到什么程度呢?使用之后,安卓的體驗幾乎是可以達(dá)到IOS的水準(zhǔn),媲美 IOS指日可待。
Q4:方舟編譯器是如何做到提高程序響應(yīng)速度的?
當(dāng)前TOP應(yīng)用95%都涉及了多種語言的開發(fā),比如C、C++、JAVA等,不同的語言代碼保持獨立,在運行環(huán)境進(jìn)行協(xié)同,會產(chǎn)生系統(tǒng)性能的部分損耗。方舟編譯器可以做到將不同語言的代碼放到一套編譯好的執(zhí)行文件,并高效運行。這種編譯好的文件可以做成安裝包,當(dāng)你在手機上下載安裝后,就不需要系統(tǒng)在出力氣去編譯了。
Q5:方舟編譯器發(fā)布了,為啥我的手機沒感覺比以前快呀?
有了方舟編譯器還遠(yuǎn)遠(yuǎn)不夠,還需要各大APP廠商去做適配,由于方舟編譯器還未開源,APP的適配工作還未正式開始,所以敬請期待吧!
Q6:現(xiàn)在有哪些應(yīng)用支持方舟編譯器?
小編很遺憾的告訴你,目前暫時只有微博極速版支持。
Q7:使用方舟編譯器性能到底會提高多少?
根據(jù)華為實驗室測出的數(shù)據(jù),EMUI 9.1中僅僅對系統(tǒng)組件System Server使用方舟編譯器進(jìn)行優(yōu)化,就可以帶來24%的系統(tǒng)流暢度提升,系統(tǒng)響應(yīng)性能提高44%,目前第三方有微博極速版進(jìn)行了適配,根據(jù)華為給出的統(tǒng)計數(shù)據(jù),操作流暢度可以提升60% 。在小賤看來,對于我們消費者而言,不用花一分錢,手機性能基本提升了一倍,簡直是又換了一個新手機的節(jié)奏!
Q8:方舟編譯器這么牛,難道就沒缺點?
有,根據(jù)編譯的原理,方舟編譯器在用戶安裝apk安裝包的時候,就已經(jīng)將編譯工作做完了,這勢必會導(dǎo)致應(yīng)用安裝包的體積增大,具體增大多少暫無法確定。不過正常情況下,APP安裝完成后,安裝包可以選擇刪除掉,所以最終占用手機空間也不會比原來大多少。而且現(xiàn)在手機內(nèi)存越來越大,還怕這點安裝包不成?
Q9:方舟編譯器的適配計劃公布了嗎?
華為宣布將在2019年8月會在華為終端開發(fā)者大會上開源,在2019年11月會在綠盟開發(fā)者大會將完整的方舟編譯器代碼開源。

































