Meituan-Dianping / Robust

Robust is an Android HotFix solution with high compatibility and high stability. Robust can fix bugs immediately without a reboot.
Apache License 2.0
4.42k stars 807 forks source link

current path:com.curefun.activity.RegisterOfSetAccountActivity something wrong !! can not find:ChangeQuickRedirect incom.curefun.support.robust.RegisterOfSetAccountActivityPatchControl #201

Closed huangyong0301 closed 6 years ago

huangyong0301 commented 7 years ago

在提交issue之前,我们应该先查询是否已经有相关的issue和ReadMe中的注意事项,比如说Robust在0.3.3版本才支持windows开发。提交issue时,我们需要写明issue的原因,最好可以携带编译或运行过程的日志或者截图。issue最好以下面的格式提出:

异常类型:app运行时异常/编译异常 current path:com.curefun.activity.RegisterOfSetAccountActivity something wrong !! can not find:ChangeQuickRedirect incom.curefun.support.robust.RegisterOfSetAccountActivityPatchControl

手机型号:如:Nexus 5(如是编译异常,则可以不填) 模拟器

手机系统版本:如:Android 5.0 (如是编译异常,则可以不填) 4.4 Robust版本:如:0.4.5 0.3.7 Gradle版本:如:2.10 3.4.1 系统:如:Mac linux 堆栈/日志: current path:com.curefun.activity.RegisterOfSetAccountActivity something wrong !! can not find:ChangeQuickRedirect incom.curefun.support.robust.RegisterOfSetAccountActivityPatchControl

如果用window打的path就可以的,换到linux jekenis打出来的补丁包应用后就报这个错误了

如是编译异常,请在执行gradle命令时,加上--stacktrace,并把结果重定向,例如在demo中重定向命令如下:./gradlew clean assembleRelease --stacktrace --no-daemon >log.txt ,结果重定向到当前的目录下的log.txt文件; 日志中我们需要过滤"robust"关键字,可以初步查找问题的大概原因; Robust提供了sample样例与我们的源码,大家在使用前可以先将样例跑通,如遇任何疑问也欢迎大家提出,更鼓励大家给我们提pr,谢谢大家的支持.

hedex commented 7 years ago

com.curefun.support.robust.RegisterOfSetAccountActivityPatchControl 这个类可以给我看看吗? 你打补丁的时候请先apply: auto-patch-robust,然后再apply:robsut

huangyong0301 commented 7 years ago

我打补丁的顺序是 apply: auto-patch-robust,再apply:robsut

window下打补丁是正常的 ;

package com.curefun.support.robust;

import com.curefun.activity.RegisterOfSetAccountActivity; import com.meituan.robust.ChangeQuickRedirect; import java.util.Map; import java.util.WeakHashMap;

public class RegisterOfSetAccountActivityPatchControl implements ChangeQuickRedirect { public static final String MATCH_ALL_PARAMETER = "(\w\.)\w*"; private static final Map<Object, Object> keyToValueRelation = new WeakHashMap();

public Object accessDispatch(String paramString, Object[] paramArrayOfObject) { try { RegisterOfSetAccountActivityPatch localRegisterOfSetAccountActivityPatch; if (paramString.split(":")[2].equals("false")) { if (keyToValueRelation.get(paramArrayOfObject[(paramArrayOfObject.length - 1)]) == null) { localRegisterOfSetAccountActivityPatch = new RegisterOfSetAccountActivityPatch(paramArrayOfObject[(paramArrayOfObject.length - 1)]); keyToValueRelation.put(paramArrayOfObject[(paramArrayOfObject.length - 1)], localRegisterOfSetAccountActivityPatch); break label155; } } for (;;) { paramString = paramString.split(":")[3]; if ("4417".equals(paramString)) { localRegisterOfSetAccountActivityPatch.newUserInfoSuccess((String)paramArrayOfObject[0]); } if (!"4418".equals(paramString)) { break; } localRegisterOfSetAccountActivityPatch.newUserInfoFail((String)paramArrayOfObject[0]); return null; localRegisterOfSetAccountActivityPatch = (RegisterOfSetAccountActivityPatch)keyToValueRelation.get(paramArrayOfObject[(paramArrayOfObject.length - 1)]); break label155; localRegisterOfSetAccountActivityPatch = new RegisterOfSetAccountActivityPatch(null); } } catch (Throwable paramString) { paramString.printStackTrace(); return null; } label155: return null; }

public Object getRealParameter(Object paramObject) { Object localObject = paramObject; if ((paramObject instanceof RegisterOfSetAccountActivity)) { localObject = new RegisterOfSetAccountActivityPatch(paramObject); } return localObject; }

public boolean isSupport(String paramString, Object[] paramArrayOfObject) { return "4417:4418:".contains(paramString.split(":")[3]); } }

huangyong0301 commented 7 years ago

怎么样 能不能解决

zhaoaoranke commented 6 years ago

我也遇到过这个问题,后来我在打补丁钱clean 了项目,加了新依赖classpath 'com.meituan.robust:gradle-plugin:0.4.7' classpath 'com.meituan.robust:auto-patch-plugin:0.4.7',从走一次流程就可以了