我想使用 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 并选择运行时,该文件被创建。但是,当我制作整个项目时,它并没有创建。怎么会?
我正在使用带有 gradle 1.10 的 android studio 0.4.6。
最佳答案
它正在创建文件,只是不在您期望的位置。您的脚本在当前工作目录和 Android Studio 中创建文件,该文件将在 Android Studio 的分发版中。有一个 bug 使 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
block ),这可能会更多经常比你想要的。这不仅仅是构建时间;这也是项目导入时间,以及任何时候 Android Studio 决定评估构建文件的时间,这发生在您打开项目以及单击 Sync Project with Gradle Files 按钮时。
此外,您应该考虑希望它在构建过程的哪个阶段发生:是脚本评估时间,还是您希望它在 Gradle 完成分析并准备好实际开始构建之后运行?你可以阅读http://www.gradle.org/docs/current/userguide/build_lifecycle.html了解更多相关信息。
抱歉,我知道当您只是想开始做某事时,需要向您提供大量信息,但这些概念很快就会帮助您顺利完成任务。
关于android - 使用 gradle 创建属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22107769/