diff options
author | Nicholas Lativy <nlativy@google.com> | 2016-05-16 17:57:51 +0000 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2016-05-17 16:14:34 +0000 |
commit | 3b4a2d5071ef90fa66b45417a1fe1a50cb0653f4 (patch) | |
tree | 21b1551abc78eaa8cb5d9a498c1a7775a0859097 /src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java | |
parent | 6baddebc38a27b17ccb1b189a1e20dbc46d837d5 (diff) |
Make AarGeneratorAction deterministic by zeroing zip entry timestamps.
ZipOutputStream#putNextEntry(ZipEntry) sets the modification time to
the current time if no time is set on the ZipEntry passed to it.
--
MOS_MIGRATED_REVID=122436300
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java')
-rw-r--r-- | src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java b/src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java index e3a1d9535f..4880d1c77e 100644 --- a/src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java +++ b/src/tools/android/java/com/google/devtools/build/android/AarGeneratorAction.java @@ -197,11 +197,13 @@ public class AarGeneratorAction { Path classes) throws IOException { try (final ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(aar.toFile()))) { ZipEntry manifestEntry = new ZipEntry("AndroidManifest.xml"); + manifestEntry.setTime(EPOCH); zipOut.putNextEntry(manifestEntry); zipOut.write(Files.readAllBytes(manifest)); zipOut.closeEntry(); ZipEntry classJar = new ZipEntry("classes.jar"); + classJar.setTime(EPOCH); zipOut.putNextEntry(classJar); zipOut.write(Files.readAllBytes(classes)); zipOut.closeEntry(); @@ -210,6 +212,7 @@ public class AarGeneratorAction { new ZipDirectoryWriter(zipOut, data.getResourceDir(), "res")); ZipEntry r = new ZipEntry("R.txt"); + r.setTime(EPOCH); zipOut.putNextEntry(r); zipOut.write(Files.readAllBytes(rtxt)); zipOut.closeEntry(); @@ -236,6 +239,7 @@ public class AarGeneratorAction { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { ZipEntry entry = new ZipEntry(new File(dirName, root.relativize(file).toString()).toString()); + entry.setTime(EPOCH); zipOut.putNextEntry(entry); zipOut.write(Files.readAllBytes(file)); zipOut.closeEntry(); @@ -247,6 +251,7 @@ public class AarGeneratorAction { throws IOException { ZipEntry entry = new ZipEntry(new File(dirName, root.relativize(dir).toString()) .toString() + "/"); + entry.setTime(EPOCH); zipOut.putNextEntry(entry); zipOut.closeEntry(); return FileVisitResult.CONTINUE; |