关于android 提示had used a different xxx; during pre-berification

来源:互联网 发布:软件开发服务费税率 编辑:程序博客网 时间:2024/06/03 14:02
重复加载了相同类

我们可以在4.4.2/442/dalvik/vm/oo/Resolve.cpp这个里面找到抛出这个异常的判断逻辑: 


通过这些提示再加上方法实现逻辑
它会去判断引用类所在的dex文件是否和想要的索引类所在的dex是同一个,如果不为同一个则会抛出这个异常
resClass = dvmFindClassNoInit(className, referrer->classLoader);
这句是获取实际索引类,如果之前相同的类加载器已经从与索引类不同的dex文件中加载了相同完整类名的类,则会导致获取到的实际索引类不是想要的索引类(所出dex文件不同),即引用类与实际索引类由同一个类加载器加载,但是处于不同的dex文件中 

0 0
原创粉丝点击