您的位置:首页 > 其它

DexClassLoader 刷新问题

2016-04-07 21:04 162 查看
遇到一个坑,

复现条件:

1、DexClassLoader加载上某个APK或jar

2、更新上面的APK或JAR,再次通过DexClassLoader 加载(文件名和dex释放路径保持和上次一致)

3、显式调用GC或系统触发GC时闪退

存在于4.X的系统中。

产生原因,当DexClassLoader实例化后,后将释放后的dex加载到dexpathlist,如存在则会进行对比,当两次加载的同路径、同文件名dex文件内容不一致时,则会打印警告Log,通知dex bad,进而gc时发生错误。

解决方案,在进程生命周期内如需要更新dex,请将源APK或JAR命名成不一样的,不要简单覆盖。或将dex输出目录设为不同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: