我是如何通過 nimbledroid 做android app性能優(yōu)化的

簡介

目前我負(fù)責(zé)開發(fā)的360 hola weather項(xiàng)目, 收到了360 OS的一個(gè)性能要求反饋, 一是要求apk size < 10 MB, 目前是12.2MB, 二是要求內(nèi)存占用 < 42MB.

NimbleDroid 是美國哥倫比亞大學(xué)的博士創(chuàng)業(yè)團(tuán)隊(duì)研發(fā)出來的分析Android app性能指標(biāo)的系統(tǒng),分析的方式有靜態(tài)和動(dòng)態(tài)兩種方式,
其中靜態(tài)分析可以分析出APK安裝包中大文件排行榜,各種知名SDK的大小以及占代碼整體的比例。
動(dòng)態(tài)分析可以給出冷啟動(dòng)時(shí)間, 列出block UI的具體方法, 內(nèi)存占用, 以及Hot Methods, 從這些分析報(bào)告中, 可以定位出具體的優(yōu)化點(diǎn).

使用方法其實(shí)很簡單, 只需要上傳你apk, 網(wǎng)站后臺(tái)會(huì)自動(dòng)分析, 并給出直觀化的分析報(bào)告.


屏幕快照 2018-03-21 上午11.03.06.png
apk文件大小優(yōu)化

首先, 查看apk中的文件大小排行榜.
從中, 可以非常明顯的看到一些圖片png文件的使用是不當(dāng)?shù)?

屏幕快照 2018-03-21 上午11.03.47.png

非常簡單的通過tinypng網(wǎng)站進(jìn)行處理后, 就可以得到非常好的優(yōu)化效果.


屏幕快照 2018-03-21 上午11.24.44.png

初步優(yōu)化后的apk文件大小已經(jīng)滿足了360OS的要求.


屏幕快照 2018-03-21 下午6.45.02.png

這是從資源文件的角度入手, 從代碼角度優(yōu)化, 可以查看報(bào)告中的方法數(shù)報(bào)告. 從中可以快速定位出項(xiàng)目使用各個(gè)SDK的情況, 從中尋找優(yōu)化空間.

屏幕快照 2018-03-21 上午11.09.15.png
冷啟動(dòng)優(yōu)化
屏幕快照 2018-03-21 上午11.11.00.png

這里給出了 8 個(gè)導(dǎo)致冷啟動(dòng)慢的原因點(diǎn). 優(yōu)秀app的冷啟動(dòng)時(shí)間應(yīng)該控制在2秒內(nèi), 目前是2.8秒, 超出了800毫秒.

Real Time 2.8 seconds0.80 seconds longer than max recommended time.

查看詳情報(bào)告, 可以看到block UI的具體方法名.

屏幕快照 2018-03-21 上午11.11.16.png

之前在瀏覽器部門, 閱讀chrome源碼, google用到了

        Looper.myQueue().addIdleHandler(new MessageQueue.IdleHandler() {
            @Override
            public boolean queueIdle() {
                return false;
            }
        });

來優(yōu)化頁面的啟動(dòng)速度. 這里正好可以用到. 把一些方法抽取出來. 在頁面繪制后, 等到UI線程空閑的時(shí)候, 再去執(zhí)行這些耗時(shí)方法.


屏幕快照 2018-03-21 下午6.59.35.png
優(yōu)化后的結(jié)果
屏幕快照 2018-03-21 下午7.35.24.png
屏幕快照 2018-03-21 下午7.36.25.png

冷啟動(dòng)優(yōu)化了300ms出來.

---DONE.---

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容