官網(wǎng):https://developer.android.com/studio/build/shrink-code
要啟用資源壓縮
請(qǐng)?jiān)?build.gradle 文件中將 shrinkResources 屬性設(shè)置為 true(在用于代碼壓縮的 minifyEnabled 旁邊)。例如:
android {
...
buildTypes {
release {
//資源縮減
shrinkResources true
//源代碼混淆 true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
//資源縮減
shrinkResources true
//源代碼混淆 true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
自定義要保留的資源
如果您有想要保留或舍棄的特定資源,請(qǐng)?jiān)谀捻?xiàng)目中創(chuàng)建一個(gè)包含 <resources> 標(biāo)記的 XML 文件,并在 tools:keep 屬性中指定每個(gè)要保留的資源,在 tools:discard 屬性中指定每個(gè)要舍棄的資源。這兩個(gè)屬性都接受逗號(hào)分隔的資源名稱列表。您可以使用星號(hào)字符作為通配符。路徑:res/raw/keep.xml。構(gòu)建不會(huì)將該文件打包到 APK 之中。
res---raw---keep.xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:discard="@color/selector_tint_color"
tools:keep="@layout/activity_test1,@layout/activity_test2"
tools:shrinkMode="strict"/>
<!--discard:做嚴(yán)格檢查-->
<!--keep :不做嚴(yán)格檢查-->
<!--shrinkMode="strict" :該模式只保留在代碼或者資源文件中明確引用的資源-->
<!--shrinkMode="safe" :該模式會(huì)保留所有明確引用的資源以及可能被 Resources.getIdentifier() 動(dòng)態(tài)引用的資源-->

項(xiàng)目中activity_test資源被用了,activity_test1、activity_test2被keep住了,activity_test3沒(méi)被keep住,也沒(méi)被用,這時(shí)rebuild之后,看效果




apk里面的activity_test、activity_test1、activity_test2都有代碼,而activity_test3里面代碼沒(méi)有了,而且占用內(nèi)存極小,不需要做文件刪除,就可以使不用的資源最小化
APK優(yōu)化(一)之SVG--------------解決大量的套圖問(wèn)題
APK優(yōu)化(二)之Tint著色器-------------減少apk體積
APK優(yōu)化(三)之資源打包配置----resources.arsc
APK優(yōu)化(四)之.so動(dòng)態(tài)庫(kù)打包配置
APK優(yōu)化(五)之移除無(wú)用資源,物理刪除
APK優(yōu)化(六)之代碼混淆
APK優(yōu)化(七)之啟用shrinkResources資源縮減 ,不需要物理上的刪除
APK優(yōu)化(八)之啟用webp轉(zhuǎn)換插件-----圖片變小
APK優(yōu)化(九)之資源res文件混淆和7ZIP壓縮