From 3e31bb8bffe3005ececd00faaf0adc9df0440559 Mon Sep 17 00:00:00 2001 From: REAndroid Date: Fri, 28 Apr 2023 20:03:48 +0200 Subject: [PATCH] link only string types #36 --- src/main/java/com/reandroid/apk/ResourceIds.java | 10 ++++++++-- .../java/com/reandroid/arsc/chunk/PackageBlock.java | 2 +- .../com/reandroid/arsc/container/SpecTypePair.java | 5 ++++- src/main/java/com/reandroid/arsc/value/ValueItem.java | 4 +++- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/reandroid/apk/ResourceIds.java b/src/main/java/com/reandroid/apk/ResourceIds.java index d481d04..7ebcc87 100644 --- a/src/main/java/com/reandroid/apk/ResourceIds.java +++ b/src/main/java/com/reandroid/apk/ResourceIds.java @@ -742,9 +742,15 @@ import java.util.*; writer.write(""); } @Override diff --git a/src/main/java/com/reandroid/arsc/chunk/PackageBlock.java b/src/main/java/com/reandroid/arsc/chunk/PackageBlock.java index 0ed69f5..c23028b 100755 --- a/src/main/java/com/reandroid/arsc/chunk/PackageBlock.java +++ b/src/main/java/com/reandroid/arsc/chunk/PackageBlock.java @@ -241,7 +241,7 @@ public class PackageBlock extends Chunk private void createEntryGroupMap(Map map){ map.clear(); for(SpecTypePair specTypePair:listAllSpecTypePair()){ - map.putAll(specTypePair.createEntryGroups()); + map.putAll(specTypePair.createEntryGroups(true)); } } public Map getEntriesGroupMap(){ diff --git a/src/main/java/com/reandroid/arsc/container/SpecTypePair.java b/src/main/java/com/reandroid/arsc/container/SpecTypePair.java index d23ed02..05d1ada 100755 --- a/src/main/java/com/reandroid/arsc/container/SpecTypePair.java +++ b/src/main/java/com/reandroid/arsc/container/SpecTypePair.java @@ -68,10 +68,13 @@ public class SpecTypePair extends BlockContainer } } public Map createEntryGroups(){ + return createEntryGroups(false); + } + public Map createEntryGroups(boolean skipNullEntries){ Map map = new HashMap<>(); for(TypeBlock typeBlock:listTypeBlocks()){ EntryArray entryArray = typeBlock.getEntryArray(); - for(Entry entry:entryArray.listItems()){ + for(Entry entry:entryArray.listItems(skipNullEntries)){ if(entry==null){ continue; } diff --git a/src/main/java/com/reandroid/arsc/value/ValueItem.java b/src/main/java/com/reandroid/arsc/value/ValueItem.java index 1a1cc26..5dfdf32 100755 --- a/src/main/java/com/reandroid/arsc/value/ValueItem.java +++ b/src/main/java/com/reandroid/arsc/value/ValueItem.java @@ -42,7 +42,9 @@ import java.util.Objects; } void linkTableStrings(TableStringPool tableStringPool){ - linkStringReference(tableStringPool); + if(getValueType() == ValueType.STRING){ + linkStringReference(tableStringPool); + } } public void onRemoved(){ unLinkStringReference();