From 0e161a43217cbfb85924b2440ee2d1397cf73665 Mon Sep 17 00:00:00 2001 From: REAndroid Date: Tue, 28 Mar 2023 06:22:17 -0400 Subject: [PATCH] decode unknown resource id as hex --- .../reandroid/arsc/chunk/xml/ResXmlPullParser.java | 7 +++++-- .../java/com/reandroid/arsc/decoder/Decoder.java | 12 ++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlPullParser.java b/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlPullParser.java index 475335f..2537724 100644 --- a/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlPullParser.java +++ b/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlPullParser.java @@ -479,9 +479,12 @@ public class ResXmlPullParser implements XmlResourceParser { if(attribute==null){ return null; } - String name = mDecoder.decodeResourceName(attribute.getNameResourceID()); - if(name == null){ + String name; + int resourceId = attribute.getNameResourceID(); + if(resourceId == 0 || mDecoder==null){ name = attribute.getName(); + }else { + name = mDecoder.decodeResourceName(attribute.getNameResourceID(), true); } return name; } diff --git a/src/main/java/com/reandroid/arsc/decoder/Decoder.java b/src/main/java/com/reandroid/arsc/decoder/Decoder.java index 9120575..016a5c8 100644 --- a/src/main/java/com/reandroid/arsc/decoder/Decoder.java +++ b/src/main/java/com/reandroid/arsc/decoder/Decoder.java @@ -39,12 +39,24 @@ public class Decoder { this.currentPackageId = currentPackageId; } public String decodeResourceName(int resourceId){ + return decodeResourceName(resourceId, true); + } + public String decodeResourceName(int resourceId, boolean defaultHex){ + if(resourceId == 0){ + return null; + } EntryGroup entryGroup = getEntryStore().getEntryGroup(resourceId); if(entryGroup!=null){ return entryGroup.getSpecName(); } + if(defaultHex){ + return hexResourceName(resourceId); + } return null; } + private String hexResourceName(int resourceId){ + return String.format("@0x%08x", resourceId); + } public String decodeValue(Value value){ if(value==null){ return null;