Remove changing uids/timestamps from zip/jar files
Pass -X to zip so that Unix UID/GID and extra timestamps aren't
saved into the zip files.
Add a new option to zipalign, -t, to replace all timestamps with static
timestamps (2008 Jan 1 00:00:00). Use this for all non-APK zip files.
APK zip timestamps are set based on the certificate date in SignApk.
Bug: 24201956
Change-Id: Ifb619fc499ba9d99fc624f2acd5f8de36d78ef8e
diff --git a/tools/zipalign/ZipFile.cpp b/tools/zipalign/ZipFile.cpp
index 3c5ec15..0ca4d0d 100644
--- a/tools/zipalign/ZipFile.cpp
+++ b/tools/zipalign/ZipFile.cpp
@@ -359,7 +359,7 @@
*/
status_t ZipFile::addCommon(const char* fileName, const void* data, size_t size,
const char* storageName, int sourceType, int compressionMethod,
- ZipEntry** ppEntry)
+ bool removeTime, ZipEntry** ppEntry)
{
ZipEntry* pEntry = NULL;
status_t result = NO_ERROR;
@@ -499,8 +499,12 @@
*/
pEntry->setDataInfo(uncompressedLen, endPosn - startPosn, crc,
compressionMethod);
- modWhen = getModTime(inputFp ? fileno(inputFp) : fileno(mZipFp));
- pEntry->setModWhen(modWhen);
+ if (removeTime) {
+ pEntry->removeTimestamps();
+ } else {
+ modWhen = getModTime(inputFp ? fileno(inputFp) : fileno(mZipFp));
+ pEntry->setModWhen(modWhen);
+ }
pEntry->setLFHOffset(lfhPosn);
mEOCD.mNumEntries++;
mEOCD.mTotalNumEntries++;
@@ -539,7 +543,7 @@
* If "ppEntry" is non-NULL, a pointer to the new entry will be returned.
*/
status_t ZipFile::add(const ZipFile* pSourceZip, const ZipEntry* pSourceEntry,
- int padding, ZipEntry** ppEntry)
+ int padding, bool removeTime, ZipEntry** ppEntry)
{
ZipEntry* pEntry = NULL;
status_t result;
@@ -571,6 +575,8 @@
if (result != NO_ERROR)
goto bail;
}
+ if (removeTime)
+ pEntry->removeTimestamps();
/*
* From here on out, failures are more interesting.
@@ -646,7 +652,7 @@
* If "ppEntry" is non-NULL, a pointer to the new entry will be returned.
*/
status_t ZipFile::addRecompress(const ZipFile* pSourceZip, const ZipEntry* pSourceEntry,
- ZipEntry** ppEntry)
+ bool removeTime, ZipEntry** ppEntry)
{
ZipEntry* pEntry = NULL;
status_t result;
@@ -674,6 +680,9 @@
if (result != NO_ERROR)
goto bail;
+ if (removeTime)
+ pEntry->removeTimestamps();
+
/*
* From here on out, failures are more interesting.
*/