问题
在Android 7.0(N)以上版本的系统中,出现了JIT问题引发异常
问题原因
在Android N以后的版本会对频繁使用的app进行jit操作,从而生成app image并更新oat文件。如果app image包含了补丁修改的class,就无法进行热更新。因为app在启动时会把这些类加入到PathClassloader的ClassTable中,系统在查找类时会直接使用base.apk中的class,最终导致修复不成功。不过,只有Android N版本后频繁使用的app会由系统进行jit,所以影响范围并不是非常广。
解决方案
Sophix 3.0.8以上版本已经自动处理,无需适配。如发现问题,可寻求群里技术支持解决。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
针对您提到的在Android 7.0(N)及以上版本系统中,由于即时编译(JIT)引发的异常问题,特别是在使用热更新技术时可能遇到的不兼容情况,阿里云的Sophix热修复方案已经进行了针对性的优化。
Sophix是阿里云提供的一种高效、实时的热修复解决方案,它能够帮助开发者无需用户重新安装应用即可修复线上问题。根据您的描述,从Sophix 3.0.8版本开始,该方案已经内置了对Android N及以上版本因JIT编译导致的热更新问题的处理机制,这意味着大部分情况下,开发者无需进行额外的适配工作就能避免此类问题的发生。
如果在使用最新版Sophix后仍然遇到与JIT相关的热更新问题,建议采取以下步骤:
通过这些途径,您可以有效地解决因Android系统JIT编译带来的热更新挑战,确保应用的稳定运行和及时修复能力。