我想使用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。
答案 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以了解更多相关信息。
很抱歉,我知道当你想要获得一些东西时,有很多信息可供你使用,但这些概念很快就会帮助你。