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

PatchsInfoImpl failed,cause ofjava.lang.ClassNotFoundException #254

Closed tongxu1984 closed 6 years ago

tongxu1984 commented 6 years ago

问题描述:补丁生成完成,在执行补丁加载时候,报出PatchesInfoImpl类找不到。从集成说明,这个类应该是动态生成的,集成文档中,也没有提到需要手动添加这个类。现在还是有问题,麻烦帮忙看看。

异常类型:app运行时异常

手机型号:Samsung SM-C9000

手机系统版本:Android 7.1.1

Robust版本:0.4.78

Gradle版本:gradle-2.14.1-all

系统:Mac

堆栈/日志: E/RobustCallBack: exceptionNotify where: class:PatchExecutor method:patch line:108 java.lang.ClassNotFoundException: Didn't find class "com.meituan.robust.patch.PatchesInfoImpl" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib, /vendor/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:380) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at com.meituan.robust.PatchExecutor.patch(PatchExecutor.java:100) at com.meituan.robust.PatchExecutor.applyPatchList(PatchExecutor.java:63) at com.meituan.robust.PatchExecutor.run(PatchExecutor.java:33) E/robust: PatchsInfoImpl failed,cause ofjava.lang.ClassNotFoundException: Didn't find class "com.meituan.robust.patch.PatchesInfoImpl" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib, /vendor/lib]] W/System.err: java.lang.ClassNotFoundException: Didn't find class "com.meituan.robust.patch.PatchesInfoImpl" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib, /vendor/lib]] W/System.err: at com.meituan.robust.PatchExecutor.patch(PatchExecutor.java:100) W/System.err: at com.meituan.robust.PatchExecutor.applyPatchList(PatchExecutor.java:63) W/System.err: at com.meituan.robust.PatchExecutor.run(PatchExecutor.java:33) D/RobustCallBack: logNotify log: patchesInfo is null, patch info:id = ytpatch-001,md5 = null D/RobustCallBack: logNotify where: class:PatchExecutor method:patch line:114 D/RobustCallBack: onPatchApplied result: false D/RobustCallBack: onPatchApplied patch: ytpatch-001 D/robust: patch LocalPath:/storage/emulated/0/robust/patch.jar,apply result false

tongxu1984 commented 6 years ago

问题已解决,原因PatchManipulateImp里面必须设置setTempPath这个方法,设置的tempPath,对应的补丁文件必须存在,底层会读取这个文件,进行补丁操作。