diff --git a/jadx-core/src/main/java/jadx/core/ProcessClass.java b/jadx-core/src/main/java/jadx/core/ProcessClass.java index 4b3965b03..702db2e0d 100644 --- a/jadx-core/src/main/java/jadx/core/ProcessClass.java +++ b/jadx-core/src/main/java/jadx/core/ProcessClass.java @@ -140,6 +140,17 @@ public class ProcessClass { } } + /** + * Generate code for class without processing its deps + */ + public @Nullable ICodeInfo forceGenerateCode(ClassNode cls) { + try { + return process(cls, true); + } catch (Throwable e) { + throw new JadxRuntimeException("Failed to generate code for class: " + cls.getFullName(), e); + } + } + public void initPasses(RootNode root) { for (IDexTreeVisitor pass : passes) { try { 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 07dbdaa74..fa97363ba 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 @@ -327,7 +327,8 @@ public class ClassNode extends NotificationAttrNode args.setDecompilationMode(mode); ProcessClass process = new ProcessClass(Jadx.getPassesList(args)); process.initPasses(root); - return process.generateCode(this); + ICodeInfo code = process.forceGenerateCode(this); + return Utils.getOrElse(code, ICodeInfo.EMPTY); } finally { args.setDecompilationMode(baseMode); unload();