Android 7.0的APP安裝速度為什麼那麼快?

ADVERTISEMENT

本文經超能網授權轉載,其它媒體轉載請經超能網同意。

去年三月份,Google發布了首個Android 7.0(Android Nougat)測試版,五月份發布正式版,雖然至今Android 7.0不足5%的市場占有率,足以讓蘋果笑掉大牙,但是隨著三四月份新機紮堆發布,Android 7.0肯定會迎來一波爆發。或許你會問,Android 7.0有什麼好的,我現在用6.0穩定得很呢,倒還真有一個能讓你有真切感受的變化,用我們小超哥的話講就是“震驚!Android 7.0應用安裝速度飆升666%!”,你還別不信,先看看小超哥做的一個與Android 6.0的對比視頻:

Android 7.0與Android 6.0應用安裝速度對比

視頻中用的測試手機為Nexus 5X,在Android 6.0中,安裝同一版本的手機淘寶用時28秒,升級到Android 7.0後,安裝手機淘寶僅用時14秒,請問你震驚了嗎?

下次有基友或妹子問你Android 7.0有什麼好的時候,你完全可以大膽告訴他們,Android 7.0的軟件安裝速度快了一倍啦~~~~不信你上超能網看看對比視頻,萬一妹子驚呆了,追問一句,怎麼會快這麼多呢,你肯定不能回答不知道吧,所以我軍從不打無準備之仗,要做一個脫離低級趣味一個有益於人民一個BIGGER滿滿的人,你必須往下看。

ADVERTISEMENT

Android 4.4時的JIT解決方案

故事還得回到幾年前,還是Android 4.4的時代,那時Android還是用的Dalvik虛擬機,配合的是JIT編譯器(Just In Time,即時編譯器),其實Google在Android 2.2時就添加了JIT。當APP運行時,JIT編譯器就會對新類進行編譯,經過編譯後的代碼,會被優化成相當精簡的原生型指令碼,這樣在下次執行到相同邏輯的時候,速度就會更快。

JIT是在運行時編譯,優缺點很明顯,安裝速度快占用存儲空間小,主要問題是在運行時編譯開銷大,容易造成卡頓,所以在這之後,Google果斷壯士斷腕,在Android 5.0和Android 6.0中放棄了Dalvik轉投ART(Android Runtime)虛擬機懷抱,編譯策略也棄JIT改用AOT(Ahead Of Time)方案。

ADVERTISEMENT

Android 6.0采用了AOT編譯方案

ART的策略與Dalvik不同,應用在第一次安裝的時候,字節碼就會預先編譯成原生型指令碼,使其成為真正的本地應用。以後運行APP時,不需要再進行編譯,啟動速度和運行速度都提高了,也就不那麼卡頓了。

但是這種方案也有明顯缺點,就是在安裝中要全面預編譯,安裝時間難免長,而且會消耗掉更多的存儲空間,根據我們的測試,手機淘寶這個APP在Android 6.0系統中應用存儲大小為171MB,在Android 4.4系統中占用為154MB,相當於占用空間多了10%。截圖就不貼了,有興趣的朋友可找小超哥(微信9501417)索取。

在Android 7.0中,Google進一步改進了編譯策略,這次他直接來了個Hybrid Mode,也就是AOT + JIT混合模式,糅合了兩者的優點:

ADVERTISEMENT

Android 7.0的編譯策略

Google是這麼說的:Android 7.0添加了一個JIT編譯器與代碼分析到ART,JIT編譯器是對ART當前的AOT編譯器的一個補充,提高運行時性能,節省存儲空間,加快應用程序更新和系統更新。

在Android 7.0中,安裝應用時不再像6.0那樣對應用代碼進行完整的預編譯,而是會根據JIT編譯器的分析結果,在設備充電或其餘空閑時間對“cold code”進行解釋,對於“hot code”,則在實際使用時由JIT進行編譯,因此應用安裝時間和占用空間大大減少了,像手機淘寶這個APP在Android 7.0系統中的占用大小為156MB,和Android 4.4系統中非常接近。主要的是,它還不會影響到應用的運行速度。


Android 7.0中的JIT架構 - 它是如何工作的

總結一下,在Android 7.0,采用了AOT + JIT混合編譯策略,帶來的好處如下:

﹒APP安裝時間大幅縮短,只有Android 6.0系統的50%;

﹒系統升級OTA速度加快,不再需要優化;

﹒應用占用空間更少,一般會少10%;

﹒降低系統開銷,改善電池消耗。

ADVERTISEMENT