在上1篇文章中,老司機帶領(lǐng)大家1起學(xué)習(xí)了圖片資源的瘦身套路,收到了很多中學(xué)生讀者的好評。
想了解的童鞋請點擊:http://blog.csdn.net/mynameishuangshuai/article/details/51752832
這次,老司機繼續(xù)開車,給大家分享APK瘦身套路之項目優(yōu)化篇。為了更好的跟大家說明瘦身套路,我把優(yōu)化分為項目結(jié)構(gòu)瘦身和代碼瘦身兩部份。
項目中如果apk支持的最低版本是API14,而代碼中沒有用到高于api14的api就能夠斟酌去掉全部android support庫。
很多小火伴在項目中都引入了友盟工具,但是很多時候我們常常只需要友盟分享,那末我們可以把項目引入的友盟推送去掉,只集成友盟分享SDK,已到達精簡的目的。
使用AndroidStudio開發(fā)的小火伴,可以在gradle利用minifyEnabled進行Proguard混淆的配置,這么做可以大大減小APP大小:
android {
buildTypes {
release {
minifyEnabled true
}
}
}
在proguard中,是不是保存符號表對APP的大小是有顯著的影響的,可酌情不保存,但是建議盡可能保存用于調(diào)試。
使用AndroidStudio開發(fā)的小火伴,可以在gradle利用shrinkResources去除無用資源,效果很棒。
android {
buildTypes {
release {
shrinkResources true
}
}
}
使用AndroidStudio開發(fā)的小火伴,可以在gradle中精簡語言配置,比如國內(nèi)利用之配置支持中午,不需要其他國際化的幾10種語言支持。
android {
defaultConfig {
resConfigs"zh"
}
}
基本上armable的so也是兼容armable-v7的,armable-v7a的庫會對圖形渲染方面有很大的改進,如果沒有這方面的要求,可以精簡。這里不排除有極少數(shù)裝備會Crash,可能和不同的so有1定的關(guān)系,請大家務(wù)必測試周全后再發(fā)布。
x86包下的so在x86型號的手機是需要的,如果產(chǎn)品沒用這方面的要求也能夠精簡。建議實際工作的配置是只保存armable、armable-x86下的so文件,算是1個折衷的方案。
微信中的資源混淆工具主要為了混淆資源ID長度(例如將res/drawable/welcome.png混淆為r/s/a.png),同時利用7z深度緊縮,大大減少了安裝包體積,同時也增加了逼格,提升了反破解難度。
使用說明:微信資源緊縮打包工具使用介紹
技術(shù)原理介紹:安裝包立減1M–微信Android資源混淆打包工具
項目打包前仔細核對檢查源碼,刪除無用的邏輯代碼、過期的業(yè)務(wù)功能代碼、過剩的注釋代碼和廢棄的test代碼。
針對有條件的企業(yè),將來可以將自己的利用分拆,某些功能可以以產(chǎn)檢的情勢動態(tài)加載實現(xiàn),用到時再進行云端下載。動態(tài)加載插件化技術(shù)無疑從根本上減少了apk的體積,但是引入這個技術(shù)是有代價的,增加了項目的保護難度和開發(fā)難度。所以該技術(shù)適用于大型的移動利用,當你的業(yè)務(wù)大到不分開模塊難以高效力開發(fā)保護的時候,再斟酌動態(tài)加載技術(shù)吧,否則如果小范圍利用,還是老老實實斟酌傳統(tǒng)的android官方推薦的開發(fā)方式。下面推薦幾個比較好的動態(tài)加載開源框架項目供大家學(xué)習(xí)
dynamic-load-apk
360DroidPlugin
項目中針對新聞、咨詢類需求的詳情頁,可使用HTML5進行開發(fā),這樣可以大大減少使用原生控件開發(fā)帶來的額外空間開消。
Findbugs是1個開源的eclipse 代碼檢查工具;它可以簡單高效全面地幫助我們發(fā)現(xiàn)程序代碼中存在的bug,bad smell,和潛伏隱患。針對各種問題,它并且提供了簡單的修改意見供我們重構(gòu)時進行參考; 通過使用它,可以1定程度上下降我們code review的工作量,并且會提高review效力。 通過findbugs找到bug,再由我們自己重構(gòu)代碼,可以培養(yǎng)我們的編碼意識及水平,構(gòu)成好的習(xí)慣提高開發(fā)編碼能力。
Lint通過對Android工程源代碼進行掃描和檢查,可發(fā)現(xiàn)潛伏的問題,以便程序員盡早修正這個問題,比如:
布局性能(之前是 layoutopt工具,可以解決無用布局、嵌套太多、布局太多)
未使用到資源
不1致的數(shù)組大小
國際化問題(硬編碼)
圖標的問題(重復(fù)的圖標,毛病的大小)
可用性問題(如不指定的文本字段的輸入型)
manifest文件的毛病
至此,老司機談APK瘦身套路系列文章已完結(jié),相信已上車的小火伴都能很好地掌握APK的瘦身方法,選擇合適自己項目的套路,相信你的APK定會瘦身成功。
參考鏈接:
http://www.cnblogs.com/soaringEveryday/p/5254520.html
安卓開發(fā)高級技術(shù)交換QQ群:108721298 歡迎入群
微信公眾號:mobilesafehome
(本公眾號支持投票)
下一篇 動畫效果(一)-漸變動畫