diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java b/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java index 4014fb54d4e3a725c4a7f44dc9ab08f4ae8b9dd5..0443b6247b3f484d15971ae0874ba12111933ab1 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java @@ -313,17 +313,23 @@ public class BinaryXMLParser extends CommonBinaryParser { } private String generateNameForNS(String attrUrl) { - for (int i = 1;; i++) { - String attrName = "ns" + i; - if (!nsMap.containsValue(attrName) && !nsMapGenerated.contains(attrName)) { - nsMapGenerated.add(attrName); - // do not add generated value to nsMap - // because attrUrl might be used in a neighbor element, but never defined - writer.add("xmlns:").add(attrName) - .add("=\"").add(attrUrl).add("\" "); - return attrName; + String attrName; + if (ANDROID_NS_URL.equals(attrUrl)) { + attrName = ANDROID_NS_VALUE; + nsMap.put(ANDROID_NS_URL, attrName); + } else { + for (int i = 1;; i++) { + attrName = "ns" + i; + if (!nsMapGenerated.contains(attrName) && !nsMap.containsValue(attrName)) { + nsMapGenerated.add(attrName); + // do not add generated value to nsMap + // because attrUrl might be used in a neighbor element, but never defined + break; + } } } + writer.add("xmlns:").add(attrName).add("=\"").add(attrUrl).add("\" "); + return attrName; } private String getAttributeName(int id) { diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ParserConstants.java b/jadx-core/src/main/java/jadx/core/xmlgen/ParserConstants.java index 0f1b5182748c5db398973614f807271876db2368..10221641ff9b7503aa4d1ef84e39a5991da17819 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/ParserConstants.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/ParserConstants.java @@ -9,6 +9,7 @@ public class ParserConstants { } protected static final String ANDROID_NS_URL = "http://schemas.android.com/apk/res/android"; + protected static final String ANDROID_NS_VALUE = "android"; /** * Chunk types