System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,特别涉及一种代码热更新方法、装置、计算设备和计算机可读存储介质。
技术介绍
1、在移动互联网领域,通常使用热更新的方式来实现应用的功能更新或bug修复,用户打开应用时即可实现更新,不用重新下载整个应用,从而实现了良好的用户体验。但是在某些第三方平台上运行的小程序中,这些第三方平台禁止了javascript热更新或者wasm热更新。因此,当线上发现严重且紧急的bug时,常规的方案需要经历问题定位-修改代码-打包-提交平台审核-过审-发布的流程,而平台审核的时长通常不可控,甚至有可能需要数天的时间,因此对于比较紧急的bug,现有技术很难做到快速响应,影响了用户体验。
技术实现思路
1、有鉴于此,本申请例提供了一种代码热更新方法、装置、计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。
2、根据本申请实施例的第一方面,提供了一种代码热更新方法,包括:
3、为宿主程序添加lua虚拟机,所述宿主程序基于第三方平台运行;
4、所述lua虚拟机由与宿主程序同样的开发语言实现;在所述宿主程序中对所有可能需要进行热更新的变量提供全局获取方式;
5、已上线的宿主程序从服务器获取补丁,所述补丁包括lua脚本;
6、所述lua虚拟机解析所述补丁,根据所述补丁的lua脚本完成所述宿主程序代码的更新。
7、根据本申请实施例的第二方面,提供了一种代码热更新装置,包括:
8、宿主程序模块,所述宿主程序
9、所述宿主程序模块包括:
10、lua虚拟机,所述lua虚拟机由与宿主程序同样的开发语言实现;所述宿主程序模型中提供所有可能需要进行热更新的代码的全局获取方式;
11、获取模块,用于连接服务器获取补丁,所述补丁包括lua脚本;
12、更新模块,用于在lua虚拟机中解析所述补丁,根据所述补丁的lua脚本完成宿主程序模块代码的更新。
13、根据本申请实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述一种代码热更新方法的步骤。
14、根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述一种代码热更新方法的步骤。
15、通过本申请实施例中的方法和装置,实现了第三方平台中运行的程序的热更新功能,又不违反第三方平台相关的规则。在开发相关程序时,使用与该程序相同的语言实现了一个lua虚拟机,并将其嵌入程序之中,由于lua虚拟机的实现使用了与宿主程序同样的开发语言,不仅方便在宿主程序中运行,而且该虚拟机可以与宿主程序的对象实现相互操作。因此,当宿主程序在第三方平台上线后有更新的需求时,宿主程序可以直接访问服务器获取lua脚本,并在lua虚拟机中执行,完成对宿主程序的更新。通过该方案,当第三方平台中运行的程序出现bug或需要进行功能修复时,无需再次提交程序包历经整个第三方平台的上线流程,极大的提高了程序更新的效率和用户体验。
本文档来自技高网...【技术保护点】
1.一种代码热更新方法,其特征在于,包括:
2.根据权利要求1所述的方法,其中,所述Lua虚拟机解析所述补丁,根据所述补丁的Lua脚本完成宿主程序代码的补丁包括:
3.根据权利要求2所述的方法,其中,所述Lua虚拟机解析所述补丁,根据所述补丁的Lua脚本完成宿主程序代码的更新还包括:
4.根据权利要求3所述的方法,其中,运行Lua脚本来替换宿主程序中目标类的原型方法和或实例方法包括:
5.根据权利要求4所述的方法,其中,运行Lua脚本来替换宿主程序中目标类的原型方法和或实例方法包括:
6.根据权利要求1所述的方法,其中,所述宿主程序的开发语言为JavaScript或者TypeScript。
7.根据权利要求1所述的方法,其中,所述宿主程序的全局变量包括版本信息。
8.一种代码热更新装置,其特征在于,该装置包括:
9.一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,其特征在于,所述处理器执行所述指令时实现权利要求1-7任意一项所述方法的步骤。
...
【技术特征摘要】
1.一种代码热更新方法,其特征在于,包括:
2.根据权利要求1所述的方法,其中,所述lua虚拟机解析所述补丁,根据所述补丁的lua脚本完成宿主程序代码的补丁包括:
3.根据权利要求2所述的方法,其中,所述lua虚拟机解析所述补丁,根据所述补丁的lua脚本完成宿主程序代码的更新还包括:
4.根据权利要求3所述的方法,其中,运行lua脚本来替换宿主程序中目标类的原型方法和或实例方法包括:
5.根据权利要求4所述的方法,其中,运行lua脚本来替换宿主程序中目标类的原型方法和或实例方法包括:
6.根据权...
【专利技术属性】
技术研发人员:华长苗,薛志盛,李建良,郭子文,杨东,杨利华,袁冠鹏,乐坚强,何雨泉,林逸,
申请(专利权)人:在线途游北京科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。