dump/restore signatures as slit

This commit is contained in:
REAndroid 2023-04-29 20:19:12 +02:00
parent d41bc5857c
commit 3c6df812ee
5 changed files with 18 additions and 17 deletions

View File

@ -62,9 +62,9 @@ public class ApkJsonDecoder {
if(signatureBlock == null){ if(signatureBlock == null){
return; return;
} }
apkModule.logMessage("Dumping signatures: " + ApkUtil.SIGNATURE_FILE_NAME); apkModule.logMessage("Dumping signatures ...");
File file = toSignatureFile(outDir); File dir = toSignatureDir(outDir);
signatureBlock.writeRaw(file); signatureBlock.writeSplitRawToDirectory(dir);
} }
private void writePathMap(File dir) throws IOException { private void writePathMap(File dir) throws IOException {
PathMap pathMap = new PathMap(); PathMap pathMap = new PathMap();
@ -200,9 +200,9 @@ public class ApkJsonDecoder {
String name = "public.xml"; String name = "public.xml";
return new File(file, name); return new File(file, name);
} }
private File toSignatureFile(File dir){ private File toSignatureDir(File dir){
File file = new File(dir, apkModule.getModuleName()); dir = new File(dir, apkModule.getModuleName());
return new File(file, ApkUtil.SIGNATURE_FILE_NAME); return new File(dir, ApkUtil.SIGNATURE_DIR_NAME);
} }
private File toPathMapJsonFile(File dir){ private File toPathMapJsonFile(File dir){
File file = new File(dir, apkModule.getModuleName()); File file = new File(dir, apkModule.getModuleName());

View File

@ -50,14 +50,14 @@ public class ApkJsonEncoder {
return module; return module;
} }
private void restoreSignatures(File dir, ApkModule apkModule){ private void restoreSignatures(File dir, ApkModule apkModule){
File file = new File(dir, ApkUtil.SIGNATURE_FILE_NAME); File sigDir = new File(dir, ApkUtil.SIGNATURE_DIR_NAME);
if(!file.isFile()){ if(!sigDir.isFile()){
return; return;
} }
logMessage("Loading signature: " + file.getName()); logMessage("Loading signatures ...");
ApkSignatureBlock signatureBlock = new ApkSignatureBlock(); ApkSignatureBlock signatureBlock = new ApkSignatureBlock();
try { try {
signatureBlock.read(file); signatureBlock.scanSplitFiles(sigDir);
apkModule.setApkSignatureBlock(signatureBlock); apkModule.setApkSignatureBlock(signatureBlock);
} catch (IOException exception){ } catch (IOException exception){
logError("Failed to load signatures: ", exception); logError("Failed to load signatures: ", exception);

View File

@ -101,9 +101,9 @@ import java.util.*;
if(signatureBlock == null){ if(signatureBlock == null){
return; return;
} }
logMessage("Dumping signatures: " + ApkUtil.SIGNATURE_FILE_NAME); logMessage("Dumping signatures ...");
File file = new File(outDir, ApkUtil.SIGNATURE_FILE_NAME); File dir = new File(outDir, ApkUtil.SIGNATURE_DIR_NAME);
signatureBlock.writeRaw(file); signatureBlock.writeSplitRawToDirectory(dir);
} }
private void writePathMap(File dir) throws IOException { private void writePathMap(File dir) throws IOException {
PathMap pathMap = new PathMap(); PathMap pathMap = new PathMap();

View File

@ -45,14 +45,14 @@ public class ApkModuleXmlEncoder {
restoreSignatures(mainDirectory); restoreSignatures(mainDirectory);
} }
private void restoreSignatures(File dir) throws IOException { private void restoreSignatures(File dir) throws IOException {
File file = new File(dir, ApkUtil.SIGNATURE_FILE_NAME); File sigDir = new File(dir, ApkUtil.SIGNATURE_DIR_NAME);
if(!file.isFile()){ if(!sigDir.isFile()){
return; return;
} }
ApkModule apkModule = getApkModule(); ApkModule apkModule = getApkModule();
apkModule.logMessage("Loading signature: " + file.getName()); apkModule.logMessage("Loading signatures ...");
ApkSignatureBlock signatureBlock = new ApkSignatureBlock(); ApkSignatureBlock signatureBlock = new ApkSignatureBlock();
signatureBlock.read(file); signatureBlock.scanSplitFiles(sigDir);
apkModule.setApkSignatureBlock(signatureBlock); apkModule.setApkSignatureBlock(signatureBlock);
} }
private void restorePathMap(File dir) throws IOException{ private void restorePathMap(File dir) throws IOException{

View File

@ -194,6 +194,7 @@ public class ApkUtil {
public static final String TAG_INTEGER_ARRAY = "integer-array"; 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_FILE_NAME = "signatures" + ApkSignatureBlock.FILE_EXT;
public static final String SIGNATURE_DIR_NAME = "signatures";
private static final int MAX_FILE_NAME_LENGTH = 50; private static final int MAX_FILE_NAME_LENGTH = 50;
} }