如何在gradle中获取当前源目录?

时间:2014-12-18 17:43:32

标签: android groovy gradle android-studio

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

如果你真的想要每种风味的特性,这里是一种袖手旁观的方法。

步骤1:提出你的口味清单。出于本答案的目的,我将使用vanillachocolate

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

步骤3:在你的productFlavors闭包中,你将拥有加载该flavor的属性并使用它们的代码,使用类似的东西:

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/模块(a.k.a.,子项目)中使用您的代码进行设置。在那种情况下我还没有尝试过这段代码,我不知道rootProject是否会引用模块或顶级项目目录。除了rootProject之外,可以使用不同的值来访问模块。