【问题标题】:Android Gradle 2.2 Not Allowing ShrinkResources for Signed APKAndroid Gradle 2.2 不允许签名 APK 的 ShrinkResources
【发布时间】:2017-01-30 10:01:53
【问题描述】:

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

一旦我切换回 Gradle v2.1.3 或设置 shrinkResources = false 一切正常。这是我的应用程序 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 时出现的构建错误

有谁知道为什么会发生这种情况以及是否有解决方法?我在 Google 上搜索了一下,并看到一些关于 alpha 和 beta Gradle 版本存在此问题的旧 Android 错误报告,但我发现的报告已经超过 6 个月(以及之前的 Gradle 版本)。

附:我知道 minifyEnabled = false 目前,我还没有为我包含的库调查正确的 proguard 规则集,以防止 Signed Build 由于缺少库而出错。

【问题讨论】:

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


    【解决方案1】:

    要使用shrinkResources,您必须使用minifyEnabled

    根据Android documentation

    资源收缩只能与代码收缩结合使用。 在代码收缩器移除所有未使用的代码后,资源收缩器 可以识别应用程序仍在使用哪些资源。这尤其 当您添加包含资源的代码库时为真——您必须 删除未使用的库代码,使库资源变为 未被引用,因此可以被资源收缩器移除。

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

    【讨论】:

    • 谢谢!一定是以前有效的“功能”
    【解决方案2】:

    使用

    minifyEnabled false
    shrinkResources false
    

    minifyEnabled true
    shrinkResources true
    

    可能是 android gradle 插件的错误

    等待谷歌修复错误

    【讨论】:

      猜你喜欢
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多