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

发现一个严重的兼容问题 #191

Closed mqzhangw closed 7 years ago

mqzhangw commented 7 years ago

本来以为这个方案没有兼容问题,现在发现自动化patch中把modify方法修改为反射的时候会出现android版本兼容问题。 问题是这样的:ImageView中setVisibility方法在7.0源码里面被删掉了,7.1之后又加回来了。所以如果compileSdkVersion不是24,将imageview.setvisiblity(View.GONE)转成反射就是EnhancedReflectUtils.invokeReflectMethod("setVisibility",imageView, new Object[]{new Integer(8)}, new Class[]{Integer.TYPE}, ImageView.class);这行代码运行在7.0手机上就会必然报错。 问题的出现与compileSdkVersion有关,生成的patch文件中需要处理这种删除方法的情况。

hedex commented 7 years ago

嗯,在华为MATE8上遇到了,即将发布的新版本已经做了相应的处理了哈,敬请期待

mqzhangw commented 7 years ago

请问处理思路是啥?

hedex commented 7 years ago

@mqzhangw setVisibility这个方法不使用反射调用即可解决

hedex commented 7 years ago

感谢反馈哈