使用gradle创build属性文件

我想用gradle创build一个名为“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时,我右键单击build.gradle并select运行。 但是,当我制作整个项目时,并没有创build它。 怎么来的?

我使用Android Studio 0.4.6和Gradle 1.10。

Solutions Collecting From Web of "使用gradle创build属性文件"

这是创build文件,而不是你所期望的。 您的脚本正在当前工作目录中创build文件,而在Android Studio中,该文件将位于Android Studio的发行版中。 有一个bug使得Android Studio与命令行保持一致( https://code.google.com/p/android/issues/detail?id=65552 ),并将工作目录放在项目根目录下(好吧,假设当你发出Gradle命令时,你的工作目录被设置在那里),但是修复确实很困难,真正的答案是你可能永远不应该隐式地依赖工作目录,这样你就可以使你的构build尽可能的防弹。

如果你做这样的事情:

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

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

作为一个方面说明,你应该记住,每当构build文件被评估时(因为每次构build脚本运行时都会执行这个android块),这个运行会比你想要的更频繁。 这不仅仅是build立时间, 它也是项目导入的时间,任何时候Android Studio决定评估构build文件,这是在您打开项目时以及在单击带有Gradle Files同步项目button时发生的。

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

对不起,我知道当你试图去做某件事的时候,会有很多信息在你身上,但是这些概念很快就会帮助你。