03.05 運行方舟編譯器編譯出來的APP,手機上必須預置方舟編譯器嗎?其他手機運行會變快嗎?

caiyi74362036


方舟編譯器的原理我就不說了,很多人有介紹:主要是把原來ART動態編譯通過方舟編譯器預先讓開發者在電腦上編譯成機器碼,減少手機端的開銷。缺點是會增大軟件儲存空間。華為宣稱,方舟編譯器可讓系統操作流暢度提升24%,系統響應速度提升44%,第三方應用重新編譯後流暢度可提升60%。

第一張圖是華為2019開發者大會上已經報備會支持方舟的軟件廠商。第二張是V20升級EMUI10 的更新明細,上面有寫到EMUI10方舟編譯器已經新增35款軟件主流應用。現在方舟已經開源,除華為手機外要想在手機上使用方舟編譯過的軟件肯定得在手機上裝上方舟編譯器兼容邏輯層,不然系統如何知道是用ART運行軟件還是直接內核CPU就可以執行的機器碼?

2019年8月31日,華為正式將方舟編譯器開源,針對前端、後端持續進行開源,預計2020年對Java編譯器工具鏈開源,支持Java程序編譯。2021年對JavaScript編譯器工具鏈開源,可用於JS程序的編譯。





煮酒論乾坤


    採用華為方舟編譯器編譯之後的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月,實現方舟編譯器的開源,促進方舟編譯器更好的發展。

總之,方舟編譯器剛剛推出不久,是否能夠得到大規模的推廣和普及,現在還很難說,畢竟應用開發商和手機廠商有自己的考慮。

如果覺得對你有幫助,可以多多點贊哦,也可以隨手點個關注哦,謝謝。



遊戲人超超


目前有很多人對方舟編譯器的理解上還存在誤區,認為編譯是運行了手機上的。主要是長久以來“方舟編譯器能大幅提升系統及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,歡迎大家關注我,和我一起共同成長進步!


小強Talk


感謝您的閱讀!

國產手機其他系統如果使用方舟編譯器,會不會有一種認輸的感覺呢?!

你肯定和我一樣,對於華為方舟編譯器的原理還是一知半解。甚至於,我們會有這樣的疑惑?到底方舟編譯器能不能運用在所有安卓手機上,比如MIUI系統,或者Flyme系統,是不是也能使用方舟編譯器呢?

餘承東直接在微博上,發佈了一分鐘瞭解方舟編譯器視頻,在裡面這樣解釋了方舟編譯器:

編譯器:將一種語言(高級語言)編譯成可執行的機器碼!


方舟編譯器:將在APK打包中,直接講java代碼編譯成機器碼,這樣手機安裝後,可以直接執行!

你是否已經發現:目前的安卓手機,在安裝運行APK後,它還需要經歷了將軟件經過解釋器進行解釋,並且透過JIT逐級編譯執行!而如今的方舟編譯器,卻可以直接在程序開發階段,直接靜態編譯,讓我們的APK直接打包後,就能執行了!所以,能夠讓華為的EMUI9.1更為流暢!

現在我們瞭解兩個問題:

  • 國產手機系統會經過方舟編譯器編譯嗎?雖然EMUI9.1對系統服務組件進行了編譯,系統流暢度和響應速度提升。但是,國產的手機系統,是不會使用華為方舟編譯器來進行系統編譯,如果使用了方舟進行系統編譯,這似乎間接的說明了自己的系統不如華為系統。
  • App編譯,APP是第三方通過方舟編譯器編譯,這需要等開源,我覺得軟件廠商可能會使用方舟編譯器編譯。即使國產手機其他系統不進行方舟編譯器編譯,但是隻要APP進行了編譯,就是我們打開應用軟件的速度會提升,這也是一個好事。

不過,Flyme或者MIUI這樣的國產系統是不會使用方舟編譯器的,這和它們發展相悖,畢竟它們可以自己研發這方面技術,使用華為,實際上有一種認輸的感覺。因此,它們應該,不,肯定不會使用!


分享到:


相關文章: