From 3c6df812eea8012a6a1ef6504ced933e3e00699c Mon Sep 17 00:00:00 2001 From: REAndroid Date: Sat, 29 Apr 2023 20:19:12 +0200 Subject: [PATCH] dump/restore signatures as slit --- src/main/java/com/reandroid/apk/ApkJsonDecoder.java | 12 ++++++------ src/main/java/com/reandroid/apk/ApkJsonEncoder.java | 8 ++++---- .../java/com/reandroid/apk/ApkModuleXmlDecoder.java | 6 +++--- .../java/com/reandroid/apk/ApkModuleXmlEncoder.java | 8 ++++---- src/main/java/com/reandroid/apk/ApkUtil.java | 1 + 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/reandroid/apk/ApkJsonDecoder.java b/src/main/java/com/reandroid/apk/ApkJsonDecoder.java index 3a8d949..dbc8371 100644 --- a/src/main/java/com/reandroid/apk/ApkJsonDecoder.java +++ b/src/main/java/com/reandroid/apk/ApkJsonDecoder.java @@ -62,9 +62,9 @@ public class ApkJsonDecoder { if(signatureBlock == null){ return; } - apkModule.logMessage("Dumping signatures: " + ApkUtil.SIGNATURE_FILE_NAME); - File file = toSignatureFile(outDir); - signatureBlock.writeRaw(file); + apkModule.logMessage("Dumping signatures ..."); + File dir = toSignatureDir(outDir); + signatureBlock.writeSplitRawToDirectory(dir); } private void writePathMap(File dir) throws IOException { PathMap pathMap = new PathMap(); @@ -200,9 +200,9 @@ public class ApkJsonDecoder { String name = "public.xml"; return new File(file, name); } - private File toSignatureFile(File dir){ - File file = new File(dir, apkModule.getModuleName()); - return new File(file, ApkUtil.SIGNATURE_FILE_NAME); + private File toSignatureDir(File dir){ + dir = new File(dir, apkModule.getModuleName()); + return new File(dir, ApkUtil.SIGNATURE_DIR_NAME); } private File toPathMapJsonFile(File dir){ File file = new File(dir, apkModule.getModuleName()); diff --git a/src/main/java/com/reandroid/apk/ApkJsonEncoder.java b/src/main/java/com/reandroid/apk/ApkJsonEncoder.java index 6af21b4..2b96e21 100644 --- a/src/main/java/com/reandroid/apk/ApkJsonEncoder.java +++ b/src/main/java/com/reandroid/apk/ApkJsonEncoder.java @@ -50,14 +50,14 @@ public class ApkJsonEncoder { return module; } private void restoreSignatures(File dir, ApkModule apkModule){ - File file = new File(dir, ApkUtil.SIGNATURE_FILE_NAME); - if(!file.isFile()){ + File sigDir = new File(dir, ApkUtil.SIGNATURE_DIR_NAME); + if(!sigDir.isFile()){ return; } - logMessage("Loading signature: " + file.getName()); + logMessage("Loading signatures ..."); ApkSignatureBlock signatureBlock = new ApkSignatureBlock(); try { - signatureBlock.read(file); + signatureBlock.scanSplitFiles(sigDir); apkModule.setApkSignatureBlock(signatureBlock); } catch (IOException exception){ logError("Failed to load signatures: ", exception); diff --git a/src/main/java/com/reandroid/apk/ApkModuleXmlDecoder.java b/src/main/java/com/reandroid/apk/ApkModuleXmlDecoder.java index d3a36f3..85d006f 100644 --- a/src/main/java/com/reandroid/apk/ApkModuleXmlDecoder.java +++ b/src/main/java/com/reandroid/apk/ApkModuleXmlDecoder.java @@ -101,9 +101,9 @@ import java.util.*; if(signatureBlock == null){ return; } - logMessage("Dumping signatures: " + ApkUtil.SIGNATURE_FILE_NAME); - File file = new File(outDir, ApkUtil.SIGNATURE_FILE_NAME); - signatureBlock.writeRaw(file); + logMessage("Dumping signatures ..."); + File dir = new File(outDir, ApkUtil.SIGNATURE_DIR_NAME); + signatureBlock.writeSplitRawToDirectory(dir); } private void writePathMap(File dir) throws IOException { PathMap pathMap = new PathMap(); diff --git a/src/main/java/com/reandroid/apk/ApkModuleXmlEncoder.java b/src/main/java/com/reandroid/apk/ApkModuleXmlEncoder.java index 0b2db12..956fe5b 100644 --- a/src/main/java/com/reandroid/apk/ApkModuleXmlEncoder.java +++ b/src/main/java/com/reandroid/apk/ApkModuleXmlEncoder.java @@ -45,14 +45,14 @@ public class ApkModuleXmlEncoder { restoreSignatures(mainDirectory); } private void restoreSignatures(File dir) throws IOException { - File file = new File(dir, ApkUtil.SIGNATURE_FILE_NAME); - if(!file.isFile()){ + File sigDir = new File(dir, ApkUtil.SIGNATURE_DIR_NAME); + if(!sigDir.isFile()){ return; } ApkModule apkModule = getApkModule(); - apkModule.logMessage("Loading signature: " + file.getName()); + apkModule.logMessage("Loading signatures ..."); ApkSignatureBlock signatureBlock = new ApkSignatureBlock(); - signatureBlock.read(file); + signatureBlock.scanSplitFiles(sigDir); apkModule.setApkSignatureBlock(signatureBlock); } private void restorePathMap(File dir) throws IOException{ diff --git a/src/main/java/com/reandroid/apk/ApkUtil.java b/src/main/java/com/reandroid/apk/ApkUtil.java index 3ba8fa0..d01bec3 100644 --- a/src/main/java/com/reandroid/apk/ApkUtil.java +++ b/src/main/java/com/reandroid/apk/ApkUtil.java @@ -194,6 +194,7 @@ public class ApkUtil { public static final String TAG_INTEGER_ARRAY = "integer-array"; public static final String SIGNATURE_FILE_NAME = "signatures" + ApkSignatureBlock.FILE_EXT; + public static final String SIGNATURE_DIR_NAME = "signatures"; private static final int MAX_FILE_NAME_LENGTH = 50; }