使用Gradle精简资源

在前面,笔者提到了minifyEnabled指令,该指令用于对Android App进行混淆。其实,minifyEnabled指令不仅可以对代码进行混淆,而且该指令还可以对代码进行优化、精简。同时配合shrinkResources指令,还可以清除项目工程中无效的资源文件,从而进一步精简APK文件。但有一点需要注意的是,shrinkResources指令是依赖于minifyEnabled指令的,只有当minifyEnabled指令启用时,shrinkResources指令才能生效,示例代码如下所示。

  1. android {
  2. ……
  3. buildTypes {
  4. release {
  5. minifyEnabled true
  6. shrinkResources true
  7. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  8. }
  9. }
  10. }

另外,在Android Studio中,IDE也提供了一个快捷指令来直接进行资源精简。使用快捷键“Command+Shift+A”就可以调出快捷指令输入框,输入“remove unused resources”即可执行该指令,其效果与shrinkResources类似,如图4.38所示。

使用Gradle精简资源 - 图1 图4.38 Remove Unused Resources

使用这两种方式来进行资源清理,可以很大程度地减少垃圾资源的占用。但要注意的是这两种检测资源的方式属于静态检测,一些动态加载的资源是无法检测的,注意不要误删。