MCPcopy Create free account
hub / github.com/L-JINBIN/ApkDataMultiplexing / writeHeader

Method writeHeader

src/bin/zip/ZipMaker.java:229–272  ·  view source on GitHub ↗
(CenterFileHeader header)

Source from the content-addressed store, hash-verified

227 }
228
229 private void writeHeader(CenterFileHeader header) throws IOException {
230 setupNeedZip64(header);
231
232 _writeInt(LFH_SIG);
233 _writeShort(header.version());
234 _writeShort(header.generalPurposeFlag);
235 _writeShort(header.method);
236 _writeInt(header.time);
237 _writeInt(header.crc);
238 if (header.sizeNeedZip64) {
239 _writeUInt(MAX_ZIP_ENTRY_AND_ARCHIVE_SIZE);
240 _writeUInt(MAX_ZIP_ENTRY_AND_ARCHIVE_SIZE);
241 } else {
242 _writeUInt(header.compressedSize);
243 _writeUInt(header.size);
244 }
245 _writeShort(header.name.length);
246
247 byte[] extra;
248 if (header.sizeNeedZip64) {
249 byte[] data = new byte[2 * 8];
250 ZipUtil.writeLong(data, 0, header.size);
251 ZipUtil.writeLong(data, 8, header.compressedSize);
252 extra = ExtraDataRecord.set(header.extra, ZIP64_EXTENDED_INFO_HEADER_ID, data);
253 } else {
254 extra = ExtraDataRecord.remove(header.extra, ZIP64_EXTENDED_INFO_HEADER_ID);
255 }
256 // zipAlign
257 if (header.method == METHOD_STORED) {
258 int alignment;
259 if (header.isHost || new String(header.name, ZipConstant.UTF_8).endsWith(".so")) {
260 // -p: memory page alignment for stored shared object files
261 alignment = 4096;
262 } else {
263 alignment = 4;
264 }
265 long extraDataOffset = _getFilePointer() + 2 + header.name.length;
266 extra = align(alignment, extra, extraDataOffset);
267 }
268 _writeShort(extra.length);
269 _writeBytes(header.name);
270
271 _writeBytes(extra);
272 }
273
274 private void setupNeedZip64(CenterFileHeader header) {
275 if (forceZip64) {

Callers 2

putNextEntryMethod · 0.95
putNextRawEntryMethod · 0.95

Calls 11

setupNeedZip64Method · 0.95
_writeIntMethod · 0.95
_writeShortMethod · 0.95
_writeUIntMethod · 0.95
writeLongMethod · 0.95
setMethod · 0.95
removeMethod · 0.95
_getFilePointerMethod · 0.95
alignMethod · 0.95
_writeBytesMethod · 0.95
versionMethod · 0.80

Tested by

no test coverage detected