Android APK瘦身

背景

公司項目目前處于收尾階段,對APP的更改在于一些細節和邏輯的調試。因此準備對APK進行瘦身。

瘦身前

在未進行任何瘦身操作之前,APK的大小為22150 KB 左右,大概21.6M


瘦身前APK大小.png

瘦身開始

去除無用xml和圖片

可以使用Android Studio自帶的Lint,點擊菜單欄 Analyze -> Run Inspection by Name -> unused resources -> Moudule ‘app’ -> OK,就可以查詢到那些圖片或者XML文件未被使用。


image.png

去除無用圖片、XML后,apk大小為20.3

圖片壓縮

PuppyGo這個項目,主要是兒童親子教育類型的,通過藍牙控制機器狗進行相關的交互,主要是功能性的,圖片還算多,未開始壓縮前 xhdpi 和 xxhdpi兩個文件的圖片總共16.69M

xhdpi.png

xxhdpi.png

圖片壓縮這里采用Tinypng,https://tinypng.com/,一次最多可壓縮20張圖片,不超過5M。或者可以花錢使用Pro版本,對圖片數量沒有限制

image.png

點擊上圖的壓縮按鈕,選擇完圖片,即可進行壓縮,不用注冊。

image.png

壓縮完畢,點擊Download ALL 即可下載得到壓縮后的圖片

image.png

壓縮后兩個文件夾總大小6.6M,下圖壓縮了11M,重新Build apk之后的安裝包大小10.6m左右,相比之前的20.3M,壓縮還是很可觀的。


image.png

image.png

minifyEnabled混淆

在app的build.gradle設置minifyEnabled為True

   buildTypes {
    release {
        minifyEnabled  true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

同樣的在app的proguard-rules.pro編寫混淆規則,對自身項目的依賴庫填寫規則,例如greenDao,混淆后注意測試app各功能使用正常與否。

# greenDAO 3
  -keep class org.greenrobot.greendao.**{*;}
  -keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
  public static java.lang.String TABLENAME;
  }
  -keep class **$Properties

設置shrinkResources

buildTypes {
    release {
        minifyEnabled true
        shrinkResources true
    }
}

刪除未使用到代碼

也是使用Android Studio的Lint,點擊Analyze -> Run Inspection by Name ,輸入 unused declaration ,然后選 Moudule ‘app’ -> OK,即可刪除無用代碼,我這里只縮小了15K左右。。。


image.png

設置resConfigs

PuppyGo項目分為中文版和另外的英文版,因此可以設置resConfigs只支持中文

android {
defaultConfig {
    resConfigs "zh"
  }
}

設置前的APK大小為9451 KB(9.22M),設置后為9370KB(9.14M),縮小了0.8M.

使用Webp格式圖片

如果你沒有用Tinypng等工具進行圖片壓縮,也可以用Android Studio自帶的轉Webp工具對圖片進行格式轉換,沒有Convert to WebP這個選項的話,嘗試更新Android Studio,圖片位置右鍵,點擊Convert to WebP


image.png
image.png

轉換前大小為25KB,轉換后為11.5KB.

最后

經過以上處理,APK大小由原來的21.6M,瘦身為9.14M(使用tinypng壓縮),使用WebP格式的圖片的話,apk大小為7.8M,進一步縮小。選擇png壓縮,還是轉為WebP,自行選擇。最后的結果相對來說,效果還是不錯的,可以為用戶節省一半的流量。當然,我的項目使用了兩套圖,如果只是用720P一套圖,APK的大小將進一步縮小。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容