From c416f77e99e4e968e198a5a1415ee09ef07a3423 Mon Sep 17 00:00:00 2001 From: Skylot Date: Wed, 27 Nov 2013 22:14:34 +0400 Subject: [PATCH] core: fix android specific class handler --- .../src/main/java/jadx/core/codegen/InsnGen.java | 15 +++++++++------ .../main/java/jadx/core/codegen/RegionGen.java | 10 ---------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java index 562df1ba6..c4c3d0079 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java @@ -144,15 +144,18 @@ public class InsnGen { return arg(arg) + "." + name; } - private String sfield(FieldInfo field) { + protected String sfield(FieldInfo field) { String thisClass = mth.getParentClass().getFullName(); - if (thisClass.startsWith(field.getDeclClass().getFullName())) { + ClassInfo declClass = field.getDeclClass(); + if (thisClass.startsWith(declClass.getFullName())) { return field.getName(); - } else if (field.getDeclClass().getFullName().startsWith(mth.getParentClass().getPackage() + ".R")) { - return field.getDeclClass().getNameWithoutPackage() + '.' + field.getName(); - } else { - return useClass(field.getDeclClass()) + '.' + field.getName(); } + // Android specific resources class handler + ClassInfo parentClass = declClass.getParentClass(); + if (parentClass != null && parentClass.getShortName().equals("R")) { + return useClass(parentClass) + "." + declClass.getShortName() + "." + field.getName(); + } + return useClass(declClass) + '.' + field.getName(); } private void fieldPut(IndexInsnNode insn) { diff --git a/jadx-core/src/main/java/jadx/core/codegen/RegionGen.java b/jadx-core/src/main/java/jadx/core/codegen/RegionGen.java index 54df22b12..c086b69d8 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/RegionGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/RegionGen.java @@ -308,14 +308,4 @@ public class RegionGen extends InsnGen { makeRegionIndent(code, region); } } - - // FIXME: !!code from InsnGen.sfield - private String sfield(FieldInfo field) { - String thisClass = mth.getParentClass().getFullName(); - if (thisClass.startsWith(field.getDeclClass().getFullName())) { - return field.getName(); - } else { - return useClass(field.getDeclClass()) + '.' + field.getName(); - } - } }