incremental-compiler icon indicating copy to clipboard operation
incremental-compiler copied to clipboard

修改内部类后会报找不到方法错误

Open jinguangyue opened this issue 4 years ago • 7 comments

例如: image

修改内部类的方法参数,比如增加一个参数后会crash:

image

时机查看dex文件改动已经编译进去了

jinguangyue avatar Oct 20 '21 10:10 jinguangyue

你是用什么方式加载这个dex的

wuyr avatar Oct 22 '21 10:10 wuyr

使用普通热修复方式,把dex加载到最前面,目前打个日志是没问题的,但是内部类的修改会报上面错误

jinguangyue avatar Oct 25 '21 02:10 jinguangyue

噢,我想了想,这应该是正常的? 因为你其他地方调用的还是原来的方法,比如你把onClick(String s)改成了onClick(),增量编译只是把这个有改动的文件打包进去,所以最后热修复加载的只有onClick()方法,但是旧的代码调用的还是onClick(String s),所以就报找不到方法了。

wuyr avatar Oct 27 '21 04:10 wuyr

所以根本原因在于使用内部类的那个类指纹没有变化 所以没编译到dex里面

jinguangyue avatar Oct 28 '21 08:10 jinguangyue

是的,不过,当你修改方法签名后,调用它的类不应该会报错吗(在编译阶段)?因为没有了原来的方法

wuyr avatar Oct 28 '21 09:10 wuyr

编译是编译改动的 不会报错

jinguangyue avatar Oct 28 '21 09:10 jinguangyue

那AS会报错吗

wuyr avatar Oct 29 '21 01:10 wuyr