应用研发平台EMAS补丁回滚,需要重启app吗?还是直接生效?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在应用研发平台 EMAS 中,补丁回滚是否需要重启 App 取决于具体的补丁类型和代码变动情况。以下是详细解答:
根据知识库中的描述,补丁的生效方式分为两种:即时生效(热启动) 和 冷启动修复。
即时生效(热启动)
如果补丁回滚涉及的代码改动较小(例如方法体内的修改、不涉及新增方法或资源变更),则可以通过热启动方式直接生效,无需重启 App。
冷启动修复
如果补丁回滚涉及较大的代码改动(例如新增方法、修改 so 文件、资源文件变更等),则需要通过冷启动方式修复,即必须重启 App 才能生效。
以下是补丁回滚时可能遇到的具体场景及对应的生效方式:
queryAndLoadNewPatch
方法。无资源改动的补丁
如果当前已加载的补丁不包含资源改动,回滚后通常需要 两次重启:
有资源改动的补丁
如果当前已加载的补丁包含资源改动,回滚后通常需要 三次重启:
补丁加载时机
补丁的加载时机取决于 queryAndLoadNewPatch
方法的调用时间。建议在 App 运行过程中定期调用该方法,以提前查询和预加载新补丁,从而减少重启次数。
强制冷启动选项
如果对稳定性有极高要求,可以开启强制冷启动选项。这样,无论补丁的代码变动大小如何,都会按照冷启动方式打包和生效。
初始化注意事项
Sophix 的初始化代码应尽可能早地调用,推荐在 Application.attachBaseContext()
方法中进行初始化。如果初始化过晚(如在 onCreate
中),可能会导致补丁加载失败或崩溃。
建议开发者根据实际需求选择合适的补丁回滚策略,并在发布前进行全面测试,以确保补丁的稳定性和兼容性。