分析:Android系統(tǒng)刷機后吕朵,第一次開機啟動很慢的原因

在做Android內(nèi)核開發(fā)的過程中,我們會發(fā)現(xiàn)窥突,每次編譯完系統(tǒng)源碼努溃,燒錄到設備/手機中后,第一次啟動都會很慢很慢阻问,要好幾分鐘甚至十幾分鐘梧税,為什么會出現(xiàn)這樣的現(xiàn)象呢?系統(tǒng)刷機后第一次啟動與后面再次啟動有什么不同呢称近?

要解答這個問題第队,首先我們需要了解一下AndroidDalvik虛擬機,以及Dalvik-cache刨秆。

由于嵌入式設備內(nèi)存有限凳谦、CPU處理器不夠強大、功耗敏感等原因衡未,Google沒有使用標準的JVM虛擬機尸执,而是為Android單獨開發(fā)了Dalvik虛擬機。

Dalvik虛擬機與JVM虛擬機有很大不同缓醋,它運行的是經(jīng)過優(yōu)化和壓縮的DEX字節(jié)碼如失,與標準的JAR字節(jié)碼并不一樣,占用空間更小送粱,而且還可以進一步優(yōu)化褪贵,Android SDK中專門提供了dx工具把傳統(tǒng)的Java字節(jié)碼轉換為Dalvik虛擬機可以運行的DEX字節(jié)碼,這個轉換過程是在程序編譯的時候就完成了葫督,這就是為什么我們可以用Java來編寫能運行于Android Dalvik虛擬機的程序的原因了竭鞍。關于這個過程板惑,下面這張示意圖比較直觀:

為了便于傳播橄镜,Android

SDK將程序編譯后的DEX字節(jié)碼文件偎快、資源文件、lib庫洽胶、AndroidManifest.xml等文件一起打包壓縮為apk文件(其實就是一個

zip壓縮文件)晒夹,因此,apk的安裝與卸載其實就是對這個zip壓縮包里面的文件進行解壓分析拷貝和優(yōu)化的過程姊氓。

由于DEX字節(jié)碼位于apk壓縮包中丐怯,因此,如果程序啟動的時候翔横,每次都要從apk文件中解壓提取DEX字節(jié)碼读跷,明顯效率不高,因此禾唁,Android系統(tǒng)設計了如下策略:

(1) 創(chuàng)建一個"dalvik-cache"文件夾效览,專門存放DEX字節(jié)碼,具體位于/data/dalvik-cache

(2) 系統(tǒng)第一次啟動時荡短,掃描所有的預裝apk文件丐枉,提取程序的DEX字節(jié)碼,經(jīng)過優(yōu)化后掘托,存放到dalvik-cache目錄中

(3) 每次安裝新的apk的時候瘦锹,也同樣提取DEX字節(jié)碼,優(yōu)化后放入dalvik-cache目錄中

(4) 用戶點擊應用圖標后闪盔,直接從dalvik-cache目錄中快速加載優(yōu)化過的DEX字節(jié)碼弯院,這樣程序就可以很快的啟動了。

理解了上述原理泪掀,本文探討的問題也就迎刃而解了抽兆,Android系統(tǒng)刷機后第一次開機啟動時,需要掃描所有預裝的apk文件族淮,提取dex字節(jié)碼辫红,優(yōu)化并且拷貝到/data/dalvik-cache緩存目錄中,因此祝辣,第一次啟動耗時會明顯更高贴妻。

美文推薦:

技術博客:針對移動應用加密的問題,如何加密.DEX文件呢蝙斜?

技術博客:安卓APP破解技術有哪些名惩?如何防反編譯

技術博客:如何防二次打包,愛加密加固APK防破解

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末孕荠,一起剝皮案震驚了整個濱河市娩鹉,隨后出現(xiàn)的幾起案子攻谁,更是在濱河造成了極大的恐慌,老刑警劉巖弯予,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戚宦,死亡現(xiàn)場離奇詭異,居然都是意外死亡锈嫩,警方通過查閱死者的電腦和手機受楼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呼寸,“玉大人艳汽,你說我怎么就攤上這事《匝” “怎么了河狐?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瑟捣。 經(jīng)常有香客問我馋艺,道長胡嘿,這世上最難降的妖魔是什么牧抽? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮胸懈,結果婚禮上交汤,老公的妹妹穿的比我還像新娘雏赦。我一直安慰自己,他們只是感情好芙扎,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布星岗。 她就那樣靜靜地躺著,像睡著了一般戒洼。 火紅的嫁衣襯著肌膚如雪俏橘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天圈浇,我揣著相機與錄音寥掐,去河邊找鬼。 笑死磷蜀,一個胖子當著我的面吹牛召耘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播褐隆,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼污它,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起衫贬,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤德澈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后固惯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梆造,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年缝呕,在試婚紗的時候發(fā)現(xiàn)自己被綠了澳窑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斧散。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡供常,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鸡捐,到底是詐尸還是另有隱情栈暇,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布箍镜,位于F島的核電站源祈,受9級特大地震影響,放射性物質發(fā)生泄漏色迂。R本人自食惡果不足惜香缺,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望歇僧。 院中可真熱鬧图张,春花似錦、人聲如沸诈悍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侥钳。三九已至适袜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舷夺,已是汗流浹背苦酱。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留给猾,地道東北人疫萤。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像耙册,于是被迫代替她去往敵國和親给僵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容