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

安卓7.0系统上 Adapter中 getView 方法不能修复 #180

Closed MoveToNext closed 7 years ago

MoveToNext commented 7 years ago

手机型号:如:华为 mate 8,小米5 手机系统版本:如:Android 7.0 Robust版本:0.4.5

在修复 自定义继承 baseAdapter getView方法中的错误时,补丁可以正常打出,应用 patch 都是成功的,不过安卓7.0以下系统中,完美修复了问题,安卓7.0的系统没有成功,并且会出现其他错误


/System.err:     at com.meituan.robust.utils.EnhancedRobustUtils.invokeReflectMethod(EnhancedRobustUtils.java)
07-27 16:34:13.718 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatch.getView(MyAdapterPatch.java:108)
07-27 16:34:13.718 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatchControl.accessDispatch(PatchTemplate.java)
07-27 16:34:13.718 26450-26450/? W/System.err:     at com.meituan.robust.PatchProxy.accessDispatch(PatchProxy.java)
07-27 16:34:13.736 26450-26450/? W/System.err:     at com.meituan.robust.utils.EnhancedRobustUtils.invokeReflectMethod(EnhancedRobustUtils.java)
07-27 16:34:13.736 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatch.getView(MyAdapterPatch.java:163)
07-27 16:34:13.736 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatchControl.accessDispatch(PatchTemplate.java)
07-27 16:34:13.736 26450-26450/? W/System.err:     at com.meituan.robust.PatchProxy.accessDispatch(PatchProxy.java)
07-27 16:34:13.743 26450-26450/? W/System.err:     at com.meituan.robust.utils.EnhancedRobustUtils.invokeReflectMethod(EnhancedRobustUtils.java)
07-27 16:34:13.743 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatch.getView(MyAdapterPatch.java:108)
07-27 16:34:13.743 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatchControl.accessDispatch(PatchTemplate.java)
07-27 16:34:13.743 26450-26450/? W/System.err:     at com.meituan.robust.PatchProxy.accessDispatch(PatchProxy.java)
07-27 16:34:13.759 26450-26450/? W/System.err:     at com.meituan.robust.utils.EnhancedRobustUtils.invokeReflectMethod(EnhancedRobustUtils.java)
07-27 16:34:13.759 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatch.getView(MyAdapterPatch.java:163)
07-27 16:34:13.759 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatchControl.accessDispatch(PatchTemplate.java)
07-27 16:34:13.759 26450-26450/? W/System.err:     at com.meituan.robust.PatchProxy.accessDispatch(PatchProxy.java)
07-27 16:34:13.765 26450-26450/? W/System.err:     at com.meituan.robust.utils.EnhancedRobustUtils.invokeReflectMethod(EnhancedRobustUtils.java)
07-27 16:34:13.765 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatch.getView(MyAdapterPatch.java:108)
07-27 16:34:13.765 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatchControl.accessDispatch(PatchTemplate.java)
07-27 16:34:13.765 26450-26450/? W/System.err:     at com.meituan.robust.PatchProxy.accessDispatch(PatchProxy.java)
07-27 16:34:13.780 26450-26450/? W/System.err:     at com.meituan.robust.utils.EnhancedRobustUtils.invokeReflectMethod(EnhancedRobustUtils.java)
07-27 16:34:13.780 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatch.getView(MyAdapterPatch.java:163)
07-27 16:34:13.780 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatchControl.accessDispatch(PatchTemplate.java)
07-27 16:34:13.780 26450-26450/? W/System.err:     at com.meituan.robust.PatchProxy.accessDispatch(PatchProxy.java)
07-27 16:34:13.784 26450-26450/? W/System.err:     at com.meituan.robust.utils.EnhancedRobustUtils.invokeReflectMethod(EnhancedRobustUtils.java)
07-27 16:34:13.784 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatch.getView(MyAdapterPatch.java:108)
07-27 16:34:13.784 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatchControl.accessDispatch(PatchTemplate.java)
07-27 16:34:13.784 26450-26450/? W/System.err:     at com.meituan.robust.PatchProxy.accessDispatch(PatchProxy.java)
07-27 16:34:13.800 26450-26450/? W/System.err:     at com.meituan.robust.utils.EnhancedRobustUtils.invokeReflectMethod(EnhancedRobustUtils.java)
07-27 16:34:13.800 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatch.getView(MyAdapterPatch.java:163)
07-27 16:34:13.800 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatchControl.accessDispatch(PatchTemplate.java)
07-27 16:34:13.800 26450-26450/? W/System.err:     at com.meituan.robust.PatchProxy.accessDispatch(PatchProxy.java)
07-27 16:34:13.804 26450-26450/? W/System.err:     at com.meituan.robust.utils.EnhancedRobustUtils.invokeReflectMethod(EnhancedRobustUtils.java)
07-27 16:34:13.804 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatch.getView(MyAdapterPatch.java:108)
07-27 16:34:13.804 26450-26450/? W/System.err:     at com.test.robust.patch.MyAdapterPatchControl.accessDispatch(PatchTemplate.java)
07-27 16:34:13.804 26450-26450/? W/System.err:     at com.meituan.robust.PatchProxy.accessDispatch(PatchProxy.java)
07-27 16:34:13.819 26450-26450/? W/System.err:     at com.meituan.robust.utils.EnhancedRobustUtils.invokeReflectMethod(EnhancedRobustUtils.java)
hedex commented 7 years ago

/System.err: at com.meituan.robust.utils.EnhancedRobustUtils.invokeReflectMethod(EnhancedRobustUtils.java) 这行log可以补全看看吗?

MoveToNext commented 7 years ago
08-07 17:46:58.221 23381-23444/? D/robust: PatchsInfoImpl name:com.test.robust.patch.PatchesInfoImpl
08-07 17:46:58.223 23381-23444/? D/robust: PatchsInfoImpl ok
08-07 17:46:58.223 23381-23444/? D/robust: current path:com.test.robust.adapter.MyAdapter
08-07 17:46:58.224 23381-23444/? D/robust: oldClass :class com.test.robust.adapter.MyAdapter     fields 8
08-07 17:46:58.224 23381-23444/? D/robust: current path:com.test.robust.adapter.MyAdapter find:ChangeQuickRedirect com.test.robust.patch.MyAdapterPatchControl
08-07 17:46:58.226 23381-23444/? D/robust: changeQuickRedirectField set sucess com.test.robust.patch.MyAdapterPatchControl
08-07 17:46:58.226 23381-23444/? D/robust: patch finished 
08-07 17:46:58.232 23381-23444/? D/robust: patch LocalPath:/data/user/0/com.test.robust/cache/robust/patch_7-27-1.jar,apply result true

这个 err 信息上面就是修复成功的 robust 日志,

mivanzhang commented 7 years ago

@MoveToNext show me your code

hedex commented 7 years ago

@MoveToNext 这个问题我们在新版本做了修复,感谢反馈