1. 程式人生 > >APK瘦身套路-專案優化篇

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檔案的錯誤

作者:猴子搬來的救兵
連結:https://juejin.im/post/57707d96a633bd00642e1f8d
來源:掘金
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。