在學(xué)習(xí)新知識的過程中,我一直很推薦結(jié)合實戰(zhàn)任務(wù)去學(xué)習(xí),只有經(jīng)歷實戰(zhàn),才能加深對理論知識的理解?!禔ndroid內(nèi)核開發(fā)》系列已經(jīng)寫了八篇了,本文就結(jié)合前面的內(nèi)容,給大家布置一個實戰(zhàn)任務(wù): 優(yōu)化Android系統(tǒng)的啟動速度。
成都創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、漢源網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、電子商務(wù)商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為漢源等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。這里我簡單介紹一下優(yōu)化的基本思路和涉及的文件,具體細(xì)節(jié)由大家自己在實踐去摸索,提高自己Google能力和解決問題的能力。
Android系統(tǒng)的啟動優(yōu)化主要分為三大部分:
(1) Bootloader優(yōu)化
(2) Linux Kernel的剪裁與優(yōu)化
(3) Android OS部分的剪裁與優(yōu)化
本文重點關(guān)注Android OS部分的啟動優(yōu)化,值得關(guān)注的優(yōu)化點分別介紹如下:
1. 精簡preload的classes和resource
前面介紹過,由于所有的Android應(yīng)用程序都是從Zygote進程fork出來的,所以為了共享一些class和resourse資源,Zygote進程初始化過程中,會預(yù)先加載一些常用的java class和資源文件到進程的內(nèi)存中,這樣其他應(yīng)用fork出來后就不用再次加載了,從而提高了應(yīng)用的啟動速度。
這個過程是可以精簡和優(yōu)化的,你可以減少一些classes和resource的加載,從而加快系統(tǒng)的啟動速度。本過程涉及到的文件:
frameworks/base/preload-classes
frameworks/base/core/res/res/values/arrays.xml
2. 精簡native service和java service
前面介紹過,Android OS的啟動本質(zhì)上就是啟動一系列的本地服務(wù)和Java服務(wù),Android系統(tǒng)的所有功能都是通過這些服務(wù)間接提供的。
這些服務(wù)有很多并不是必須啟動的,根據(jù)業(yè)務(wù)需求可以去掉一些,本過程涉及到的文件:
system/core/rootdir/init.rc
frameworks/base/services/java/com/android/server/SystemServer.java
3. 精簡預(yù)裝的apk文件
系統(tǒng)啟動過程中,會掃描系統(tǒng)指定目錄下的所有apk文件,這個過程也是非常耗時的,預(yù)裝的apk文件越少,系統(tǒng)啟動速度也就越快,因此,精簡預(yù)裝apk也是優(yōu)化系統(tǒng)啟動速度最重要的手段之一。
要想減少預(yù)裝的apk文件,則需要分析系統(tǒng)的build文件,將不需要的apk編譯選項刪除掉,本過程涉及到的文件:
build/target/product/xxxx.mk
device/
vendor/..../xxxx.mk
4. 減少內(nèi)核的log打印級別
過多的log打印消息會顯著地增加系統(tǒng)啟動的時間,log打印級別有多處可以調(diào)整,推薦修改init.rc文件中的loglevel來改變log打印級別。
system/core/rootdir/init.rc
5. 其他優(yōu)化手段
上面介紹的都是最常用的優(yōu)化手段,其實還有很多其他的方法,簡單列舉如下:
(1) 優(yōu)化啟動動畫,降低幀率和圖片尺寸
(2) 精簡系統(tǒng),減小boot.img文件大小,可以顯著減少啟動過程中加載和解壓boot.img的時間
(3) 預(yù)先創(chuàng)建一些目錄和文件,而不是在init過程中創(chuàng)建
(4) 其他……
6. 小結(jié)
這里我給出一位國外的高手優(yōu)化的結(jié)果作為比較和參考(我的優(yōu)化結(jié)果只提高了40%的啟動速度,遠(yuǎn)沒有達(dá)到他的效果):
希望大家能在本博文下留言、微博私信或者發(fā)郵件給我,告訴我你優(yōu)化前后的Android系統(tǒng)的啟動速度。
關(guān)于Android系統(tǒng)的啟動速度優(yōu)化就介紹到這里了,真心希望初學(xué)者們能夠動手去實踐,在實踐中逐漸掌握內(nèi)核開發(fā)的基本流程和技巧,然后慢慢深入理解系統(tǒng)的基本原理和理論知識。有任何疑問或者建議歡迎留言或者來信lujun.hust@gmail.com交流,或者關(guān)注我的新浪微博 @盧_俊 獲取最新的文章和資訊。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。