華為方舟編譯器是一款是華為推出的首個完全自主研發的編譯器,包含編譯器、工具鏈、運行時等關鍵部件,支持多語言的編譯工具,實現Java程序到aarch64匯編指令的編譯過程,華為方舟編譯器的開發者可基于開源代碼+二進制,編譯構建出編譯器工具鏈,能夠有效解決安卓程序“邊解釋邊執行”的低效率問題。有需要使用這款華為方舟編譯器的用戶快通過下面地址來獲取吧!

華為方舟編譯器使用方法
開發環境推薦
您需要安裝一個64位版本的Ubuntu(推薦Ubuntu 16.04)
sudo apt-get -y install openjdk-8-jdk git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip lib32z1-dev qemu g++-multilib gcc-multilib python3-paramiko python-paramiko python-jenkins python-requests python-xlwt libglib2.0-dev libpixman-1-dev linux-libc-dev:i386
sudo apt-get -y install gcc-5-aarch64-linux-gnu g++-5-aarch64-linux-gnu
安裝Clang編譯器并完成配置(用于編譯方舟編譯器代碼)
下載clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04
放置到openarkcompiler/tools目錄,打開openarkcompiler/build/config/BUILDCONFIG.gn文件,將GN_C_COMPILER、GN_CXX_COMPILER和GN_AR_COMPILER三個變量配置為Clang編譯器所在路徑,例如:
GN_C_COMPILER = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang"
GN_CXX_COMPILER = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang++"
GN_AR_COMPILER = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/llvm-ar"
其中${MAPLE_ROOT}為openarkcompiler源碼根目錄。
安裝Ninja、GN并完成配置
下載Ninja(v1.9.0)及GN(Linux Version)
將GN和Ninja可執行程序放置到openarkcompiler/tools目錄,打開openarkcompiler/Makefile文件,將GN和NINJA兩個變量配置為GN和Ninja可執行程序所在路徑。例如:
GN := ${MAPLE_ROOT}/tools/gn/gn
NINJA := ${MAPLE_ROOT}/tools/ninja_1.9.0/ninja
華為方舟編譯器特色
多語言聯合
將同一應用中的不同語言代碼聯合編譯、聯合優化,消除語言間的性能“鴻溝”,降低開發者的優化成本
輕量運行時
通過編譯器的語言實現能力和優化能力增強,應用運行時的開銷更小
軟硬件協同
編譯器與芯片實現軟硬件協同優化,充分發揮硬件能效,應用體驗更佳
多平臺支持
支持面向多樣化的終端設備平臺進行編譯和運行,根據設備特征提供便捷的開發與部署策略,提高開發效率


華為方舟編譯器功能
一、設計階段裝包的APK就立即是可實行,而且跨語言表達服務平臺
在方舟編譯器里邊,早已編譯好的APK,會根據靜態數據編譯的方法先轉化成序列號再安裝,這實際上是AOT,不用不便的vm虛擬機,提高運行速率和高效率。而且做為開發人員,還能夠依據不一樣的程序特性,挑選差異的編譯改進方案,并不像安卓系統官方網的方法應用統一的vm虛擬機計劃方案。
二、方舟編譯器邊運行變清除,運行內存清新
如今安卓手機的一大特點便是運行內存越來越大,6GB全是老年手機的配備了。這除開程序大之外也有安卓系統的程序運行造成廢棄物多有關系。那麼清理垃圾呢?則必須中止程序,也便會頓一下,即說白了的“卡”。華為公司方舟編譯器則是運用程序多線程運行的特性。舉個例子,您如今已經用的“中關村線上”這一APP用了AB2個線程,在華為公司的P30手機上中,那麼線程A運行的情況下,B在清理垃圾,隨后A線程清理垃圾的過程中B線程在運行,程序運行不終斷,生活垃圾處理不斷,保證了又連貫性、又節省服務器資源。
三、方舟編譯器,運用級編譯提升
代碼設計是編譯器更為關鍵的作用,也是評定一個編譯器好壞最重要的規范。
當今因為安卓軟件應用了vm虛擬機體制,無法朝向不一樣運用對vm虛擬機開展目的性的靈便提升。
安卓ART的AoT和JIT動態編譯由于是運行在手機上,受資源限制,因此只有應用簡易的蟻群算法。
而方舟編譯器因為是在運用設計階段開展編譯,因此可以可以不一樣運用靈便選用不一樣的編譯改進方案,并且由于在開發工具編譯不容易遭受手機性能的限定,可以應用大量優秀的蟻群算法,進而促使每一個運用的特性達到最好。
方舟編譯器還能夠理解程序特征、使用適合的指令來執行程序,因此能夠極大程度地發揮出芯片的能力。
方舟編譯器聚焦在 Java 代碼性能上,未來,方舟編譯器將覆蓋多種編程語言(包括 C/C++、JS 等),多種芯片架構(包括CPU、GPU、IPU等),覆蓋更廣的業務場景。
方舟編譯器改變了系統及應用的編譯和運行機制,直接將高級語言編譯成機器碼,讓手機能直接聽懂“高級語言”,消除了虛擬機動態編譯的額外開銷,提升了手機運行效率。