0

我正在 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 吗?

4

1 回答 1

0

不轻易。

最简单的方法是要么从buildConfigFieldto切换,要么在 a和resValue中放入相同的getDate()值。将允许您使用日期定义字符串资源。然后,需要该值的应用程序可以使用获取一个对象,您可以从中读取字符串资源值。buildConfigFieldresValueresValuegetPackageManager().getResourcesForApplication()Resources

如果您的其余代码可以使用字符串资源,您只需从 切换buildConfigFieldresValue. 如果这样做不方便,那么在字符串资源中BuildConfig和在字符串资源中都有构建日期将是少量的数据重复,但恕我直言,这不是一个大问题。

于 2017-02-23T22:32:55.653 回答