Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么ZipEntry显示APK文件的编译时间不正确?_Java_Android - Fatal编程技术网

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

Java 为什么ZipEntry显示APK文件的编译时间不正确?,java,android,Java,Android,Im使用此代码显示应用程序编译日期: 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() + (36

Im使用此代码显示应用程序编译日期:

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升级后)?每次都会显示

1979年11月30日02:00:00

??? 我已经清理并重建了这个项目。
这里怎么了?

好的,我有一个答案:

最好的选择是在Gradle中使用时间戳

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


谢谢:)

好的,我有一个答案:

最好的选择是在Gradle中使用时间戳

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

谢谢:)

根据,只要在Gradle属性中设置“android.keepTimestampsInApk=true”,获取构建日期的ZipFile方法仍然可以使用

Gradle故意将生成时间戳归零,除非设置了该属性。

根据,只要在Gradle属性中设置了“android.keepTimestampsInApk=true”,就仍然可以使用ZipFile方法获取生成日期


Gradle故意将生成时间戳归零,除非设置了该属性。

为什么要在时间中添加
3600000*2
?83.3333天?从什么时候开始,清单日期就是编译日期了?我用的是:使用清单日期作为编译日期,或者在时间中添加
3600000*2
,这都是毫无意义的。添加3600000*2只适合我,不管怎样,升级时需要清除选项。为什么要在时间中添加
3600000*2
?83.3333天?从什么时候开始,清单日期就是编译日期了?我使用的是:使用清单日期作为编译日期,或者在时间中添加
3600000*2
,这都是毫无意义的。添加3600000*2只适合我,不必担心,作为Gradle更新时所需的清除选项。