Meituan-Dianping / Meituan-Dianping/Robust

AutoPatch 成功, 加载逻辑修复成功, 但 patch.jar 反编译异常

Open
#247 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
4.5k
Forks
806
PR merge metrics
No merged PRs in 30d

Description

异常类型:编译异常

Robust版本:0.4.75

Gradle版本:2.14.1

系统:Mac

出现一种情况, autoPatch 成功, 且 Patch 加载后功能修复正常, 但是 patch.jar dex - jar - jdGui 在 jdGui 中出现以下现象, 不能正常反编译为 java 代码. 这种现象正常吗?

/* JADX: method processing error */
/*
Error: jadx.core.utils.exceptions.DecodeException: Load method exception in method: com.ymt360.app.mass.hotfix.APIManagerPatch.buildNetworkRequest(java.lang.String, com.ymt360.app.fetchers.api.IAPIRequest, java.lang.String, com.ymt360.app.entity.ApiEntity):com.ymt360.app.fetchers.network.NetworkRequest
	at jadx.core.dex.nodes.MethodNode.load(MethodNode.java:116)
	at jadx.core.dex.nodes.ClassNode.load(ClassNode.java:249)
	at jadx.core.ProcessClass.process(ProcessClass.java:34)
	at jadx.api.JadxDecompiler.processClass(JadxDecompiler.java:306)
	at jadx.api.JavaClass.decompile(JavaClass.java:62)
Caused by: java.lang.NullPointerException
	at jadx.core.dex.nodes.MethodNode.addJump(MethodNode.java:370)
	at jadx.core.dex.nodes.MethodNode.initJumps(MethodNode.java:356)
	at jadx.core.dex.nodes.MethodNode.load(MethodNode.java:106)
	... 4 more
*/
        /*
        r0 = this;
        r26 = java.lang.System.out;
        r27 = "robust";
        r28 = "get static  value is out     No:  1";
        android.util.Log.d(r27, r28);
        r27 = "devliu - ymtbase patch Sucessful"; more ....

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the reported flow with Robust 0.4.75 on Mac and Gradle 2.14.1: generate the patch, convert patch.jar through dex-to-jar, and open it in JD-GUI or JADX. Inspect the named APIManagerPatch.buildNetworkRequest method and determine whether the patch bytecode is valid despite the decompiler failure; done means the behavior is explained and a reproducible fix or limitation is documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, java
Domain
build-system, mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.