APK體積極限壓縮優化瘦身

查看APK結構Build->Analyse Apk

7567917-ec74b004ee1da8e5.jpg
未做處理的APK.jpg

開啓代碼混淆

混淆模板

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

minifyEnabled 這個是用來開啓刪除無用代碼,比如沒有引用的方法
shrinkResources 用來開啓刪除無用資源,也就是沒有被引用的文件,可在res/raw/keep.xml指定啓動的資源(避免被誤刪除)

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
           tools:keep="@layout/activity_four,@drawable/no_reference_but_keep"/>

可以通過gradlew clean assembleRelease - info來獲得APK縮減資源的概覽


7567917-5252b65d820b20c0.jpg
混淆後

混淆後APK大小減少了4.3MB

so庫

根據需求保留cpu架構,2011年後的手機大部分都是arm-v7a,所以-

ndk { abiFilters "armeabi-v7a"}
7567917-1682c81e5b4467de.jpg
去除so庫.jpg

可以明顯看到lib的大小減少了3MB

國際化只保留默認語言

apk文件中有個resource.arsc,用於resource資源文件的映射表
//gradle中,只保留默認和指定的資源

resConfig('zh-rCN')
7567917-ca58492699dbdd0b.jpg
保留國際化語言.jpg

7567917-7f3f13c30ab48c47.jpg
指定語言.jpg

效果不是很明顯,減少大概200kb

AndResGuard 微信資源壓縮方案

7567917-e594514c904f4e76.jpg
集成andresguard.jpg

原理是資源映射


7567917-069f798257bcf0ca.jpg
資源映射前.jpg
7567917-6558445fe8edaf0d.jpg
資源映射後.jpg

集成後大小大概減少了1MB

使用webp圖片

7567917-7e74978d18cff2f4.jpg
轉換成webp
7567917-51dbd9b1ca5b72fa.jpg
webp轉換.jpg

SVG矢量圖替換套圖 (只針對小圖標,tint着色器可改變圖標顏色)

Vector圖像剛發佈的時候,是隻支持Android 5.0+的設備
不過自從AppCompat 23.2之後,我們只需要引入com.android.support:appcompat-v7:23.2.0以上的版本 的兼容包,Vector可以使用於Android 2.1以上的所有系統。

7567917-e1374c98b93a047c.jpg
創建SVG.jpg
<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/logo"
        android:tint="#FFFFFF"
        />

tint改變顏色

移除無用資源(慎用)

物理方法刪除本地文件
Refactor-> remove unused resource
Analyze->Run Inspection by name ->unused resource(lint檢查的方式)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章