阿里云移动端热修复-Sophix(for Android)-问题解答

前段时间了解了阿里云的热修复Sophix的基本使用,在使用过程中遇到很多问题,特此记录一下。

 

1、热修复可以发多个补丁么?

答:补丁可以发好多次,但只能发布一个补丁。例如:我已经成功发布了1次补丁,这时候我要是再发布了一个补丁的话第一次的补丁就会自动停止。

 

2、发了一次补丁后,再发补丁时旧包应该选择第一次的apk还是第二次的apk?

答:这个得看个人需求,正常来说旧包选择第一次apk或第二次apk打出的补丁应用时都不会出错。

如果第二次的补丁想包含第一次的补丁时,就选择第一次apk。如果不想包含的话就选择第二次的apk。因为补丁只能有一个发布。

 

3、什么是基线包?

答:第一次打出来的包就是基线包。

 

4、加固包可以构建补丁么?

答:官方给出的答案是建议在加固前打补丁。是否支持加固的话还是得看加固的框架是如何处理的,目前爱加密、梆梆、360、乐固、娜迦加固下全版本均测试正常。

我个人建议还是不太建议加固后打补丁,因为加固后做了很多处理,可能会出现问题,需要全面的测试才能发布,耗时耗力,故不推荐。其实发版后可以保留下每个版本为加固的apk,需要打补丁时直接用未加固的apk比较即可。

虽然加固包不建议构建补丁,但是可以应用补丁。

 

5、当前版本发布的补丁,下一版本或其他版本会应用么?

答:不会。热修复是完全按照版本来控制的,当前版本的app只会应用该版本的补丁。

 

6、Android哪些模块支持发热修复?

答:Android热修复支持代码修复、资源修复、so修复,不支持四大组件的修复,可以添加方法(以冷启动的方式生效)。

 

7、什么是热修复?什么是冷启动?

答:热修复是实时修复的,当我们发布完补丁包后,在运行app的时候就会自动应用补丁。

冷启动不是实时的,当补丁发布完后,启动app后并不会立即应用补丁,等补丁下载完后,通过重启并杀死进程启动app才会应用上。

 

8、什么时候走热修复?什么时候走冷启动?

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

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

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

 

9、Sophix对比其他热修复平台

 

持续更新...

 

posted @ 2022-10-07 17:16  渣娃  阅读(273)  评论(0编辑  收藏  举报