android - 从Android应用程序中的gradle访问buildConfigField

标签 android gradle android-buildconfig

我正在Android Studio中构建一个多应用程序项目,并使用Gradle进行版本控制。

我用

versionName "1.0"
versionCode 2
versionNameSuffix = ".alpha1"

我也用
def getDate() {
    new Date().format('yyyyMMddHHmmss')
}


buildConfigField 'String', 'BUILD_DATE', '\"' + getDate() + '\"'

一切正常。

我可以通过使用代码访问那些
String vN = BuildConfig.versionName;
int vC = BuildConfig.versionCode;
String bD = BuildConfig.BUILD_DATE;

我遇到的一个问题是,有时我需要从另一个应用程序访问此信息。

我可以使用获取versionName和versionCode
PackageInfo pi = this.getPackageManager().getPackageInfo(packageName, 0);
String vN = pi.versionName;
int vC = pi.versionCode;

有什么办法可以从另一个应用程序访问BUILD_DATE?

最佳答案

不容易。

最简单的方法是从buildConfigField切换到resValue,或者将相同的getDate()值放入buildConfigFieldresValue中。 resValue将允许您使用日期定义字符串资源。然后,需要该值的应用程序可以使用getPackageManager().getResourcesForApplication()获取Resources对象,您可以从中读取字符串资源值。

如果您的其余代码可以使用字符串资源,则可以从buildConfigField切换到resValue。如果这样做不方便,则在BuildConfig和字符串资源中同时包含构建日期将是一小部分数据重复,但恕不大问题IMHO。

关于android - 从Android应用程序中的gradle访问buildConfigField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42427385/

相关文章:

android - context 和 INSTANCE 静态声明的内存泄漏,我该如何改变它?

android - 从 Android Gradle 访问 Azure DevOps 变量

android - 使用gradle将参数中的属性放入具有默认值的android构建配置中?

android - 从 Android 中的两个不同 Activity 访问已启动服务的结果

java - 如何根据最后一个 "/"将字符串分成两部分

android - kotlin 和 ArgumentCaptor - IllegalStateException

android - 是否需要明确支持AndroidX

android - 从 .gradle 脚本打印消息到 Gradle Sync 日志

android - 使用 Gradle 更改 Android Studio 中的 BuildConfig 文件

android - android SDK 24 的 buildToolsVersion 是什么?