Meituan-Dianping / Robust

Robust is an Android HotFix solution with high compatibility and high stability. Robust can fix bugs immediately without a reboot.
Apache License 2.0
4.4k stars 805 forks source link

关于补丁分发及回滚实践的一些问题。 #427

Open YummyLau opened 3 years ago

YummyLau commented 3 years ago

请教一下,目前已接入Robust完成修复及ci模块,但是对回滚相关的场景有以下疑惑。

问题:我们在应用读完dex之后立刻同步读取缓存副本,然后再异步拉去后端当前最新的补丁配置。 加入缓存副本中存在补丁1和补丁2,最新拉去的补丁配置中只有补丁1,意味这我们需要回滚补丁2。 这个时候补丁1和补丁2已经被加载,异步拉去的补丁1加载之后会覆盖补丁2,那么补丁1的生效如何回归呢? 或者配置中把所有补丁下了,那么缓存中的补丁要怎么清理(重启可以生效,希望当次可以实时清理)。

YummyLau commented 3 years ago

尝试过一种方案,如果需要下架的补丁中,针对生效的类,对原来已经修改过的内容进行“还原操作”,那么在第一次异步拉去之后覆盖本地就相当于回滚行为。不仅回滚需要制作补丁,同时还需要找回修改内容,比较麻烦。

另一种方案,拿到被下架的补丁,然后获取 patchesInfo 之后拿到 List。把 changeQuickRedirectField进行清除?

想问下作者,是否有其他做法。