華為方舟編譯器將開源,安卓手機卡頓能被解決了嗎?

__滿臉陰霾


回答這個問題前,還得先從Android目前的方式說起:

Android應用程序通過下載APK安裝,它是java語言編寫後編譯打包得到的程序安裝包。現在android系統採用的方式是aot+jit方式運行應用程序。aot即ahead of time,指系統在安裝apk的時候,會將apk中的java代碼提前翻譯成機器碼。這樣程序運行的時候不需要邊解釋(將java代碼翻譯成機器碼)邊執行,提升運行速率。但導致的問題是程序安裝時巨慢。jit即jsut in time(即時編譯,邊解釋邊執行)。

現android結合了aot和jit方式,應用安裝時通過aot只編譯用戶常用的部分代碼。應用運行起來後,做兩件事情:必要的時候在運行時直接將java代碼翻譯成機器碼(jit),保存經常運行的代碼信息等待設備空閒時再將這部分信息翻譯成機器碼。

雖然這種方式已經能很大的提升andorid程序的運行速度,但始終繞不過去的一個坎就是,應用在打包成apk的時候,採用的是java代碼。而方舟編譯器就是解決了這點:

方舟編譯器可以將高級語言(Java)直接變成機器碼,無需再通過 Android 操作系統中內置的 VM 編譯器。按照華為方面的說法:方舟編譯器編譯的應用在開發階段就已完成;也就是說,只要是經過編譯器編譯的應用,在應用市場上上架了以後,用戶下載 APK 的就是編譯過的了。

據說華為馬上要開源了,不知道具體怎麼弄的。但在開發階段直接編譯成機器碼,如何處理android設備的不同cpu架構呢?每種架構都翻譯一遍?如果真的那麼容易的話,我相信google早就做了。


空同定翁


其實,安卓手機的卡頓問題有很多原因,安卓系統的原因佔一部分,但還有安卓整體的軟件運行環境的責任,也就是說如果這兩者任何一點不能夠完全解決,也就是說安卓的卡頓將會持續下去。



首先我們說安卓本身的開源就是卡頓問題的最大來源,由於安卓的開源,這讓很多手機廠商包括軟件,開發商可能不需要谷歌官方的監管就可以隨意更改一些系統部分或者是說在軟件層面有一些可能比較惡劣的行為。

這也是為什麼目前定製系統如此之多的情況下,但能夠流暢運行一段時間的系統還是寥寥無幾,也就是說很多,手機廠商美其名曰是定製系統,其實,不過是多加了幾個自己的軟件或者說是多加了幾個功能,反而讓系統越來越臃腫,也就是說目前的定製系統速度很難,超得過原生的安卓系統。



由此引發的軟件運行環境也是比較混亂,我們知道蘋果的iOS系統由於有APP store的監管也就說,很多軟件廠商在開發軟件的時候,要嚴格遵守蘋果的一些規定,否則一不留神就有可能會被蘋果暴力下架,這一點也像是懸在很多軟件開發商頭上的達摩克利斯之劍,讓軟件開發商可能不敢太過於造次。

這項舉措也是維持了iOS平臺的規範性的軟件運行環境,讓很多用戶都會慨嘆iOS系統包括整體的操作體驗是非常流暢的,這與蘋果自身的努力和軟件開發商的規範操作,有著密不可分的聯繫。



相反來看的話,這些都是安卓所不具備的特點,除此之外方舟編譯器即便開源之後也只能對那些是配方周邊一汽的APP,能夠有效的優化,而大部分的軟件還是沒有辦法,也就是說流氓應用還將繼續流氓下去而安卓還將持續卡頓。

所以綜合來看的話,如果想要安卓,不卡頓的話,首先其實谷歌要收回大權,讓所有的定製系統包括軟件開發商,都要嚴格按照谷歌自己的標準來生產產品。


互聯網的放大鏡


安卓手機卡頓的主要原因還是在於安卓系統上,華為方舟編譯器能在一定程度上解決卡頓的問題,但也不可能徹底解決。

安卓系統是一套開源的手機系統,手機上的APP運行都是基於ART虛擬機的,APP在虛擬機上運行的過程是這樣的,在運行前,編譯器需要先對程序進行編譯,對指令進行翻譯,然後才能在手機上正常的運行。那麼,在這一過程中,經歷了編譯、編譯、運行這一系列動作,而翻譯和編譯都是需要時間的,這就降低了系統處理的效率,同時也會佔用大量運行內存。反應給用戶的感覺就是,安卓手機上的應用啟動比較慢,手機使用時間長了就會有卡頓的現象。

所以,針對安卓手機這一特性,通過解決APP的運行方式和解決APP對的內存消耗,可以從一定程度上解決卡頓的問題,方舟編譯器就是從這兩方面著手的。

方舟編譯器首先是針對於APP運行的過程,把應用程序的編譯過程直接放在了開發端,這樣一來,開發者在發不成想之前,可以直接將編程語言編譯為機器指令,然後將程序打包發佈,供用戶安裝使用。

當用戶安裝好程序打開時,就可以直接在手機上運行,從而省略了程序在手機上編譯、解析的過程,節省出了系統和程序交互的時間,同時也減少了內存的消耗,提高了程序運行速度。

同時,由於安卓手機上的應用程序在關閉後,某些程序會存在後臺繼續運行一些相關的服務,從而造成內存繼續佔用的問題,所以方舟編譯器對此也採用了隨用隨回收的內存回收機制,一旦程序關閉或暫停,就會將該應用所佔用的內存回收,釋放出更多可用內存,這樣就能有效避免手機卡頓的問題。

這種做法是可以解決手機卡頓的問題,但谷歌作為安卓系統的開發者,對於通過改變應用程序編譯的方式來解決卡頓它不會不知道吧,之所以谷歌不在安卓系統底層邏輯中做這樣的處理,想必還有別的一些原因或問題需要解決,也許是安卓生態下的APP眾多,做這樣的處理代價太大?

總之,方舟編譯器的這種處理方式在解決手機卡頓問題是會起到一定作用,對於華為手機應該是可行的。但要說將方舟編譯器開源,供所有安卓手機使用這種方式,或許不太可能,這個還要看谷歌的態度。


碼農聊科技


相對會好點,別期待太高,有去體驗店玩了下P30Pro感覺和我的mate20pro相差不大


鄰州大地


只能解決部分卡頓,並且代價太高。第一個站出來的就會是谷歌,谷歌大哥不樂意,其它手機廠只能跟著大哥了。再著,編譯這件事是比較底層的,你讓所有的系統插件和APP都要從新回爐一次,代價也不小。

不過總的是好事,慢慢來吧。路總是要有人走的。


雪漠孤行0901


java本來就是跨平臺運行,所以才解釋執行。你把它直接build成機器碼,速度肯定快些,但這違反了java初衷,損失了跨平臺性。


david3322


現在還不能給個答案,要時間來驗證。只是現階段看著還不錯


我家電網


不能完全解決,因為任何編譯器都不可能改變app的業務邏輯。換句話說,編譯器可以讓app做事效率變得更高,但不能控制app具體做什麼事。


TerryLi3030


目前來看是不可能的。編譯器只是通過io調度來合理調整頻率,解決安卓卡頓問題需要從根源上解決。不過現在的處理器性能都很高,卡頓基本不見了


原諒帽全國經銷處處長


卡頓?你一直用的999的安卓機嗎?


分享到:


相關文章: