应用研发平台EMAS中热修复可以修复什么资源?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在应用研发平台EMAS中,热修复功能可以修复以下资源和内容:
热修复主要支持以下三类内容的修复: - Java代码:可以修复存量功能中的错误问题或对现有功能进行调整。但不支持新增功能。 - 资源文件:支持对资源文件的修复,但存在一些限制(详见下文)。 - so文件:支持对动态链接库(so文件)的修复。
尽管热修复支持资源文件的修复,但并非所有资源都可以被修复,具体限制如下: - 支持修复的资源: - 普通资源文件(如布局文件、图片资源等)。 - 不支持修复的资源: - AndroidManifest.xml中的资源:由于该文件由系统在安装时解析,运行时无法修改。 - 通知栏图标:如果通知栏图标发生变动,可能导致推送通知时因找不到资源而崩溃。 - 启动图标资源:启动图标属于安装包资源,无法通过补丁包修复。 - RemoteViews:这类资源由系统负责展示,无法从补丁包中加载。 - 通过getResources().getIdentifier()
方式调用的资源:这类资源的加载路径固定为安装包,无法指向补丁包。
SophixManager.initialize
所在的类无法被修复。因此,建议将初始化逻辑放在单独的StubApplication
类中,以避免此类问题。热修复功能可以修复Java代码、普通资源文件和so文件,但对于特定资源(如通知栏图标、启动图标、RemoteViews等)以及AndroidManifest.xml中的内容存在限制。开发者在使用热修复时需注意这些限制,并根据实际情况调整开发和发布策略。