老司机谈APK瘦身套路-项目优化篇
老司機談APK瘦身套路-項目優化篇
? ? ? ?在上一篇文章中,老司機帶領大家一起學習了圖片資源的瘦身套路,收到了很多中學生讀者的好評。 想了解的童鞋請點擊: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中精簡語言配置,比如國內應用之配置支持中午,不需要其他國際化的幾十種語言支持。
套路三:謹慎處理項目中的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定會瘦身成功。總結
以上是生活随笔為你收集整理的老司机谈APK瘦身套路-项目优化篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 限时抢购秒杀系统架构分析与实战
- 下一篇: android 8.0 移除静态注册广播