diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/AType.java b/jadx-core/src/main/java/jadx/core/dex/attributes/AType.java index d94edf0c3..6174838be 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/AType.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/AType.java @@ -92,6 +92,8 @@ public class AType { public static final AType REG_DEBUG_INFO = new AType<>(); public static final Set> SKIP_ON_UNLOAD = new HashSet<>(Arrays.asList( + SOURCE_FILE, + FIELD_INIT, FIELD_REPLACE, METHOD_INLINE, SKIP_MTH_ARGS)); diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java index 24934a272..a75ce900f 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java @@ -167,16 +167,20 @@ public class ClassNode extends NotificationAttrNode implements ILoadable, ICodeN f.addAttr(FieldInitAttr.NULL_VALUE); } } - List values = cls.getStaticFieldInitValues(); - int count = values.size(); - if (count == 0 || count > staticFields.size()) { - return; + try { + List values = cls.getStaticFieldInitValues(); + int count = values.size(); + if (count == 0 || count > staticFields.size()) { + return; + } + for (int i = 0; i < count; i++) { + staticFields.get(i).addAttr(FieldInitAttr.constValue(values.get(i))); + } + // process const fields + root().getConstValues().processConstFields(this, staticFields); + } catch (Exception e) { + this.addWarnComment("Failed to load initial values for static fields", e); } - for (int i = 0; i < count; i++) { - staticFields.get(i).addAttr(FieldInitAttr.constValue(values.get(i))); - } - // process const fields - root().getConstValues().processConstFields(this, staticFields); } private void addSourceFilenameAttr(String fileName) {