分享是让牛逼的人更牛逼。
做有质量技术交流平台,闲话少说~
欢迎进群交流,群号 414302560
初学者勿扰,谢谢~
很多时候,发个包给测试,明明修复了bug,但却一直在说”我这还不行”。很多时候由于版本没有变更,很难判断当前正在运行的app是不是最新的打包产物。所以如果能够在线下的版本中显示app的打包时间,这样就能节省好多不必要的沟通。
上代码。原理是获得打包签名文件的生成时间。
/**
* 获得app的打包时间
*
* @return
*/
private String getAppBuildTime() {
String result = "";
try {
ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(),0);
ZipFile zf = new ZipFile(ai.sourceDir);
ZipEntry ze = zf.getEntry("META-INF/MANIFEST.MF");
long time = ze.getTime();
SimpleDateFormat formatter = (SimpleDateFormat) SimpleDateFormat.getInstance();
formatter.applyPattern("yyyy/MM/dd HH:mm:ss");
result = formatter.format(new java.util.Date(time));
zf.close();
} catch (Exception e) {
}
return result;
}
上述方法貌似在5.0之后不好用,所以现在建议使用Gradle生成打包时间,然后再引用。核心代码如下:
buildTypes {
release {
buildConfigField("String", "releaseTime", "\""+new Date().format("yyyy/MM/dd HH:mm:ss")+"\"")
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
....
}
主要是使用buildConfigField生成打包时间。
然后使用 TextView.setText(BuildConfig.releaseTime);