2017-02-23 67 views
0

我正在Android Studio中构建一个多应用项目,并使用Gradle进行版本控制。从Android应用中的Gradle访问buildConfigField

我用

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?

回答

0

不容易。

的最简单的方法将是任何一个开关从buildConfigFieldresValue,或者把相同getDate()值在两者buildConfigFieldresValueresValue将让你定义一个字符串资源和你的日期。然后,需要该值的应用程序可以使用getPackageManager().getResourcesForApplication()获取Resources对象,您可以从中读取字符串资源值。

如果其余代码可以使用字符串资源,则可以从buildConfigField切换到resValue。如果这样做会很不方便,在BuildConfig和字符串资源中生成日期都是数据重复的一小部分,但恕我直言,这不是一个大问题。

+0

这工作完美。谢谢! –