【问题标题】:How to get the current source directory in gradle?如何在 gradle 中获取当前源目录?
【发布时间】:2014-12-18 17:43:31
【问题描述】:

我在 gradle 构建文件中有不同的风格:

我想在每个 app/src/flavor/ 目录下放一个 .properties 文件

 app
   src
      flavor1/
         java/
         app.properties
      flavor2/
         java/
         app.properties

然后在任务中使用对该文件的引用。

如何在 groovy/gradle 中引用当前风味的目录?

【问题讨论】:

  • 没有“当前风味”的概念。您在build.gradle 中创建的是一个表示任务的对象模型。只有在创建对象模型之后才考虑任务,并且只有然后才有“当前风格”的概念。但是到那时,您的build.gradle 代码早已运行。例外情况是您创建的任何自定义任务,这些任务通常是为每种风格创建的(例如,通过迭代变体)。
  • 我应该研究什么概念,以弄清楚如何在 gradle 脚本中全局引用 app.properties 文件?
  • 即兴发挥,我不知道如何处理每个风味的属性文件。你想用 per-flavor 属性文件来完成什么?
  • 我在其中有 build.config 值。我使用风味来表示不同的应用程序,因此我使用该文件将可配置数据放入每个应用程序中。
  • “我有 build.config 值”——我不知道这是什么意思。如果您的意思是BuildConfig,则应在您的build.gradle 文件中定义。我也看不到在build.gradle 中拥有特定于风味的代码有什么好处,转过身来必须阅读特定于风味的属性文件。话虽如此,欢迎您拥有每个风格的属性文件,但我会将它们放在模块根目录中(例如,${flavor}.properties),而不是尝试将它们放在源集中。

标签: android groovy gradle android-studio


【解决方案1】:

如果您真的想要每种口味的属性,这里有一个现成的方法。

第 1 步:列出您的口味清单。出于此答案的目的,我将使用 vanillachocolate

第 2 步:在模块根目录中为每种风格创建一个属性文件(即vanilla.propertieschocolate.properties)。

第 3 步:在您的 productFlavors 闭包中,您将拥有加载该风味的属性并使用它们的代码,使用如下代码:

productFlavors {
    vanilla {
        applicationId "com.commonsware.android.gradle.hello.vanilla"

        def propFile = rootProject.file('vanilla.properties')

        if (propFile.canRead()) {
            def Properties flavorProps = new Properties()

            flavorProps.load(new FileInputStream(propFile))

            // you can now access flavorProps[...] for various string keys
            // identified here as ..., like flavorProps['foo']
        }
    }

    // repeat for chocolate and other flavors
}

上面代码中我能想到的唯一问题是我对rootProject 的使用。我的所有这些 Gradle 技巧的示例代码都是针对没有模块的项目,但 Android Studio 项目通常会在 app/ 模块(也称为子项目)中设置您的代码。在那种情况下我还没有试验过这段代码,我不知道rootProject 是指模块还是顶级项目目录。除了rootProject 之外,可能还有其他值可用于访问模块。

【讨论】:

  • 生病测试一下看看...我已经朝着这个方向前进了,将所有东西都设置在 productFlavors 闭包下。这确实会让我更接近。 ty
猜你喜欢
  • 2010-10-26
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 2011-01-07
  • 2011-06-19
相关资源
最近更新 更多