From 958ab245aecb416a6a0e4e620a0cc5049950adf6 Mon Sep 17 00:00:00 2001 From: pubiqq <82187521+pubiqq@users.noreply.github.com> Date: Mon, 14 Oct 2024 22:32:12 +0300 Subject: [PATCH] fix(res): don't rename resource entries when useRawResName = true (PR #2306) --- .../core/xmlgen/ResTableBinaryParser.java | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ResTableBinaryParser.java b/jadx-core/src/main/java/jadx/core/xmlgen/ResTableBinaryParser.java index 1096cddd3..e854fbb9e 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/ResTableBinaryParser.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/ResTableBinaryParser.java @@ -425,20 +425,26 @@ public class ResTableBinaryParser extends CommonBinaryParser implements IResTabl return STUB_ENTRY; } - String resName = getResName(typeName, resRef, origKeyName); - ResourceEntry newResEntry = new ResourceEntry(resRef, pkg.getName(), typeName, resName, config); - ResourceEntry prevResEntry = resStorage.searchEntryWithSameName(newResEntry); - if (prevResEntry != null) { - newResEntry = newResEntry.copyWithId(); + ResourceEntry newResEntry; + if (useRawResName) { + newResEntry = new ResourceEntry(resRef, pkg.getName(), typeName, origKeyName, config); + } else { + String resName = getResName(typeName, resRef, origKeyName); + newResEntry = new ResourceEntry(resRef, pkg.getName(), typeName, resName, config); + ResourceEntry prevResEntry = resStorage.searchEntryWithSameName(newResEntry); + if (prevResEntry != null) { + newResEntry = newResEntry.copyWithId(); - // rename also previous entry for consistency - ResourceEntry replaceForPrevEntry = prevResEntry.copyWithId(); - resStorage.replace(prevResEntry, replaceForPrevEntry); - resStorage.addRename(replaceForPrevEntry); - } - if (!Objects.equals(origKeyName, newResEntry.getKeyName())) { - resStorage.addRename(newResEntry); + // rename also previous entry for consistency + ResourceEntry replaceForPrevEntry = prevResEntry.copyWithId(); + resStorage.replace(prevResEntry, replaceForPrevEntry); + resStorage.addRename(replaceForPrevEntry); + } + if (!Objects.equals(origKeyName, newResEntry.getKeyName())) { + resStorage.addRename(newResEntry); + } } + resStorage.add(newResEntry); return newResEntry; }