使用gradle创建属性文件

时间:2014-02-28 23:28:59

标签: android gradle android-studio

我想使用gradle创建名为“dev.properties”的属性文件。这是我的build.gradle代码:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.8.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 16
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 16
    }

    def prop = new Properties()
    def propFile = new File("dev.properties");
    propFile.createNewFile();
    prop.store(propFile.newWriter(), null);

    buildTypes {
        release {
            runProguard false
            proguardFile getDefaultProguardFile('proguard-android.txt')
        }
    }
}

当我右键单击build.gradle并选择run时,将创建该文件。但是,当我制作整个项目时,它不是创建的。怎么样?

我正在使用android studio 0.4.6和gradle 1.10。

1 个答案:

答案 0 :(得分:12)

它正在创建文件,而不是您期望的位置。您的脚本正在当前工作目录中创建文件,在Android Studio中将创建该文件,该文件将在Android Studio的发行版中。有一个错误提交,以使Android Studio与命令行(https://code.google.com/p/android/issues/detail?id=65552)保持一致,并将工作目录放在项目根目录(好吧,假设您在发出Gradle命令时设置了工作目录),但修复实际上很难,真正的答案是你可能永远不会隐含地依赖于工作目录,这样你就可以使你的构建尽可能无懈可击。

如果您这样做:

def propFile = new File("${project.rootDir}/dev.properties")

它会将文件放在项目的根目录中。还有project.projectDir,它将是你的模块目录;有关您可以使用的内容的详细信息,请参阅http://www.gradle.org/docs/current/dsl/org.gradle.api.Project.html

作为旁注,您应该记住,每次评估构建文件时都会运行(因为每次运行构建脚本时都会执行android块),这可能比您更频繁想。这不仅仅是建立时间;它也是项目导入时间,也是Android Studio决定评估构建文件的任何时候,当您打开项目时以及单击使用Gradle文件同步项目按钮时,会发生这种情况。

此外,您应该考虑在构建过程的哪个阶段您希望它发生:是脚本评估时间,还是您希望它在Gradle完成分析并准备好实际开始构建之后运行?您可以阅读http://www.gradle.org/docs/current/userguide/build_lifecycle.html以了解更多相关信息。

很抱歉,我知道当你想要获得一些东西时,有很多信息可供你使用,但这些概念很快就会帮助你。