1. 使用的是Android Studio工具做代碼審查(Inspect Code功能), 實(shí)際上使用到的是其中Android Lint部分
2. Inspect Code配置(可以單獨(dú)選擇Module 'app'部分, 個(gè)人感覺library部分審查的意義不大. 不過為了方便,我還是選擇了 Whole project... 不過這樣的結(jié)果就是, 同事的紅點(diǎn)鍵盤電腦還沒有Inspect完... 我已經(jīng)把150多個(gè)無效資源全部處理完了... 所以還是自行決定是否Fire The Whole吧...)
******** 第三部分: Android Studio Inspect Code 結(jié)果簡介 ********
zzzZZZ(Inspecting...)
1. 既然是瘦身, 那無效資源引用就是頭等重要的事了. 個(gè)人覺得這部分都在Inpsection模塊的Android Lint視圖里面了.
首先,在Inspection模塊里找到Android Lint
然后, 在Inspection模塊的Android Lint里向下滑動(dòng)找到Ununsed resources
來, 看一下Unused recources展開后的樣子(對不起, 重復(fù)圖片, 無效xml文件, 無效的strings.xml和dimens.xml都已經(jīng)處理完了)...
( ??說一下一個(gè)我自己的處理"技巧"吧, 對于無效的xml文件, 要?jiǎng)h除起來其實(shí)還比較麻煩, 因?yàn)锳ndroid Studio在xml頁面好像沒有刪除按鈕????我是這么做的:
在Inspect Code 的Android List結(jié)果展示區(qū), 雙擊對應(yīng)的xml無效提示(例如: The resource 'R.dimen.spacing_0_5' appears to be unused這一個(gè)item),
進(jìn)入對應(yīng)的xml文件后, 把所有內(nèi)容刪除... 不要怕... 錯(cuò)了git可以恢復(fù)的...
當(dāng)你刪除的手酸的時(shí)候或者內(nèi)心惶恐不安的時(shí)候, 在Android Studio里Clean一下工程[不懂的谷歌搜索: Android Studio Clean 工程...]
之后在Android Studio工程里遍歷所有的xml文件, 對于沒有內(nèi)容的xml文件, Android Studio會(huì)用紅色的波浪線提示, 然后選中所有需要?jiǎng)h除的xml文件, 一次性刪除... 建議帶上引用審查)
安全刪除之引用審查
(說一下一個(gè)坑吧... 事情的起因是這樣的:android.content.res.Resources$NotFoundException
Android Lint信誓旦旦的說, R.dimen.spacing_0_5是沒用的(實(shí)際上他的名字是R.dimen.spacing_0.5...)?后刪之, 保留了values-1280x720目錄下diemns.xml里的R.dimen.spacing_0.5定義...
這樣看起來應(yīng)該出現(xiàn)在分辨率為1280x720的HTC D816V完美不崩潰而其他分辨率可能崩潰的情況... 然而HTC D816V表示不服, 打開APP后崩潰,遂伙同Android Studio提示單身程序狗: Caused by: android.content.res.Resources$NotFoundException: File res/drawable/common_btn_grayf10.xml from drawable resource ID #0x7f0a0018
我找了一下, common_btn_grayf10.xml確實(shí)存在... HTC你"眼瞎"是不是!!! 還是Android Studio聰明, 在xml預(yù)覽圖里無預(yù)覽, 但是提示spacing_0.5 not in right format... 于是將spacing_0.5修改為spacing_1, 錯(cuò)誤提示不記得在不在了, 但是程序依舊崩潰... 查了很久后, 嘗試將spacing_0.5也放到values/dimens.xml里試試... 結(jié)果崩潰問題解決...
總結(jié):在做適配的時(shí)候, 一定要保證values/dimens.xml文件是最大而全的.就是說values/dimens.xml = values-aaxbb U values-ccxdd U etc... 這里U是離散數(shù)學(xué)里的取并集的意思(打我吧... 很羅嗦對不對)
)
2. 實(shí)際上Android Studio的Inspect Code還蠻強(qiáng)大的, 會(huì)幫你審查無效的LinearLayout, xml布局里View過多, onDraw()函數(shù)中分配內(nèi)存這一類的效率問題. ?舉一個(gè)Code style的例子(實(shí)在無語了有沒有!)
代碼里是這么寫的:
Intent intent = getIntent();
if (null != intent) {
goToMainPageFlag = intent.getBooleanExtra(KEY_GO_TO_MAIN_PAGE_FLAG, false);
} else {
goToMainPageFlag = false;
}
Inspect Code提示:
就是說, Android Studio的Inspect Code告訴你, 你的代碼一點(diǎn)都不優(yōu)雅... 應(yīng)該改成醬:
Intent intent = getIntent();
goToMainPageFlag = (null != intent && intent.getBooleanExtra(KEY_GO_TO_MAIN_PAGE_FLAG, false));
結(jié)論: 把六行的代碼改成兩行, 確實(shí)是一個(gè)很好的Code Style實(shí)踐有沒有! 是的, Android Studio的Inspect Code功能我也是第一次用, 里面東西實(shí)在太多了, 大大小小事無巨細(xì)的,沒事兒多看看長長見識(shí)也是極好的... 雖然有時(shí)候你可能不能在短時(shí)間內(nèi)一下子把所有選項(xiàng)優(yōu)化完, 不過多看才會(huì)有優(yōu)化的意識(shí), 在之后的Code實(shí)踐里就會(huì)逐漸的靠近最佳實(shí)踐. (完)