在4.x的系统上出现IllegalAccessException:class ref in pre-verified异常,应用崩溃
问题原因
这个是由于Sophix的冷启动方式热修复是完整dex修复,所以会出现新dex中的类和老dex中的类冲突,所以要在Sophix初始化前避免加载原有apk中的类,而对于4.x版本的系统,如果在Sophix初始化之前有加载原有apk中的类,则会影响修复的过程,造成崩溃
解决方案
Sophix初始化在Application最前面,同时在初始化前的代码都要使用系统类而不使用自定义类(如自定义的logutil等)。
具体就是把initialize写到attachBaseContext里面,但query还是在onCreat的最前面;如果有用到MultiDex,直接继承Application,在attachBaseContext里写MultiDex.install(base),然后在onCreat的最前面initialize和query,如果还会出现这个崩溃,把initialize写到attachBaseContext的MultiDex.install(base)后面,但query还是在onCreat的最前面。仍然解决不了的可到钉钉群里寻求支持。
更多官方信息
EMAS官网介绍:https://www.aliyun.com/product/emas
Devops:https://www.aliyun.com/product/emascrash/mobile_devops
移动热修复:https://www.aliyun.com/product/hotfix
移动测试:https://www.aliyun.com/activity/emas/mqcexpert
移动推送:https://www.aliyun.com/product/cps
HTTPDNS:https://www.aliyun.com/product/httpdns
EMAS 控制台: https://emas.console.aliyun.com/products
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。