技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种软件动态修复方法、系统及车辆与流程  >  正文

一种软件动态修复方法、系统及车辆与流程

  • 国知局
  • 2024-10-21 14:30:16

本发明涉及车辆,特别是涉及一种软件动态修复方法、系统、电子设备、存储介质及车辆。

背景技术:

1、目前,现在处理线上bug的方式是,发布新版本,在新版本中修复bug,然后等待用户下载安装升级该应用后bug消失。这种传统的方式具有反馈慢,步骤复杂,容易出错的缺点。

2、现有的技术有如下缺点:

3、更新延迟:必须等待下一个发布周期才能发布修复,而这可能导致用户在较长时间内体验到bug。

4、需要审核:在大多数应用商店,每次更新发布都必须经过审核过程,增加额外的延迟。

5、强制用户更新:用户可能需要主动去应用商店下载更新,而不是自动接收修补程序。如果用户不及时更新应用,会继续遭受bug。

6、下载成本:用户需要下载整个应用的更新版本,消耗大量的数据流量,特别是对于数据敏感或是流量有限的用户来说可能是一个负担。

7、存储空间:升级全新版本通常需要额外的存储空间。对于存储空间有限的设备,这可能是一个问题。

8、用户体验中断:应用更新可能需要用户重新启动应用或者设备,这会暂时中断用户的体验。

9、版本碎片化:不是所有用户都会按时更新应用,这可能导致许多不同的应用版本在市场上共存,使得bug修复、特性改进和安全更新的分发变得复杂。

10、兼容性问题:新版本的应用可能在某些设备上造成兼容性问题,而这些问题需要时间来诊断和修复。

11、因此,本技术提供一种软件动态修复方法以解决上述技术问题。

技术实现思路

1、本发明的目的在于提供一种软件动态修复方法、系统、电子设备、存储介质及车辆,用以解决现有技术中软件修复反馈慢,步骤复杂,容易出错等技术问题。

2、为了解决上述技术问题,本发明提供了一种软件动态修复方法,包括:

3、响应于识别的软件中的关键组件,确定并编写sdk,其中,所述sdk包括用于动态修复的逻辑和接口;

4、响应于分析的所述软件的源代码和二进制文件,识别需要修复的问题,生成包含修复代码的补丁包文件;

5、响应于上传的所述补丁包文件,设置相应的验证机制,其中,所述验证机制包括用于所述补丁包文件能被唯一识别和定位;

6、基于所述验证机制,返回相应的所述补丁包文件,执行所述修复代码,对所述需要修复的问题进行修复。

7、在其中一些具体实施例中,响应于识别的软件中的关键组件,确定并编写sdk,其中,所述sdk包括用于动态修复的逻辑和接口,具体包括:

8、基于识别的所述关键组件,编写用于集成所述sdk的代码;

9、基于ap i,编写自动修复插件,其中,所述自动修复插件能够自动遍历代码文件并插入静态变量;

10、在每个类中插入所述静态变量,并使用方法签名判断代码逻辑是否需要修复,当需要修复时,则通过所述静态变量中的逻辑进行修复,当不需要修复时,则执行原逻辑;

11、基于dexc l ass l oader加载所述补丁包文件,通过反射将所述补丁包文件中的类反射到所述静态变量中,以使在运行时能够调用修复后的逻辑。

12、在其中一些具体实施例中,响应于分析的所述软件的源代码和二进制文件,识别需要修复的问题,生成包含修复代码的补丁包文件,具体包括:

13、基于所述软件的源代码和二进制文件,进行编译,生成包含所述修复代码的所述补丁包文件;

14、基于约定好的注解,对需要修复的方法和需要添加的方法进行标记;

15、遍历所述需要修复的方法和需要添加的方法,收集方法签名,并将方法中的语句转换为反射语句;

16、添加补丁管理类,结合补丁自身的类和其他元数据打包生成所述补丁包文件,其中,所述补丁管理类用于控制所述补丁的加载和应用逻辑。

17、在其中一些具体实施例中,响应于上传的所述补丁包文件,设置相应的验证机制,其中,所述验证机制包括用于所述补丁包文件能被唯一识别和定位,具体包括:

18、将所述补丁包文件放置在线上服务器的指定位置;

19、通过长连接通道推送获取所述补丁包文件指令;

20、响应于所述补丁包文件指令,发起请求,从所述线上服务器下载所述补丁包文件;

21、将所述补丁包文件保存至本地。

22、在其中一些具体实施例中,基于所述验证机制,返回相应的所述补丁包文件,执行所述修复代码,对所述需要修复的问题进行修复,具体包括:

23、获取补丁包文件信息,对比各个所述补丁包文件生效的版本,确定需要应用的所述补丁包文件;

24、将所有需要应用的所述补丁包文件进行合并,形成完整的修复方案;

25、基于所述修复方案,执行相应所述补丁包文件中的所述修复代码,对所述需要修复的问题进行修复。

26、在其中一些具体实施例中,所述方法还包括:

27、在编写所述sdk中,向类中添加桥函数,作为父类方法的访问桥梁;

28、在每个类中生成一个accesssuper方法,用于桥接当前类中被覆写的父类方法;

29、在需要调用父类方法时,通过传入的方法签名来匹配对应的super方法;

30、通过桥函数和accesssuper方法,确保在调用父类方法时能够正确地执行修复后的逻辑。

31、基于同一构思,本发明还提供一种软件动态修复系统,包括:

32、sdk编写模块,配置为响应于识别的软件中的关键组件,确定并编写sdk,其中,所述sdk包括用于动态修复的逻辑和接口;

33、补丁包文件生成模块,配置为响应于分析的所述软件的源代码和二进制文件,识别需要修复的问题,生成包含修复代码的补丁包文件;

34、补丁包文件上传模块,配置为响应于上传的所述补丁包文件,设置相应的验证机制,其中,所述验证机制包括用于所述补丁包文件能被唯一识别和定位;

35、软件动态修复模块,配置为基于所述验证机制,返回相应的所述补丁包文件,执行所述修复代码,对所述需要修复的问题进行修复。

36、基于同一构思,本发明还提供一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行软件动态修复方法的步骤。

37、基于同一构思,本发明还提供一种计算机可读存储介质,其存储有可由电子设备执行的计算机程序,当所述计算机程序在所述电子设备上运行时,使得所述电子设备执行软件动态修复方法的步骤。

38、基于同一构思,本发明还提供一种车辆,所述车辆设置有如上所述的软件动态修复系统。

39、与现有技术相比,其有益效果在于:

40、本发明公开了一种软件动态修复方法、系统、电子设备、存储介质及车辆,可以免除下载安装的步骤,直接将修复补丁进行推送到对应端,推送完成后补丁包即时生效。具有步骤简单,方便,效率,无感的优点。

本文地址:https://www.jishuxx.com/zhuanli/20241021/318406.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。