【问题标题】:Determine build types and exclude resources in build.gradle在 build.gradle 中确定构建类型并排除资源
【发布时间】:2014-07-28 21:22:41
【问题描述】:

我在我的build.gradle 文件(app 目录中的那个)中定义了productFlavors。每种风味都有一个对应的res/raw 目录,其中包含与构建类型(调试、测试和发布)相对应的.properties 文件。在我的main/res/raw 目录中,我有build.properties。这是目录结构的示意图:

    • 风味1
      • 资源
        • 原始
          • dev.properties
          • 产品属性
          • test.properties
    • 风味2
      • 资源
        • 原始
          • dev.properties
          • ...
    • ...
    • 主要
      • 资源
        • 原始
          • build.properties

我想将<flavor>/res/raw/<build_type>.properties 的内容复制到main/res/raw/build.properties 中,并且只将build.properties 部署到APK 中。

为了复制正确的<build_type>.properties 文件,我如何确定正在从build.gradle 构建哪个构建变体?

如何将<flavor>/res/raw 文件夹排除在APK 中?

【问题讨论】:

标签: android gradle android-gradle-plugin


【解决方案1】:

您可以拥有用于风味 + 构建类型组合的文件夹,这样您就可以做您想做的事,而无需复制和重命名文件:

src
  flavor1
  flavor1Debug
    res
      raw
        build.properties
  flavor1Prod
    res
      raw
        build.properties
  flavor2
  flavor2Debug
    res
      raw
        build.properties

等等

【讨论】:

  • 啊,好的。我觉得我应该想到这一点。 :P 在您的示例中,flavor1Debugflavor1Prod 是嵌套在 flavor1 下,还是在同一目录级别?
  • 您的解决方案不是我想要的。再次查看我的代码后,我意识到我确实希望在编译时可以使用三个版本的属性文件。例如,我有时需要访问prod.properties 并在运行调试构建时使用这些值。因此,我不能简单地将<flavor>/res/raw/<environment>.properties 的内容硬编码为<buildVariant>/res/raw/build.properties。我仍然想知道我的问题的答案,而不是简单的替代方案。你的解决方案没有错(所以+1),但它不符合我的要求。
  • 要回答您的第一个问题,尽管您可能已经想通了,flavor1Debug 文件夹与 flavor1 文件夹并排放置,而不是位于其下方。为了对您的第二个问题提供一些见解,我认为您必须以不同的方式考虑它-不要考虑“正在构建什么变体”,而是构建一个执行复制的任务,并找到正确的变体- 使其依赖的特定任务。抱歉,我并不是故意含糊其辞,但是我需要进行一些研究才能弄清楚该怎么做。我相信有获取当前变体的 API。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-23
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
相关资源
最近更新 更多