在上一篇文章中,老司機帶領大家一起學習了圖片資源的瘦身套路,收到了很多中學生讀者的好評。
想了解的童鞋請點選:blog.csdn.net/mynameishua…
這次,老司機繼續開車,給大家分享APK瘦身套路之專案優化篇。為了更好的跟大家說明瘦身套路,我把優化分為專案結構瘦身和程式碼瘦身兩部分。
1.專案結構瘦身套路
套路一:引入庫的優化
-
去掉無用的庫
專案中如果apk支援的最低版本是API14,而程式碼中沒有用到高於api14的api就可以考慮去掉整個android support庫。
-
最小化集SDK
很多小夥伴在專案中都引入了友盟工具,但是很多時候我們往往只需要友盟分享,那麼我們可以把專案引入的友盟推送去掉,只整合友盟分享SDK,已達到精簡的目的。
套路二:Gradle優化配置
-
使用minifyEnabled配置混淆程式碼
使用AndroidStudio開發的小夥伴,可以在gradle利用minifyEnabled進行Proguard混淆的配置,這麼做可以大大減小APP大小:
android {
buildTypes {
release {
minifyEnabled true
}
}
}複製程式碼
在proguard中,是否保留符號表對APP的大小是有顯著的影響的,可酌情不保留,但是建議儘量保留用於除錯。
-
使用shrinkResources配置去除無用資源
使用AndroidStudio開發的小夥伴,可以在gradle利用shrinkResources去除無用資源,效果很棒。
android {
buildTypes {
release {
shrinkResources true
}
}
}複製程式碼
-
使用語言配置,去除多餘的語言支援
使用AndroidStudio開發的小夥伴,可以在gradle中精簡語言配置,比如國內應用之配置支援中午,不需要其他國際化的幾十種語言支援。
android {
defaultConfig {
resConfigs"zh"
}
}複製程式碼
套路三:謹慎處理專案中的so
-
刪除armable-v7包下的so
基本上armable的so也是相容armable-v7的,armable-v7a的庫會對圖形渲染方面有很大的改進,如果沒有這方面的要求,可以精簡。這裡不排除有極少數裝置會Crash,可能和不同的so有一定的關係,請大家務必測試周全後再發布。
-
刪除x86包下的so
x86包下的so在x86型號的手機是需要的,如果產品沒用這方面的要求也可以精簡。建議實際工作的配置是隻保留armable、armable-x86下的so檔案,算是一個折中的方案。
套路四:利用微信資源壓縮打包工具
微信中的資源混淆工具主要為了混淆資源ID長度(例如將res/drawable/welcome.png混淆為r/s/a.png),同時利用7z深度壓縮,大大減少了安裝包體積,同時也增加了逼格,提升了反破解難度。
使用說明:微信資源壓縮打包工具使用介紹
技術原理介紹:安裝包立減1M–微信Android資源混淆打包工具
2.程式碼瘦身套路
套路一:清理掉廢棄程式碼
專案打包前仔細核對檢查原始碼,刪除無用的邏輯程式碼、過期的業務功能程式碼、多餘的註釋程式碼以及廢棄的test程式碼。
套路二:有條件的專案使用外掛化開發
針對有條件的企業,將來可以將自己的應用分拆,某些功能可以以產檢的形式動態載入實現,用到時再進行雲端下載。動態載入外掛化技術無疑從根本上減少了apk的體積,但是引入這個技術是有代價的,增加了專案的維護難度和開發難度。所以該技術適用於大型的移動應用,當你的業務大到不分開模組難以高效率開發維護的時候,再考慮動態載入技術吧,否則如果小規模應用,還是老老實實考慮傳統的android官方推薦的開發方式。下面推薦幾個比較好的動態載入開源框架專案供大家學習
dynamic-load-apk
360DroidPlugin複製程式碼
套路三:使用HTML5進行介面開發
專案中針對新聞、諮詢類需求的詳情頁,可以使用HTML5進行開發,這樣可以大大減少使用原生控制元件開發帶來的額外空間開銷。
套路四:提高程式碼質量
-
使用Eclipse的小夥伴利用好FindBugs
Findbugs是一個開源的eclipse 程式碼檢查工具;它可以簡單高效全面地幫助我們發現程式程式碼中存在的bug,bad smell,以及潛在隱患。針對各種問題,它並且提供了簡單的修改意見供我們重構時進行參考; 通過使用它,可以一定程度上降低我們code review的工作量,並且會提高review效率。 通過findbugs找到bug,再由我們自己重構程式碼,可以培養我們的編碼意識及水平,形成好的習慣提高開發編碼能力。
-
使用AndroidStudio的小夥伴利用好Lint
Lint通過對Android工程原始碼進行掃描和檢查,可發現潛在的問題,以便程式設計師及早修正這個問題,比如:
佈局效能(以前是 layoutopt工具,可以解決無用佈局、巢狀太多、佈局太多)
未使用到資源
不一致的陣列大小
國際化問題(硬編碼)
圖示的問題(重複的圖示,錯誤的大小)
可用性問題(如不指定的文字欄位的輸入型)
manifest檔案的錯誤複製程式碼
總結
至此,老司機談APK瘦身套路系列文章已經完結,相信已上車的小夥伴都能很好地掌握APK的瘦身方法,選擇適合自己專案的套路,相信你的APK定會瘦身成功。
參考連結:
www.cnblogs.com/soaringEver…
安卓開發高階技術交流QQ群:108721298 歡迎入群
微信公眾號:mobilesafehome
(本公眾號支援投票)