From f0088a0279a87a0a4adb9ad304c59a3d4a282e1e Mon Sep 17 00:00:00 2001 From: REAndroid Date: Fri, 14 Apr 2023 21:12:59 +0200 Subject: [PATCH] improve merging performance #26 --- src/main/java/com/reandroid/apk/ApkBundle.java | 1 + src/main/java/com/reandroid/arsc/chunk/PackageBlock.java | 5 +++++ src/main/java/com/reandroid/arsc/value/ValueHeader.java | 3 +-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/reandroid/apk/ApkBundle.java b/src/main/java/com/reandroid/apk/ApkBundle.java index 92dee24..05853de 100644 --- a/src/main/java/com/reandroid/apk/ApkBundle.java +++ b/src/main/java/com/reandroid/apk/ApkBundle.java @@ -39,6 +39,7 @@ public class ApkBundle { } ApkModule result=new ApkModule(generateMergedModuleName(), new APKArchive()); result.setAPKLogger(apkLogger); + result.setLoadDefaultFramework(false); mergeStringPools(result); diff --git a/src/main/java/com/reandroid/arsc/chunk/PackageBlock.java b/src/main/java/com/reandroid/arsc/chunk/PackageBlock.java index cc3bd96..ad77dd5 100755 --- a/src/main/java/com/reandroid/arsc/chunk/PackageBlock.java +++ b/src/main/java/com/reandroid/arsc/chunk/PackageBlock.java @@ -381,10 +381,15 @@ package com.reandroid.arsc.chunk; } setName(packageBlock.getName()); getLibraryBlock().merge(packageBlock.getLibraryBlock()); + mergeSpecStringPool(packageBlock); getSpecTypePairArray().merge(packageBlock.getSpecTypePairArray()); getOverlayableList().merge(packageBlock.getOverlayableList()); getStagedAliasList().merge(packageBlock.getStagedAliasList()); } + private void mergeSpecStringPool(PackageBlock coming){ + this.getSpecStringPool().addStrings( + coming.getSpecStringPool().toStringList()); + } /** * It is allowed to have duplicate type name therefore it is not recommend to use this. * Lets depreciate to warn developer diff --git a/src/main/java/com/reandroid/arsc/value/ValueHeader.java b/src/main/java/com/reandroid/arsc/value/ValueHeader.java index b0d5ce6..f03acea 100644 --- a/src/main/java/com/reandroid/arsc/value/ValueHeader.java +++ b/src/main/java/com/reandroid/arsc/value/ValueHeader.java @@ -158,8 +158,7 @@ public class ValueHeader extends BlockItem implements JSONConvert { return; } StringItem stringItem = stringPool.getOrCreate(name); - setKey(stringItem.getIndex()); - linkStringReference(stringItem); + setKey(stringItem); } public void merge(ValueHeader valueHeader){ if(valueHeader == null || valueHeader ==this){