android - 使用 gradle 创建属性文件

标签 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 并选择运行时,该文件被创建。但是,当我制作整个项目时,它并没有创建。怎么会?

我正在使用带有 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/

相关文章:

android - 错误:无法解决:vectordrawable-animated

Android Studio 添加@androidx.annotation 和@android.support.annotation 问题

javascript - 'next_level_button' 与属性 android :layout_below (attr) reference 不兼容

java - 膨胀类 android.support.design.widget.NavigationView 时出错

android - 安装 .apk 文件问题

gradle - 此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 7.0 不兼容

gradle - 无法解析配置 ':compileClasspath' 的所有依赖项。 Gradle 不下载依赖项

Android gradle 和 roboguice 2.0 警告

android - 根据 Android 中的微调器选择删除 Firebase 子项

java - 记录输入流