Sophix何时走即时生效热修复,何时走冷启动修复?

这是根据代码变动情况决定的。

代码若变动小,一般会走即时生效热修复,而如果代码变动大,比如在已存在的类中新增方法,修改了so等情况,都会走冷启动。这是由打包工具自行检测代码变化来判断的,开发者无需考虑。

如想测试即时生效,可以:

  • 1、补丁工具可以不勾选强制冷启动,这样就由工具自行判断是否生成冷/热补丁。
  • 2、不要改首启动页,加载补丁去修复也是需要时间的。
  • 3、可以试下改动都是public修饰的类或方法,尽量不要改动static。
  • 4、资源或so改动一般都是冷启动生效的。
  • 5、实际建议使用冷启动补丁,热补丁可能少数机型加载有问题,如果使用热补丁,尽量全面测试后再发布。

上述使用时补丁还未即时生效,想了解具体细节,可以阅读免费电子版《深入探索Android热修复技术原理》,其中代码修复的章节有详细解释。

并且,在运行期如果在所运行的设备上检测到不支持即时生效热修复,也会在该机型上走强制冷启动修复。

而如果对稳定性有极高要求,可开启强制冷启动选项,这样任何变动都会按强制冷启动方式打包。

冷启动:app重启

热启动:app无需重启