阿里云移动端热修复-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对比其他热修复平台
持续更新...