如何正确使用 Resource Shrinking 来减小 APK 大小?

How to properly use Resource Shrinking to reduce APK size?

我的主要目标是从 apk 中删除未使用的资产和库,以便减小它的大小。我发现 Resource Shrinking while I was browsing through this 所以 post。

所以我将 gradle 文件更改为:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    defaultConfig {
        applicationId 'com.galleri5.android'
        multiDexEnabled true
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 12
        versionName "0.10"
    }
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

为了检查这是否有效,我生成了 apk,apk 的大小与以前相同,没有缩小。所以我试图查看 if/which 资源被 运行 这个命令删除:

./gradlew clean assembleDebug --info | grep "Skipped unused resource"

这是我得到的输出:

Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar

我没有看到正在删除的资源。是我做错了什么,还是我完全误解了这个工具?任何帮助将不胜感激。谢谢

编辑 我只是在检查 运行 应用程序在上述配置后生成的 apk(apk-debug.apk) 的大小。当我生成签名的 apk 时会发生收缩,还是在普通 apk 中也能看到?

资源缩减只会发生在您的发布版本中,因为这是您在 build.gradle 中指定的内容。如果您想在调试版本中缩小,您可以将以下闭包添加到 buildTypes,通常不会这样做。

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