Android Gradle 2.2不允许签名APK的ShrinkResources

时间:2016-09-22 00:57:13

标签: android android-studio android-gradle build.gradle

作为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 {
    }
}

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

enter image description here

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

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

2 个答案:

答案 0 :(得分:7)

要使用shrinkResources,您必须使用minifyEnabled

根据Android documentation

  

资源缩减仅适用于代码收缩。   代码缩减器删除所有未使用的代码后,资源缩减器   可以识别应用程序仍在使用哪些资源。这是特别的   当您添加包含资源的代码库时,您必须这样做   删除未使用的库代码,以便库资源成为   未引用的,因而可以通过资源缩减器移除。

     

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

答案 1 :(得分:3)

使用

minifyEnabled false
shrinkResources false

minifyEnabled true
shrinkResources true

可能是android gradle插件上的错误

等待谷歌修复错误