跨平台桌面应用程序的实现方法及其相关设备技术

技术编号:36126203 阅读:15 留言:0更新日期:2022-12-28 14:33
本申请涉及一种跨平台桌面应用程序的实现方法及其相关设备,其中该方法包括:获取桌面应用程序运行的原始应用平台以及目标应用平台;针对目标应用平台,基于wails框架进行初始化,生成与该目标应用平台相适配的目标项目,其中,目标项目包括前端模块以及后端模块;将原始应用平台的原始代码移植至后端模块中,得到移植代码;通过动态的运行时库对移植代码中的函数和结构体进行绑定;利用前端模块直接调用后端模块已绑定的移植代码,编译生成跨平台的桌面应用程序。本申请通过基于wails框架构建跨平台的桌面应用程序,能够兼容不同应用平台的差异,提升跨平台桌面应用程序的构建效率,加快跨平台桌面应用程序的运行速度,简单方便。方便。方便。

【技术实现步骤摘要】
跨平台桌面应用程序的实现方法及其相关设备


[0001]本申请涉及计算机
,尤其涉及一种跨平台桌面应用程序的实现方法及其相关设备。

技术介绍

[0002]相关技术中,由于多系统的开发和导入,客户端往往需要支持多个平台,这带来了跨平台桌面客户端的流行。跨平台桌面客户端的一套代码能够在多个平台使用和运行,从而减轻开发和维护开销。
[0003]现有的跨平台桌面客户端主要通过以下方式实现:
[0004](1)Electron框架。Electron框架是一个开源框架,能够让开发者使用基于JavaScript、HTML和CSS的架构来构建在macOS、Windows和Linux系统上运行的桌面应用程序。但是,由于Electron程序包含了webview模块的源文件,导致应用程序的体积过于庞大,打包后的体积普遍超过100M,而且运行速度较慢,功能单一,严重影响应用程序性能;
[0005](2)QT框架。QT框架是基于C++的应用程序框架,能够让开发者使用C++库的方式构建可以在Windows、Linux和macOS系统上运行的桌面应用程序,也可以在嵌入式平台和移动系统上运行。但是,C++语言本身具有一定的开发门槛,需要对C++语言掌握熟练的人才能正确的使用。C++的生态对开发前端的支持也不够。考虑到C++程序的复杂性,不适合在一般桌面应用程序中,尤其是在新的项目环境中使用;
[0006](3)Flutter框架。Flutter框架也是一个开源框架,开发者可以通过Flutter框架的完整的软件开发工具包构建在iOS和Android系统上运行的移动应用程序。但是,Flutter框架往往需要跟本地的UI进行结合才能形成良好的用户体验。因此考虑到适配性,Flutter框架一般不适合在桌面应用程序开发中使用。
[0007]因此,考虑到上述几种框架的缺点,有必要寻求一种更加轻便和高效的跨平台桌面应用程序实现方案。

技术实现思路

[0008]有鉴于此,本申请提出了一种跨平台桌面应用程序的实现方法及其相关设备,能够兼容不同应用平台的差异,提升跨平台桌面应用程序的构建效率,加快跨平台桌面应用程序的运行速度,简单方便。
[0009]根据本申请的一方面,提供了一种跨平台桌面应用程序的实现方法,所述跨平台桌面应用程序的实现方法包括:获取桌面应用程序运行的原始应用平台以及目标应用平台;针对所述目标应用平台,基于wails框架进行初始化,生成与该目标应用平台相适配的目标项目,其中,所述目标项目包括前端模块以及后端模块;将所述原始应用平台的原始代码移植至所述后端模块中,得到移植代码;通过动态的运行时库对所述移植代码中的函数和结构体进行绑定;利用所述前端模块直接调用所述后端模块已绑定的移植代码,编译生成跨平台的所述桌面应用程序。
[0010]进一步地,所述前端模块基于JavaScript语言编码,所述后端模块基于Go语言编码,针对所述目标应用平台,基于wails框架进行初始化,生成与该目标应用平台相适配的目标项目,包括:根据所述目标应用平台确定与该目标应用平台对应的模板的优先级;基于预设的模板平台映射表,选取与所述优先级对应的目标模板;根据所述目标模板进行初始化,生成与该目标应用平台相适配的目标项目。
[0011]进一步地,所述后端模块包括Go模块文件,将所述原始应用平台的原始代码移植至所述后端模块中,得到移植代码,包括:将所述原始应用平台的原始代码镜像至所述Go模块文件中;对所述Go模块文件中的Go代码进行校验,得到校验结果;在所述校验结果为通过的情况下,得到移植代码;在所述校验结果为不通过的情况下,重新检查所述原始代码,直至所述校验结果为通过。
[0012]进一步地,通过动态的运行时库对所述移植代码中的函数和结构体进行绑定,包括:根据所述目标应用平台在所述后端模块中选取需要暴露的第一目标函数或第一目标结构体;将所述第一目标函数或第一目标结构体的实例绑定至所述目标项目的Bind字段中。
[0013]进一步地,所述运行时库包括Go运行时库以及JavaScript运行时库,所述第一目标函数或第一目标结构体的实例基于所述Go运行时库运行,通过动态的运行时库对所述移植代码中的函数和结构体进行绑定,还包括:侦听对应于所述目标项目的项目构建指令;在运行所述目标项目的项目构建指令的情况下,将所述Go运行时库切换至所述JavaScript运行时库,自动生成基于JavaScript运行时库的第二目标函数或第二目标结构体。
[0014]进一步地,利用所述前端模块直接调用所述后端模块已绑定的移植代码,编译生成跨平台的所述桌面应用程序,包括:通过所述前端模块直接调用所述第二目标函数或第二目标结构体;配置并读取所述前端模块的配置文件,将所述目标项目编译生成单个二进制文件;基于所述二进制文件生成所述桌面应用程序。
[0015]进一步地,利用所述前端模块直接调用所述后端模块已绑定的移植代码,编译生成跨平台的所述桌面应用程序,还包括:实时检测所述桌面应用程序的资源的运行情况;在所述桌面应用程序的资源发生更改的情况下,判断所述应用程序的资源的类型;根据所述应用程序的资源的类型切换所述Go运行时库以及JavaScript运行时库,重新装载所述桌面应用程序。
[0016]根据本申请的又一方面,提供了跨平台桌面应用程序的实现装置,所述跨平台桌面应用程序的实现装置包括:平台获取模块,用于获取桌面应用程序运行的原始应用平台以及目标应用平台;项目生成模块,用于针对所述目标应用平台,基于wails框架进行初始化,生成与该目标应用平台相适配的目标项目,其中,所述目标项目包括前端模块以及后端模块;代码移植模块,用于将所述原始应用平台的原始代码移植至所述后端模块中,得到移植代码;绑定模块,用于通过动态的运行时库对所述移植代码中的函数和结构体进行绑定;编译模块,用于利用所述前端模块直接调用所述后端模块已绑定的移植代码,编译生成跨平台的所述桌面应用程序。
[0017]根据本申请的又一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述跨平台桌面应用程序的实现方法。
[0018]根据本申请的又一方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使
得所述一个或多个处理器实现所述跨平台桌面应用程序的实现方法。
[0019]通过获取桌面应用程序运行的原始应用平台以及目标应用平台,接着针对所述目标应用平台,基于wails框架进行初始化,生成与该目标应用平台相适配的目标项目,然后将所述原始应用平台的原始代码移植至所述后端模块中,得到移植代码,再通过动态的运行时库对所述移植代码中的函数和结构体进行绑定,最后利用所述前端模块直接调用所述后端模块已绑定的移植代码,编译生成跨平台的所述桌面应用程序,根据本申请的各方面能够兼容不同应用平台的差异,提升跨平台桌面应用程序的构建效率,加快跨平台桌面应本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种跨平台桌面应用程序的实现方法,其特征在于,所述方法包括:获取桌面应用程序运行的原始应用平台以及目标应用平台;针对所述目标应用平台,基于wails框架进行初始化,生成与该目标应用平台相适配的目标项目,其中,所述目标项目包括前端模块以及后端模块;将所述原始应用平台的原始代码移植至所述后端模块中,得到移植代码;通过动态的运行时库对所述移植代码中的函数和结构体进行绑定;利用所述前端模块直接调用所述后端模块已绑定的移植代码,编译生成跨平台的所述桌面应用程序。2.根据权利要求1所述的跨平台桌面应用程序的实现方法,其特征在于,所述前端模块基于JavaScript语言编码,所述后端模块基于Go语言编码,针对所述目标应用平台,基于wails框架进行初始化,生成与该目标应用平台相适配的目标项目,包括:根据所述目标应用平台确定与该目标应用平台对应的模板的优先级;基于预设的模板平台映射表,选取与所述优先级对应的目标模板;根据所述目标模板进行初始化,生成与该目标应用平台相适配的目标项目。3.根据权利要求1所述的跨平台桌面应用程序的实现方法,其特征在于,所述后端模块包括Go模块文件,将所述原始应用平台的原始代码移植至所述后端模块中,得到移植代码,包括:将所述原始应用平台的原始代码镜像至所述Go模块文件中;对所述Go模块文件中的Go代码进行校验,得到校验结果;在所述校验结果为通过的情况下,得到移植代码;在所述校验结果为不通过的情况下,重新检查所述原始代码,直至所述校验结果为通过。4.根据权利要求1所述的跨平台桌面应用程序的实现方法,其特征在于,通过动态的运行时库对所述移植代码中的函数和结构体进行绑定,包括:根据所述目标应用平台在所述后端模块中选取需要暴露的第一目标函数或第一目标结构体;将所述第一目标函数或第一目标结构体的实例绑定至所述目标项目的Bind字段中。5.根据权利要求4所述的跨平台桌面应用程序的实现方法,其特征在于,所述运行时库包括Go运行时库以及JavaScript运行时库,所述第一目标函数或第一目标结构体的实例基于所述Go运行时库运行,通过动态的运行时库对所述移植代码中的函数和结构体进行绑定,还包括:侦听对应于所述目标项目的项目构建指令...

【专利技术属性】
技术研发人员:邱红蕾
申请(专利权)人:平安银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1