From ee03ff9eaa172e8f92d2654524a2dbeda8e183ca Mon Sep 17 00:00:00 2001 From: REAndroid Date: Sat, 29 Apr 2023 19:30:19 +0200 Subject: [PATCH] implement progress for archive2 --- .../com/reandroid/archive2/writer/ApkWriter.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/com/reandroid/archive2/writer/ApkWriter.java b/src/main/java/com/reandroid/archive2/writer/ApkWriter.java index d90b1c5..ae6d461 100644 --- a/src/main/java/com/reandroid/archive2/writer/ApkWriter.java +++ b/src/main/java/com/reandroid/archive2/writer/ApkWriter.java @@ -18,6 +18,7 @@ package com.reandroid.archive2.writer; import com.reandroid.apk.APKLogger; import com.reandroid.apk.RenamedInputSource; import com.reandroid.archive.InputSource; +import com.reandroid.archive.WriteProgress; import com.reandroid.archive2.ZipSignature; import com.reandroid.archive2.block.ApkSignatureBlock; import com.reandroid.archive2.block.EndRecord; @@ -37,6 +38,7 @@ public class ApkWriter extends ZipFileOutput { private ZipAligner zipAligner; private ApkSignatureBlock apkSignatureBlock; private APKLogger apkLogger; + private WriteProgress writeProgress; public ApkWriter(File file, Collection sourceList) throws IOException { super(file); @@ -113,6 +115,10 @@ public class ApkWriter extends ZipFileOutput { BufferFileOutput output = new BufferFileOutput(bufferFile); BufferFileInput input = new BufferFileInput(bufferFile); for(OutputSource outputSource:outputList){ + InputSource inputSource = outputSource.getInputSource(); + onCompressFileProgress(inputSource.getAlias(), + inputSource.getMethod(), + output.position()); outputSource.makeBuffer(input, output); } output.close(); @@ -163,6 +169,15 @@ public class ApkWriter extends ZipFileOutput { return new OutputSource(inputSource); } + public void setWriteProgress(WriteProgress writeProgress){ + this.writeProgress = writeProgress; + } + private void onCompressFileProgress(String path, int mode, long writtenBytes) { + if(writeProgress!=null){ + writeProgress.onCompressFile(path, mode, writtenBytes); + } + } + APKLogger getApkLogger(){ return apkLogger; }