華為方舟編譯器是華為在今年4月發(fā)不會(huì)上公布的一個(gè)全新的應(yīng)用編譯器,這款編譯器可以大幅度提升安卓設(shè)備的速度,據(jù)說(shuō)可以將第三方應(yīng)用流暢度提升60%,足以媲美ios系統(tǒng)了。應(yīng)用開(kāi)發(fā)者們可以通過(guò)這款華為方舟編譯器對(duì)自己的應(yīng)用進(jìn)行編譯,如果這個(gè)編譯器在安卓市場(chǎng)普及開(kāi)的話,安卓流暢度超越ios系統(tǒng)不再是夢(mèng)。
方舟編譯器優(yōu)勢(shì):
多語(yǔ)言聯(lián)合
將同一應(yīng)用中的不同語(yǔ)言代碼聯(lián)合編譯、聯(lián)合優(yōu)化,消除語(yǔ)言間的性能“鴻溝”,降低開(kāi)發(fā)者的優(yōu)化成本
輕量運(yùn)行時(shí)
通過(guò)編譯器的語(yǔ)言實(shí)現(xiàn)能力和優(yōu)化能力增強(qiáng),應(yīng)用運(yùn)行時(shí)的開(kāi)銷(xiāo)更小
軟硬件協(xié)同
編譯器與芯片實(shí)現(xiàn)軟硬件協(xié)同優(yōu)化,充分發(fā)揮硬件能效,應(yīng)用體驗(yàn)更佳
多平臺(tái)支持
支持面向多樣化的終端設(shè)備平臺(tái)進(jìn)行編譯和運(yùn)行,根據(jù)設(shè)備特征提供便捷的開(kāi)發(fā)與部署策略,提高開(kāi)發(fā)效率
環(huán)境配置說(shuō)明:
硬件推薦配置
2 GHz 雙核處理器或者更高等級(jí)CPU
2 GB 系統(tǒng)內(nèi)存及以上
200GB 可用磁盤(pán)空間
開(kāi)發(fā)環(huán)境推薦
您需要安裝一個(gè)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
LLVM下載地址: http://releases.llvm.org/download.html#8.0.0
放置到openarkcompiler/tools目錄,打開(kāi)openarkcompiler/build/config/BUILDCONFIG.gn文件,將GN_C_COMPILER、GN_CXX_COMPILER和GN_AR三個(gè)變量配置為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 = "${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) Ninja下載地址: https://github.com/ninja-build/ninja/releases
GN下載地址:https://archive.softwareheritage.org/browse/content/sha1_git:2dc0d5b26caef44f467de8120b26f8aad8b878be/raw/?filename=gn
將GN和Ninja可執(zhí)行程序放置到openarkcompiler/tools目錄,打開(kāi)openarkcompiler/Makefile文件,將GN和NINJA兩個(gè)變量配置為GN和Ninja可執(zhí)行程序所在路徑。例如:
GN := ${MAPLE_ROOT}/tools/gn/gn NINJA := ${MAPLE_ROOT}/tools/ninja_1.9.0/ninja
常見(jiàn)問(wèn)題:
Q1:方舟編譯器開(kāi)源有官方網(wǎng)站嗎?
A1:孵化期間,官方網(wǎng)站為:https://www.openarkcompiler.cn;正式畢業(yè)后的官網(wǎng)待定。
Q2:方舟編譯器是一次性全部代碼嗎?
A2:
首次開(kāi)源范圍是編譯器 IR( Intermediate Representation)、RC(Reference Counting)和多語(yǔ)言設(shè)計(jì)思想等,用于與業(yè)界、學(xué)術(shù)界溝通交流。后續(xù)將陸續(xù)開(kāi)源編譯器前端、后端,支持其它語(yǔ)言(如 JavaScript)的編譯等,當(dāng)前部分Java語(yǔ)言特性和JVM虛擬機(jī)特性的支持未包括在本次開(kāi)源代碼中,包括:annotation、lambda表達(dá)式、泛型等。目前仍有很多地方不完善,會(huì)在社區(qū)陸續(xù)迭代,遇到問(wèn)題請(qǐng)?jiān)谏鐓^(qū)提交 issue,歡迎在社區(qū)繼續(xù)討論設(shè)計(jì)和代碼共建。。
Q3:通過(guò)哪些渠道可以獲取方舟編譯器的框架源碼?
A3:孵化期間,開(kāi)發(fā)者可以通過(guò)如下代碼托管網(wǎng)址獲得相關(guān)代碼和文檔,供參考學(xué)習(xí)、了解方舟編譯器的架構(gòu)和代碼。
華為云托管地址:https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler。
開(kāi)源中國(guó)碼云托管地址:https://gitee.com/harmonyos/OpenArkCompiler
Q4:方舟編譯器開(kāi)源路標(biāo)是怎樣的?
A4:方舟編譯器從 2019 年 8 月開(kāi)始開(kāi)源,歡迎廣大的應(yīng)用開(kāi)發(fā)者、手機(jī)廠商、軟件從業(yè)人員一起共建開(kāi)源社區(qū)和生態(tài)。 開(kāi)源計(jì)劃大體上這樣安排:2019 年 8 月重點(diǎn)開(kāi)源框架部分;后續(xù)將陸續(xù)開(kāi)源編譯器前端、后端;支持 Java 程序編譯、JavaScript 語(yǔ)言應(yīng)用的編譯等。
Q5:還有哪些方式可以獲取方舟編譯器的相關(guān)信息?
A5:方舟編譯器有官方微信公眾號(hào):開(kāi)源方舟編譯器
大家可以關(guān)注,及時(shí)獲得相關(guān)信息。
Q6:方舟編譯開(kāi)源面向全球開(kāi)發(fā)者嗎?英文網(wǎng)站何時(shí)上線?
A6:方舟編譯器是向全球開(kāi)發(fā)者進(jìn)行開(kāi)源,因此,官方網(wǎng)站和代碼托管平臺(tái)均面向全球開(kāi)發(fā)者開(kāi)放。目前英文版網(wǎng)站正在緊張的開(kāi)發(fā)及內(nèi)測(cè),計(jì)劃將于 2019 年 Q4 上線。
Q7:方舟編譯器源碼托管計(jì)劃是怎么的?
A7:孵化委員會(huì)期間,方舟編譯器代碼是托管在華為云上面。在未來(lái)走向開(kāi)放治理以后,將由所掛靠機(jī)構(gòu)選擇的平臺(tái)進(jìn)行托管。如果掛靠的機(jī)構(gòu)采取了 X 平臺(tái),我們就采用這個(gè)機(jī)構(gòu)的代碼托管模式進(jìn)行托管。
當(dāng)前代碼托管的地址:https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler
所有相關(guān)信息請(qǐng)以方舟編譯器開(kāi)源官方網(wǎng)站發(fā)布為準(zhǔn)。