-
1 # TerryLi3030
-
2 # 原諒帽全國經銷處處長
目前來看是不可能的。編譯器只是透過io排程來合理調整頻率,解決安卓卡頓問題需要從根源上解決。不過現在的處理器效能都很高,卡頓基本不見了
-
3 # 科學第一站
首先我們要知道,所有機器程式都有自己的語言,和全世界講的語種類似。編譯器便是把程式設計人員開發的高階語言程式,翻譯成機器可識別的指令,翻譯的效率將直接影響機器執行指令的效率。
“由於Android的開放性,上層應用沒有強制規則。比如Android的第三方應用市場非常多;Android的安裝方式也非常多,透過郵件都可以安裝。帶來的(不穩定性)問題比較多。所以Android使用者要真正能夠獲得好的體驗,手機廠家只把手機做好是不夠的。”王成錄博士說起了目前Android軟體生態的問題。
由於這個生態無法像iOS生態那樣高度標準化,因此軟體存在各種編譯方式,甚至是層次不齊的軟體質量。方舟編譯器的意義在於透過手機廠家和生態的合作,把使用者軟體體驗做好。
方舟編譯器所採用的翻譯方法,與此前的編譯器有所不同。
現有的Android系統是在手機環境中進行編譯,透過ART虛擬機器(Android Runtime)一邊翻譯一邊執行,這會造成資源佔用過多,進而影響到程式執行的效率。
方舟編譯器則能讓開發者在開發過程中直接把多種高階語言編譯為機器可識別的指令,然後打包成APK,手機在安裝程式之後便可直接識別並執行程式。從而提高軟體的執行效率。
方舟編譯器總共有4個技術亮點:
1、首個多語言聯合最佳化編譯器,可消除跨語言呼叫開銷;
2、程式執行無需依賴虛擬機器,記憶體回收機制高效;
3、可針對不同應用靈活最佳化;
4、開發者學習和使用成本低。
其中第二點對於使用者來說,系統的執行改善是直觀的。由於沒有了ART虛擬機器佔用系統資源,且不用虛擬機器編譯過程,程式的執行效率將會得到提高。同時,由於方舟編譯器在編譯時為程式配備了及時回收的記憶體處理機制,相較於之前系統需要全域性暫停才能回收資源的方式,系統在執行的流暢度上得到了提升。
餘承東曾在P30系列釋出會上表示,新浪微博極速版在應用方舟編譯器之後,操作流暢度提升了60%以上。
不過顯然透過華為一家廠商是做不到全部軟體的覆蓋的。王成錄博士表示:“實際上這件事情,只靠華為一家不可能實現,我們非常希望Android陣營所有合作伙伴大家一起努力。這次方舟編譯器我們承諾要跟業界開源最核心的原因,是希望大家從各自場景各自平臺去應用,讓Android手機體驗越來越好。
-
4 # 雪漠孤行0901
只能解決部分卡頓,並且代價太高。第一個站出來的就會是谷歌,谷歌大哥不樂意,其它手機廠只能跟著大哥了。再著,編譯這件事是比較底層的,你讓所有的系統外掛和APP都要從新回爐一次,代價也不小。
不過總的是好事,慢慢來吧。路總是要有人走的。
-
5 # 空同定翁
回答這個問題前,還得先從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早就做了。
-
6 # 網際網路的放大鏡
其實,安卓手機的卡頓問題有很多原因,安卓系統的原因佔一部分,但還有安卓整體的軟體執行環境的責任,也就是說如果這兩者任何一點不能夠完全解決,也就是說安卓的卡頓將會持續下去。
這也是為什麼目前定製系統如此之多的情況下,但能夠流暢執行一段時間的系統還是寥寥無幾,也就是說很多,手機廠商美其名曰是定製系統,其實,不過是多加了幾個自己的軟體或者說是多加了幾個功能,反而讓系統越來越臃腫,也就是說目前的定製系統速度很難,超得過原生的安卓系統。
由此引發的軟體執行環境也是比較混亂,我們知道蘋果的iOS系統由於有APP store的監管也就說,很多軟體廠商在開發軟體的時候,要嚴格遵守蘋果的一些規定,否則一不留神就有可能會被蘋果暴力下架,這一點也像是懸在很多軟體開發商頭上的達摩克利斯之劍,讓軟體開發商可能不敢太過於造次。
這項舉措也是維持了iOS平臺的規範性的軟體執行環境,讓很多使用者都會慨嘆iOS系統包括整體的操作體驗是非常流暢的,這與蘋果自身的努力和軟體開發商的規範操作,有著密不可分的聯絡。
相反來看的話,這些都是安卓所不具備的特點,除此之外方舟編譯器即便開源之後也只能對那些是配方周邊一汽的APP,能夠有效的最佳化,而大部分的軟體還是沒有辦法,也就是說流氓應用還將繼續流氓下去而安卓還將持續卡頓。
所以綜合來看的話,如果想要安卓,不卡頓的話,首先其實谷歌要收回大權,讓所有的定製系統包括軟體開發商,都要嚴格按照谷歌自己的標準來生產產品。
-
7 # 碼農聊科技
安卓手機卡頓的主要原因還是在於安卓系統上,華為方舟編譯器能在一定程度上解決卡頓的問題,但也不可能徹底解決。
安卓系統是一套開源的手機系統,手機上的APP執行都是基於ART虛擬機器的,APP在虛擬機器上執行的過程是這樣的,在執行前,編譯器需要先對程式進行編譯,對指令進行翻譯,然後才能在手機上正常的執行。那麼,在這一過程中,經歷了編譯、編譯、執行這一系列動作,而翻譯和編譯都是需要時間的,這就降低了系統處理的效率,同時也會佔用大量執行記憶體。反應給使用者的感覺就是,安卓手機上的應用啟動比較慢,手機使用時間長了就會有卡頓的現象。
所以,針對安卓手機這一特性,透過解決APP的執行方式和解決APP對的記憶體消耗,可以從一定程度上解決卡頓的問題,方舟編譯器就是從這兩方面著手的。
方舟編譯器首先是針對於APP執行的過程,把應用程式的編譯過程直接放在了開發端,這樣一來,開發者在發不成想之前,可以直接將程式語言編譯為機器指令,然後將程式打包釋出,供使用者安裝使用。
當用戶安裝好程式開啟時,就可以直接在手機上執行,從而省略了程式在手機上編譯、解析的過程,節省出了系統和程式互動的時間,同時也減少了記憶體的消耗,提高了程式執行速度。
同時,由於安卓手機上的應用程式在關閉後,某些程式會存在後臺繼續執行一些相關的服務,從而造成記憶體繼續佔用的問題,所以方舟編譯器對此也採用了隨用隨回收的記憶體回收機制,一旦程式關閉或暫停,就會將該應用所佔用的記憶體回收,釋放出更多可用記憶體,這樣就能有效避免手機卡頓的問題。
這種做法是可以解決手機卡頓的問題,但谷歌作為安卓系統的開發者,對於透過改變應用程式編譯的方式來解決卡頓它不會不知道吧,之所以谷歌不在安卓系統底層邏輯中做這樣的處理,想必還有別的一些原因或問題需要解決,也許是安卓生態下的APP眾多,做這樣的處理代價太大?
總之,方舟編譯器的這種處理方式在解決手機卡頓問題是會起到一定作用,對於華為手機應該是可行的。但要說將方舟編譯器開源,供所有安卓手機使用這種方式,或許不太可能,這個還要看谷歌的態度。
-
8 # 拈花不笑112693312
會好很多,APP就像車,安卓是公共高速路,各種車都上,之前都是人工收費,上高速得等一下,碰見全家桶一起加塞兒擠,那就容易堵車不動,現在華為的編譯器算是給開了個ETC通道,比原來快了不少,但是蘋果系統是自己修高速,上高速的APP提前審查過,沒有閘口,直接上,還不限速,再加上強勁的發動機,那肯定是溜的飛起
回覆列表
不能完全解決,因為任何編譯器都不可能改變app的業務邏輯。換句話說,編譯器可以讓app做事效率變得更高,但不能控制app具體做什麼事。