查看APK結構Build->Analyse Apk
開啓代碼混淆
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縮減資源的概覽
混淆後APK大小減少了4.3MB
so庫
根據需求保留cpu架構,2011年後的手機大部分都是arm-v7a,所以-
ndk { abiFilters "armeabi-v7a"}
可以明顯看到lib的大小減少了3MB
國際化只保留默認語言
apk文件中有個resource.arsc,用於resource資源文件的映射表
//gradle中,只保留默認和指定的資源
resConfig('zh-rCN')
效果不是很明顯,減少大概200kb
AndResGuard 微信資源壓縮方案
原理是資源映射
集成後大小大概減少了1MB
使用webp圖片
SVG矢量圖替換套圖 (只針對小圖標,tint着色器可改變圖標顏色)
Vector圖像剛發佈的時候,是隻支持Android 5.0+的設備
不過自從AppCompat 23.2之後,我們只需要引入com.android.support:appcompat-v7:23.2.0以上的版本 的兼容包,Vector可以使用於Android 2.1以上的所有系統。
<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檢查的方式)