开发者社区 问答 正文

Android 7.0(N)以上版本的JIT问题怎么解决?



问题


在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支持群号:11734260

展开
收起
猫饭先生 2017-10-24 11:33:39 1652 分享 版权
阿里云 AI 助理回答

针对您提到的在Android 7.0(N)及以上版本系统中,由于即时编译(JIT)引发的异常问题,特别是在使用热更新技术时可能遇到的不兼容情况,阿里云的Sophix热修复方案已经进行了针对性的优化。

Sophix是阿里云提供的一种高效、实时的热修复解决方案,它能够帮助开发者无需用户重新安装应用即可修复线上问题。根据您的描述,从Sophix 3.0.8版本开始,该方案已经内置了对Android N及以上版本因JIT编译导致的热更新问题的处理机制,这意味着大部分情况下,开发者无需进行额外的适配工作就能避免此类问题的发生。

如果在使用最新版Sophix后仍然遇到与JIT相关的热更新问题,建议采取以下步骤:

  1. 确认版本:首先确保您的Sophix SDK已升级到3.0.8或更高版本。
  2. 查阅文档:访问阿里云官方文档,查看是否有针对特定场景的配置说明或已知问题列表。
  3. 技术支持:如问题依旧,可以按照提供的信息加入钉钉客户端的“热修复Android支持群”(群号:11734260),在那里可以获得来自阿里云技术支持团队的专业帮助和指导。
  4. 反馈问题:在群里详细描述遇到的问题现象、日志信息以及已尝试的解决措施,这将有助于快速定位并解决问题。

通过这些途径,您可以有效地解决因Android系统JIT编译带来的热更新挑战,确保应用的稳定运行和及时修复能力。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: