【问题标题】:Enable/disable ProGuard in the product flavor在产品风味中启用/禁用 ProGuard
【发布时间】:2014-06-27 09:30:35
【问题描述】:

所以,我知道在构建类型中,runProguard 'bool' 指令可用于判断是否应该运行 ProGuard。不幸的是,该指令不适用于产品口味。有没有办法指定 ProGuard 是否应该在口味中运行?我曾想过使用一个基本上说“什么都不做”的配置文件,但是(1)我不知道我应该在里面写什么来禁止 ProGuard 做任何事情和(2)我不认为这是一个好的解决方案。

【问题讨论】:

  • 出于好奇,这个用例是什么? runProguard 背后的理论是该决定与构建类型相关(例如,调试构建可能不运行 ProGuard,而发布构建运行)。
  • @CommonsWare 我使用“两个级别”的调试配置。第一个基于构建类型:如果 buildconfig 是调试的,则打印应用程序中的日志调用。然后第二个“级别”允许我调试和跟踪问题(ProGuard 关闭),而如果启用 ProGuard,这个过程显然是不可能的。关键是我希望有两个带有“ProGuard off”配置的 apk 与 release buildconfig 一起工作 - 这样我就可以关闭 buildconfig release PG,打开 buildconfig release PG(要发布的那个)和 buildconfig调试 PG 关闭。
  • 但这不只是一种新的构建类型吗?您可以创建自己的构建类型,具有不同的应用程序 ID 后缀、不同的 ProGuard 设置等。
  • 啊哈我不知道,我认为口味是唯一可以创造的。这解决了一切,是的,谢谢。

标签: android gradle proguard


【解决方案1】:

对于您的场景,感觉就像您正在尝试对开发生命周期的不同阶段进行建模。这就是构建类型的真正用途。虽然 Gradle(以及 Android 版 Gradle)附带 debugrelease 构建类型,但您可以定义自己的:

buildTypes {
    debug {
      applicationIdSuffix ".d"
      versionNameSuffix "-debug"
    }

    release {
        signingConfig signingConfigs.release
    }

    mezzanine.initWith(buildTypes.release)

    mezzanine {
        applicationIdSuffix ".mezz"
        debuggable true
    }
}

在这里,我:

  • 配置 debugrelease 构建类型

  • release 克隆mezzanine 构建类型

  • 覆盖mezzanine 上的一些设置,替换它们最初在release 上定义的设置

【讨论】:

  • 嗨,有没有办法为不同的产品风格在发布变体中指定不同的设置?
  • @BharathMg:一般来说,产品风格与构建类型是正交的。 IOW,您想要对发布变体进行风格的任何更改也应该针对调试变体进行更改。话虽如此,可能有一些方法可以以适合您的方式处理特定设置。我建议你问一个新的 Stack Overflow 问题,在其中解释你的场景并询问如何完成它。
猜你喜欢
  • 2016-06-26
  • 1970-01-01
  • 2013-06-07
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-07
  • 1970-01-01
相关资源
最近更新 更多