0

我希望我的 Android 应用程序在运行时知道应用程序的构建时间。我是 Gradle 的新手,但它看起来非常灵活,我认为无需任何外部帮助程序或令牌替换就可以实现这一点。

我的想法是在某种 Gradle 预构建任务中计算时间戳字符串。然后我想将此字符串作为系统属性传递给 Java 应用程序。例如:

def timestamp = ...
systemProperty 'my.build.timestamp' timestamp

然后在 Java 中检索运行时的时间戳:

String iWasBuiltAt = System.getProperty("my.build.timestamp");

我将如何编写必要的 Gradle 代码来实现这一目标?更具体地说,在哪里/如何调用我的自定义任务,是否可以以上述方式添加系统属性。

4

1 回答 1

4

下面将向buildTime您的 BuildConfig 类添加一个常量(该类由构建系统自动生成)。

defaultConfig {
    buildConfig  "public final static String buildTime = \"" + new Date() + "\";"
}

在任何 Android Java 文件中,您都可以像这样使用它(构建配置在您必须导入的应用程序的默认包中):

Log.v("foo", "buildtime:" + BuildConfig.buildTime);

您可以使用 groovy 日期格式化函数来以不同方式格式化日期。您也可以将其更改为存储纪元毫秒,然后在 Java 中对其进行解析。

defaultConfig意味着这将添加每个buildType.

在此处阅读有关构建类型defaultConfig等的更多信息:http ://tools.android.com/tech-docs/new-build-system/user-guide

不知道你为什么想在应用程序中知道这一点。我认为使用版本控制系统的修订号或哈希可能比日期更有意义。

于 2013-10-11T20:37:04.367 回答