Android Gradle 2.2不允许签名APK的ShrinkResources

Mat*_*der 4 android android-studio build.gradle android-gradle-plugin

作为Android Studio 2.2推出的一部分,我将Gradle Build工具更新为v2.2.在这之后,我签名的APK构建过程失败,因为我有shrinkResources = true.

一旦我切换回Gradle v2.1.3或设置shrinkResources = false一切正常.这是我的app gradle构建文件:

    android {
    signingConfigs {

    }
    compileSdkVersion 24
    buildToolsVersion '24.0.0'
    defaultConfig {
        applicationId "com.sample.testapp"
        minSdkVersion 21
        targetSdkVersion 24
        versionCode 4
        versionName "0.0.4"
    }
    buildTypes {
        release {
            minifyEnabled false
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            proguardFile 'C:/Users/code/testapp/app/proguard-rules.pro'
        }
    }
    productFlavors {
    }
}
Run Code Online (Sandbox Code Playgroud)

将Gradle设置为v2.2,这是生成签名APK时的构建错误

在此输入图像描述

有谁知道为什么会发生这种情况并且是否有解决方法?我已经用Google搜索过了一些关于alpha和beta Gradle版本的一些较旧的Android Bug报告,但是我发现的报告大于6个月(以及以前的Gradle版本).

PS我知道minifyEnabled = false目前,我还没有调查我所包含的库的正确的proguard规则集,以防止签名版本由于缺少库而错误输出.

Iva*_*que 7

使用shrinkResources你必须使用minifyEnabled

根据Android文档:

资源缩减仅适用于代码收缩.在代码缩减器删除所有未使用的代码之后,资源缩减器可以识别应用程序仍在使用哪些资源.添加包含资源的代码库时尤其如此 - 必须删除未使用的库代码,以便库资源不会被引用,从而可以被资源缩减器移除.

要启用资源收缩,请在build.gradle文件中将shrinkResources属性设置为true(与minifyEnabled一起用于代码收缩).