如何正确使用资源收缩来减少APK大小?

时间:2015-11-22 08:35:27

标签: android android-gradle apk

我的主要目标是从apk中删除未使用的资产和库,以便我可以减小它的大小。我在浏览Resource Shrinking SO帖子时发现了this

所以我将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的大小与以前相同,没有收缩。所以我尝试通过运行此命令来查看是否正在删除哪些资源:

./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中是否可见?

1 个答案:

答案 0 :(得分:3)

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

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