improve merging performance #26

This commit is contained in:
REAndroid 2023-04-14 21:12:59 +02:00
parent 74c0f533de
commit f0088a0279
3 changed files with 7 additions and 2 deletions

View File

@ -39,6 +39,7 @@ public class ApkBundle {
} }
ApkModule result=new ApkModule(generateMergedModuleName(), new APKArchive()); ApkModule result=new ApkModule(generateMergedModuleName(), new APKArchive());
result.setAPKLogger(apkLogger); result.setAPKLogger(apkLogger);
result.setLoadDefaultFramework(false);
mergeStringPools(result); mergeStringPools(result);

View File

@ -381,10 +381,15 @@ package com.reandroid.arsc.chunk;
} }
setName(packageBlock.getName()); setName(packageBlock.getName());
getLibraryBlock().merge(packageBlock.getLibraryBlock()); getLibraryBlock().merge(packageBlock.getLibraryBlock());
mergeSpecStringPool(packageBlock);
getSpecTypePairArray().merge(packageBlock.getSpecTypePairArray()); getSpecTypePairArray().merge(packageBlock.getSpecTypePairArray());
getOverlayableList().merge(packageBlock.getOverlayableList()); getOverlayableList().merge(packageBlock.getOverlayableList());
getStagedAliasList().merge(packageBlock.getStagedAliasList()); 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. * It is allowed to have duplicate type name therefore it is not recommend to use this.
* Lets depreciate to warn developer * Lets depreciate to warn developer

View File

@ -158,8 +158,7 @@ public class ValueHeader extends BlockItem implements JSONConvert<JSONObject> {
return; return;
} }
StringItem stringItem = stringPool.getOrCreate(name); StringItem stringItem = stringPool.getOrCreate(name);
setKey(stringItem.getIndex()); setKey(stringItem);
linkStringReference(stringItem);
} }
public void merge(ValueHeader valueHeader){ public void merge(ValueHeader valueHeader){
if(valueHeader == null || valueHeader ==this){ if(valueHeader == null || valueHeader ==this){