为什么ZipEntry显示APK文件的编译时间不正确?

时间:2016-09-21 07:46:47

标签: java android

我使用此代码显示App编译日期:

ApplicationInfo ai = a.getPackageManager().getApplicationInfo(a.getPackageName(), 0);
        ZipFile zf = new ZipFile(ai.sourceDir);
        ZipEntry ze = zf.getEntry("META-INF/MANIFEST.MF");
        long time = ze.getTime() + (3600000 * 2);
        Log.i("date", new SimpleDateFormat("HH:mm:ss dd.MM.yyyy").format(new Date(time)));
        zf.close();

昨天一切都很好,但今天(在Android Studio升级之后???)每次显示

  

02:00:00 1979年11月30日

??? 我已经完成了Cleaned和Rebuilt项目。 这有什么不对?

2 个答案:

答案 0 :(得分:1)

好的我有一个答案:How to write build time stamp into apk

最佳选择是在Gradle中使用Timestamp

android {
defaultConfig {
    buildConfigField "long", "TIMESTAMP", System.currentTimeMillis() + "L"
}

}

Date buildDate = new Date(BuildConfig.TIMESTAMP);

谢谢:)

答案 1 :(得分:1)

根据response #3 on this Google Issue,只要在Gradle属性中设置了“ android.keepTimestampsInApk = true”,获取构建日期的ZipFile方法仍然可以使用。

除非设置了该属性,否则Gradle会故意将构建时间戳归零。