flutter应用的更新方法、装置、设备及存储介质
技术领域
1.本技术涉及计算机技术领域,特别是涉及一种flutter应用的更新方法、相应的一种flutter应用的更新装置、相应的一种电子设备以及一种计算机存储介质。
背景技术:
2.flutter跨平台应用框架(一种开源的跨平台应用开发框架)能够实现一套代码同时支持移动端、桌面端和web端,通常需要同时实现电脑客户端桌面版本和移动端版本的应用,主要是基于flutter跨平台框架开发实现的。
3.然而,具有跨平台特点的flutter框架,其自身的热更新能力较为羸弱,基于flutter框架所实现的flutter应用在版本更新时需要用户手动安装应用安装包,不仅需要用户干预,而且进行的是全量升级,无法进行增量升级,不符合用户无感知升级的服务体验。
技术实现要素:
4.鉴于上述问题,提出了本技术实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种flutter应用的更新方法、相应的一种flutter应用的更新装置、相应的一种电子设备以及一种计算机存储介质。
5.本技术实施例公开了一种flutter应用的更新方法,所述方法包括:
6.通过flutter应用所在终端获取具有跨平台特性的中间字节码文件;所述中间字节码文件用于对所述flutter应用进行更新;
7.通过flutter应用所在终端预置的后端编译器,编译所述具有跨平台特性的中间字节码文件,得到与flutter应用所在终端相应的二进制文件;
8.执行所述二进制文件对所述flutter应用进行更新。
9.可选地,所述通过flutter应用所在终端获取具有跨平台特性的中间字节码文件,包括:
10.通过flutter应用所在终端的后台服务进程,向服务端定时拉取对flutter应用更新的中间字节码文件;所述服务端用于接收将用于更新flutter应用的dart源代码文件编译得到的中间字节码文件。
11.可选地,所述中间字节码文件包括签名信息,所述通过flutter应用所在终端获取具有跨平台特性的中间字节码文件,包括:
12.通过flutter应用所在终端的后台服务进程,根据所述签名信息从服务端拉取新版本的中间字节码文件。
13.可选地,所述flutter应用所在终端预置的后端编译器具有平台标识,所述通过flutter应用所在终端预置的后端编译器,编译所述具有跨平台特性的中间字节码文件,得到与flutter应用所在终端相应的二进制文件,包括:
14.采用预置的后端编译器将所述中间字节码文件编译为与所述平台标识相应的二
进制文件,以符合flutter应用所在终端平台特定的二进制文件。
15.可选地,还包括:
16.将编译后得到的二进制文件存储至所述flutter应用的备份目录,所述备份目录用于在所述flutter应用的安装目录被占用时加载使用。
17.可选地,所述执行所述二进制文件对所述flutter应用进行更新,包括:
18.响应对所述flutter应用的启动指令和/或重启动指令,加载所述flutter应用的安装目录中的二进制文件启动所述flutter应用,以对所述flutter应用进行更新。
19.可选地,所述加载所述flutter应用的安装目录中的二进制文件启动所述flutter应用,包括:
20.获取所述flutter应用的备份目录中存在的新版本的二进制文件,将所述新版本的二进制文件覆盖至所述flutter应用的安装目录中旧版本的二进制文件;
21.在所述flutter应用启动时,执行所述安装目录中新版本的二进制文件加载更新后的flutter应用。
22.本技术实施例还公开了一种flutter应用的更新装置,所述装置包括:
23.中间字节码文件获取模块,位于flutter应用所在终端,用于获取具有跨平台特性的中间字节码文件;所述中间字节码文件用于对所述flutter应用进行更新;
24.中间字节码文件编译模块,位于flutter应用所在终端预置的后端编译器,用于编译所述具有跨平台特性的中间字节码文件,得到与flutter应用所在终端相应的二进制文件;
25.应用更新模块,用于执行所述二进制文件对所述flutter应用进行更新。
26.可选地,所述中间字节码文件获取模块包括:
27.中间字节码文件获取子模块,用于通过flutter应用所在终端的后台服务进程,向服务端定时拉取对flutter应用更新的中间字节码文件;所述服务端用于接收将用于更新flutter应用的dart源代码文件编译得到的中间字节码文件。
28.可选地,所述中间字节码文件包括签名信息,所述中间字节码文件获取模块包括:
29.中间字节码文件获取子模块,还用于通过flutter应用所在终端的后台服务进程,根据所述签名信息从服务端拉取新版本的中间字节码文件。
30.可选地,所述flutter应用所在终端预置的后端编译器具有平台标识,所述中间字节码文件编译模块包括:
31.中间字节码文件编译子模块,用于采用预置的后端编译器将所述中间字节码文件编译为与所述平台标识相应的二进制文件,以符合flutter应用所在终端平台特定的二进制文件。
32.可选地,所述中间字节码文件编译模块还包括:
33.中间字节码文件存储子模块,用于将编译后得到的二进制文件存储至所述flutter应用的备份目录,所述备份目录用于在所述flutter应用的安装目录被占用时加载使用。
34.可选地,所述应用更新模块包括:
35.应用更新子模块,用于响应对所述flutter应用的启动指令和/或重启动指令,加载所述flutter应用的安装目录中的二进制文件启动所述flutter应用,以对所述flutter
应用进行更新。
36.可选地,所述应用更新子模块包括:
37.二进制文件覆盖单元,用于获取所述flutter应用的备份目录中存在的新版本的二进制文件,将所述新版本的二进制文件覆盖至所述flutter应用的安装目录中旧版本的二进制文件;
38.二进制文件执行单元,用于在所述flutter应用启动时,执行所述安装目录中新版本的二进制文件加载更新后的flutter应用。
39.本技术实施例还公开了一种电子设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现任一项所述flutter应用的更新方法的步骤。
40.本技术实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现任一项所述flutter应用的更新方法的步骤。
41.本技术实施例包括以下优点:
42.在本技术实施例中,通过下发具有跨平台特性的中间字节码,以及通过flutter应用拉取新版本的中间字节码并将flutter应用的中间字节码编译成特定平台的二进制文件,以通过flutter应用所在终端执行与其平台相应的二进制文件,实现对flutter应用的热更新。通过具有跨平台特性的中间字节码对flutter应用进行更新,只需通过维护一份中间文件,即可适用于任意平台的flutter应用更新,且可利用用户的使用环境把flutter应用的中间字节码编译成特定平台的二进制文件,在无需引入额外后台系统的情况下,无需用户干预,即可在用户操作系统上动态升级软件,实现flutter应用源代码的全量热更新。
附图说明
43.图1是本技术的一种flutter应用的更新方法实施例的步骤流程图;
44.图2是本技术的另一种flutter应用的更新方法实施例的步骤流程图;
45.图3是本技术实施例提供的flutter应用的更新方法的流程示意图;
46.图4是本技术实施例提供的flutter应用更新的应用场景图;
47.图5是本技术的一种flutter应用的更新装置实施例的结构框图。
具体实施方式
48.为使本技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本技术作进一步详细的说明。
49.flutter跨平台应用框架能够实现一套代码同时支持移动端、桌面端和web端,通常需要同时实现电脑客户端桌面版本和移动端版本的应用,主要是基于flutter跨平台框架开发实现的。但对于flutter框架开发的应用更新而言,其不能像web端的代码一样,在一经发布到服务器上后,用户在重新刷新浏览器时即可直接加载到新代码以使用到新更新的功能,其通常在flutter应用存在新版本时,需要用户手动安装应用安装包,且通过固定周期的客户端软件进行全量发布,这种更新方式不足以满足应用服务快速扩展的需求,无法满足flutter应用服务的快速迭代以及新版本代码的快捷开发与发布,同时软件的全量安
装包升级,需要用户进行强制安装包升级,对用户的干预比较大,严重影响到应用产品的用户体验。
50.flutter应用可以是基于flutter框架开发与发布的应用,在flutter应用更新的相关技术中,一种是通过下载替换flutter二进制编译产物的方式进行更新,其主要是从服务器获取flutter新版本的二进制产物,存储在备份目录,以是此应用再次启动时能够从备份目录获取新flutter的编译产物,覆盖旧版本的编译产物实现对flutter应用的更新。此方案具有完备的动态性,可以完整实现整个flutter代码在用户侧热更新,但在此方案中所使用的flutter的二进制编译产物具有平台相关性,例如android端的产物不能直接给ios端中的flutter应用使用,在flutter应用所在的客户端平台较多的情况下,需要给每个平台单独准备特定版本的二进制文件并分别进行单独推送,不仅增加了版本的管理和维护成本,且其应用发布流程复杂。
51.另一种是基于对页面动态化ui组件的搭建的方式进行更新,其主要将需要映射的react组件转换成抽象语法树ast,获取ast中的组件标签节点,并获取组件标签节点下的组件信息,将组件信息映射为flutter的组件信息,在应用运行时动态下发到应用程序。此方案具有跨平台特性,且能够满足一套方案同时适配所有的桌面端和移动端的需求,但此方案的更新动态性有限,其只能够实现ui界面的热更新,无法做到服务逻辑与非ui代码逻辑的热更新,且此方案还需要使用的后台搭建系统来完成react组件到flutter组件的映射,即需要引入额外的后台系统,增加了此方案实现的成本。
52.基于上述相关技术的缺点,本技术实施例提出了在无需引入额外的后台系统下,对flutter应用的生产环境代码进行热更新的方法,即对真实用户的软件使用环境的代码进行热更新的方法,弥补官方flutter框架应用暂不支持应用生产环境的代码热更新的不足。其中,所谓的热更新指的是在不通过用户手动安装应用程序安装包来实现应用的更新,而是在应用运行时进行增量更新,从而达到更新软件的目的。
53.本技术实施例的核心思想之一在于基于下发具有跨平台移植特性的中间字节码,直接推送flutter应用的中间字节码文件到用户侧,具有统一的跨平台特性,通过只需维护一份中间字节码文件的更新包即可适用于flutter应用所有平台的应用热更新,其可利用用户的使用环境将flutter应用的中间字节码编译成特定平台的二进制文件,把二进制文件的编译任务放到用户的使用环境,减轻服务器的压力和投入成本,在无需引入额外后台系统的情况下,达到应用热更新的效果,实现用户的无感知升级,从而提升客户端的产品体验。
54.参照图1,示出了本技术的一种flutter应用的更新方法实施例的步骤流程图,具体可以包括如下步骤:
55.步骤101,通过flutter应用所在终端获取具有跨平台特性的中间字节码文件;
56.在本技术的一种实施例中,可基于对具有跨平台移植特性的中间字节码进行获取实现对flutter应用的更新,中间字节码文件的跨平台特性可以表现为对于不同平台具有的对应的不同执行文件,此中间字节码文件可以跨平台执行,不受各个平台特性的限制。
57.在具体实现中,对于具有跨平台特性的中间字节码文件,存在开发阶段以及使用阶段。在开发阶段,主要表现为将dart源代码编译成中间字节码的过程,flutter应用在开发环境中的热重载模式主要是通过动态加载中间字节码实现的,此时可通过中间字节码文
件把开发环境中的热重载模式进行定制化改造,应用于用户生产环境。
58.所获取的具有跨平台特性的中间字节码文件,主要是对flutter应用所能够执行的源代码进行编译得到,所用于编译的flutter应用所能够执行的源代码可以是用于对flutter应用进行全量更新的相关代码,所编译得到的中间字节码文件具有对flutter应用的更新功能。其中,为了便于对此版本更新代码的便捷发布,与满足多客户端平台的适用性,可将此源代码进行编译为中间字节码文件,使其具有统一的跨平台特性。
59.在实际应用中,在对字节码进行使用时,此具有跨平台特性的中间字节码文件可直接推送到flutter应用所在终端的应用侧,基于中间字节码文件所具有的跨平台特性,flutter应用所在终端所接收的中间字节码文件可适用于任意平台,例如pc端和移动端的应用热更新,在只需维护一份中间字节码文件的情况下,降低对flutter应用的发布流程复杂性,以及降低对应用更新文件的维护成本。
60.步骤102,通过flutter应用所在终端预置的后端编译器,编译具有跨平台特性的中间字节码文件,得到与flutter应用所在终端相应的二进制文件;
61.所获取的中间字节码文件具有跨平台特性,但在flutter应用的release模式下,其不能够被flutter应用直接执行,即并不能通过中间字节码文件实现对flutter应用生产环境的热更新,此时需要将中间字节码文件编译成终端平台能够执行的二进制文件类型,即将具有跨平台特性的文件按照特定平台进行特定化。
62.在本技术的一种实施例中,在对中间字节码文件进行编译的过程中,为了实现后续对此平台上所安装的flutter应用的热更新,需要将中间字节码文件编译成符合应用所在终端平台特性的文件,即需将文件进行编译得到与flutter应用所在终端相应的二进制文件。
63.在实际应用中,主要可利用用户的操作系统环境,在软件安装包中预置用户操作系统相关的后端编译器工具,利用用户的使用环境,把flutter应用的中间字节码编译成特定平台的二进制文件,从而达到应用热更新的效果。
64.步骤103,执行二进制文件对flutter应用进行更新。
65.在将具有跨平台特性的文件按照特定平台进行特定化后,flutter应用所在终端可直接执行符合其平台且能够执行的二进制文件,完成对flutter应用的更新。
66.具体的,可以表现为在对flutter应用进行启动/重启后,通过加载新版本的二进制文件启动flutter应用,从而在用户无感知的情况下,实现对flutter应用的热更新。
67.flutter应用的缓存目录中通常设置有安装目录和备份目录两个目录,其中安装目录可以为主目录,所设置的两个目录均可用于存储flutter产物,这里指的是所编译得到的二进制文件,而备份目录主要可以用来缓存服务端下发的中间字节码文件,flutter应用的启动主要是基于安装目录的二进制文件进行启动,那么此时主要可以表现为基于加载安装目录中存在的新版本的二进制文件启动flutter应用。
68.在本技术实施例中,通过下发具有跨平台特性的中间字节码,以及通过flutter应用拉取新版本的中间字节码并将flutter应用的中间字节码编译成特定平台的二进制文件,以通过flutter应用所在终端执行与其平台相应的二进制文件,实现对flutter应用的热更新。通过具有跨平台特性的中间字节码对flutter应用进行更新,只需通过维护一份中间文件,即可适用于任意平台的flutter应用更新,且可利用用户的使用环境把flutter应
用的中间字节码编译成特定平台的二进制文件,在无需引入额外后台系统的情况下,无需用户干预,即可在用户操作系统上动态升级软件,实现flutter应用源代码的全量热更新。
69.参照图2,示出了本技术的另一种flutter应用的更新方法实施例的步骤流程图,具体可以包括如下步骤:
70.步骤201,通过flutter应用所在终端的后台服务进程,向服务器获取具有跨平台特性的中间字节码文件;
71.在本技术的一种实施例中,可基于对具有跨平台移植特性的中间字节码进行获取实现对flutter应用的更新,主要可通过flutter应用所在终端的后台服务进程向服务器获取。
72.在实际应用中,所获取的中间字节码文件是由服务端接收开发端上传的编译文件,中间字节码文件主要是基于用于更新flutter应用的dart源代码文件编译得到的文件,其中,dart源代码文件为对flutter应用进行服务逻辑更新的源代码文件,其为flutter应用能够执行的代码。
73.具体的,参照图3,示出了本技术实施例提供的flutter应用的更新方法的流程示意图,开发端可将所编写的dart源代码(即dart code)编译为能够支持跨平台移植的中间字节码文件kernel_snapshot,中间字节码与平台无关且可无缝跨平台移植,而kernel_snapshot.dill文件是dart语言特有的中间字节码文件,其同样可以支持跨平台移植,flutter应用在开发环境中的热重载模式是借助kernel_snapshot中间字节码实现的,此时可通过所编译的中间字节码文件实现flutter应用在开发环境中的热重载模式,并将编译后的中间字节码文件kernel_snapshot进行签名打包压缩后上传至服务端,以便服务端向flutter应用所在的任意平台推送此份中间字节码文件,此中间字节码文件具有跨平台移植特性的中间字节码,对于不同平台具有的对应的不同执行文件,此中间字节码文件可以跨平台执行,不受各个平台特性的限制,即在只需维护一份中间字节码文件的情况下,降低对flutter应用的发布流程复杂性,以及降低对应用更新文件的维护成本。
74.上传至服务端的中间字节码文件具有签名信息,此签名信息可以携带有代码的更新版本号、更新时间、文件上传时间等,在向服务器获取具有跨平台特性的中间字节码文件,可通过flutter应用所在终端的后台服务进程,向服务端定时拉取对flutter应用更新的中间字节码文件,且在定时拉取时,可根据签名信息从服务端拉取新版本的中间字节码文件。
75.在实际应用中,在flutter软件启动的过程,可通过启动后台服务进程,例如dart service进程与服务端通信,定时拉取与新版本匹配的中间字节码文件。在启动时,应用后台服务进程可进行检查包更新的过程,主要是检查服务端是否存在新版本的中间字节码文件,其检查可基于签名信息中二进制文件的版本信息以及压缩时间,与软件新发布的版本是否相同进行确定,在判定存在新版本的中间字节码文件时,可下载新的kernel_snapshot.dill文件,即二进制文件。
76.步骤202,采用预置的后端编译器将中间字节码文件编译为与平台标识相应的二进制文件;
77.所获取的中间字节码文件具有跨平台特性,但在flutter应用的release模式下,其不能够被flutter应用直接执行,即并不能通过中间字节码文件实现对flutter应用生产
环境的热更新,此时需要将中间字节码文件编译成终端平台能够执行的二进制文件类型,即将具有跨平台特性的文件按照特定平台进行特定化。
78.具体的,flutter应用所在终端预置有平台标识相应的后端编译器,例如预置的后端编译器工具gen_snapshot,所具有的平台标识可以与终端的特定平台相应,在下载新的kernel_snapshot.dill中间字节码文件后,可采用预置的后端编译器将中间字节码文件编译为与平台标识相应的二进制文件app.so,以符合flutter应用所在终端平台特定的二进制文件,根据所生成的二进制文件实现flutter应用的更新。
79.步骤203,将编译后得到的二进制文件存储至flutter应用的备份目录;
80.flutter应用的缓存目录中通常设置有安装目录和备份目录两个目录,其中安装目录可以为主目录,所设置的两个目录均可用于存储flutter产物,这里指的是所编译得到的二进制文件,而备份目录主要可以用来缓存服务端下发的中间字节码文件,flutter应用的启动主要是基于安装目录的二进制文件进行启动,在flutter应用处于启动状态时flutter应用的安装目录被应用使用,此时可将获取到的新版本的flutter产物(即二进制文件app.so)存储在备份目录,以为flutter应用的下一次启动做准备。
81.步骤204,在flutter应用重启时,加载二进制文件对flutter应用进行更新。
82.在将具有跨平台特性的文件按照特定平台进行特定化后,flutter应用所在终端可直接执行符合其平台且能够执行的二进制文件,完成对flutter应用的更新。flutter应用的启动主要是基于安装目录的二进制文件进行启动,此时可响应对flutter应用的启动指令和/或重启动指令,加载flutter应用的安装目录中的二进制文件启动flutter应用,以对flutter应用进行更新。
83.具体的,由于新版本的二进制文件在上一次flutter应用启动时保存在flutter应用的备份目录,此时需要在应用重新启动时拉取备份目录中新版本的二进制文件app.so移动至安装目录,以基于安装目录对flutter应用进行启动。
84.在重新启动flutter应用时,可以检查备份目录中是否存在新版本的二进制文件,若存在,则可将安装目录的旧版本二进制文件替换为新版本的二进制文件,删除备份目录中的二进制文件,那么对于备份目录中是否存在新版本的二进制文件的判定,可通过检查备份目录中是否存在二进制文件实现。
85.在具体实现中,可以获取flutter应用的备份目录中存在的新版本的二进制文件,将新版本的二进制文件覆盖至flutter应用的安装目录中旧版本的二进制文件,使得在flutter应用启动时,能够执行安装目录中新版本的二进制文件加载更新后的flutter应用,完成对flutter应用的一次代码的热更新。
86.参照图4,示出了本技术实施例提供的flutter应用更新的应用场景图,涉及到开发端401,服务端402以及flutter应用所在的平台403,所更新的flutter应用可以包括flutter应用1与flutter应用2,flutter应用所在的平台403可以包括flutter应用1所在的平台1,flutter应用1所在的平台2,以及flutter应用2所在的平台2,其中平台1与平台2为不同的平台。即此应用场景可以为在相同/不同的平台上同时对相同/不同的flutter应用进行更新的场景。
87.具体的,开发人员可以在开发端401编写针对更新flutter应用的dart源代码,其不仅可以编写针对flutter应用1的dart源代码1,还可以编写针对flutter应用2的dart源
代码2,此时还可以分别将针对更新flutter应用1的dart源代码1与针对flutter应用2的dart源代码1,编译成具有跨平台特性的中间字节码文件,例如kernel_snapshot.dill文件,然后可以经由开发端401向服务端402上传所编译的分别针对更新flutter应用1与更新flutter应用2的中间字节码文件,以供flutter应用所在平台进行拉取与加载,完成对在不同平台上相应flutter应用的更新。其中,所编译的中间字节码文件具有跨平台特性,开发端所上传的用于对flutter应用1进行更新的中间字节码文件1,以及用于对flutter应用2进行更新的中间字节码文件2均只有一份。
88.flutter应用1所在的平台1,flutter应用1所在的平台2,以及flutter应用2所在的平台2均可以基于其后台服务进程定时向服务端402拉取用于更新其安装的flutter应用,主要可以拉取新版本的针对其自身安装的flutter应用的中间字节码文件,以进行更新。具体的,flutter应用1所在的平台1与flutter应用1所在的平台2在定时拉取时可以获取新版本的针对flutter应用1的中间字节码文件1,此时平台1可以基于预置的与平台1相符的后端编译器1,采用后端编译器1将新版本的针对flutter应用1的中间字节码文件1编译为符合平台1的二进制文件以在平台1重启flutter应用1时进行加载与更新,平台2也可以基于预置的与平台2相符的后端编译器2,采用后端编译器2将新版本的针对flutter应用2的中间字节码文件1编译为符合平台2的二进制文件以在平台2重启flutter应用2时进行加载与更新;而对于平台2对flutter应用2的更新与加载过程,在定时拉取到针对更新flutter应用2的新版本的中间字节码文件2时,此时可以通过平台2中预置的后端编译器2将其编译成针对更新flutter应用2的新版本的二进制文件,预置的后端编译器与平台特性相符,那么无论平台2所更新的是flutter应用1还是flutter应用2,其所使用的可以是相同的后端编译器。
89.即在对于相同/不同的平台上同时对相同/不同的flutter应用进行更新的场景下,只需针对其所更新的同一flutter应用维护一份用于更新的中间字节码文件即可,所维护的中间字节码文件具有跨平台特性,此份中间字节码文件在不同平台进行使用更新时可以被不同平台的编译器编译成符合其平台特性的二进制文件。
90.在本技术实施例中,通过下发具有跨平台特性的中间字节码,以及通过flutter应用拉取新版本的中间字节码并将flutter应用的中间字节码编译成特定平台的二进制文件,以通过flutter应用所在终端执行与其平台相应的二进制文件,实现对flutter应用的热更新。通过具有跨平台特性的中间字节码对flutter应用进行更新,只需通过维护一份中间文件,即可适用于任意平台的flutter应用更新,且可利用用户的使用环境把flutter应用的中间字节码编译成特定平台的二进制文件,在无需引入额外后台系统的情况下,无需用户干预,即可在用户操作系统上动态升级软件,实现flutter应用源代码的全量热更新。
91.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术实施例并不受所描述的动作顺序的限制,因为依据本技术实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本技术实施例所必须的。
92.参照图5,示出了本技术的一种flutter应用的更新装置实施例的结构框图,具体可以包括如下模块:
93.中间字节码文件获取模块501,位于flutter应用所在终端,用于获取具有跨平台特性的中间字节码文件;所述中间字节码文件用于对所述flutter应用进行更新;
94.中间字节码文件编译模块502,位于flutter应用所在终端预置的后端编译器,用于编译所述具有跨平台特性的中间字节码文件,得到与flutter应用所在终端相应的二进制文件;
95.应用更新模块503,用于执行所述二进制文件对所述flutter应用进行更新。
96.在本技术的一种实施例中,中间字节码文件获取模块501可以包括如下子模块:
97.中间字节码文件获取子模块,用于通过flutter应用所在终端的后台服务进程,向服务端定时拉取对flutter应用更新的中间字节码文件;所述服务端用于接收将用于更新flutter应用的dart源代码文件编译得到的中间字节码文件。
98.在本技术的一种实施例中,所述中间字节码文件包括签名信息,中间字节码文件获取模块501可以包括如下子模块:
99.中间字节码文件获取子模块,还用于通过flutter应用所在终端的后台服务进程,根据所述签名信息从服务端拉取新版本的中间字节码文件。
100.在本技术的一种实施例中,所述flutter应用所在终端预置的后端编译器具有平台标识,中间字节码文件编译模块502可以包括如下子模块:
101.中间字节码文件编译子模块,用于采用预置的后端编译器将所述中间字节码文件编译为与所述平台标识相应的二进制文件,以符合flutter应用所在终端平台特定的二进制文件。
102.在本技术的一种实施例中,中间字节码文件编译模块502还可以包括如下子模块:
103.中间字节码文件存储子模块,用于将编译后得到的二进制文件存储至所述flutter应用的备份目录,所述备份目录用于在所述flutter应用的安装目录被占用时加载使用。
104.在本技术的一种实施例中,应用更新模块503可以包括如下子模块:
105.应用更新子模块,用于响应对所述flutter应用的启动指令和/或重启动指令,加载所述flutter应用的安装目录中的二进制文件启动所述flutter应用,以对所述flutter应用进行更新。
106.在本技术的一种实施例中,应用更新子模块可以包括如下单元:
107.二进制文件覆盖单元,用于获取所述flutter应用的备份目录中存在的新版本的二进制文件,将所述新版本的二进制文件覆盖至所述flutter应用的安装目录中旧版本的二进制文件;
108.二进制文件执行单元,用于在所述flutter应用启动时,执行所述安装目录中新版本的二进制文件加载更新后的flutter应用。
109.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
110.本技术实施例还提供了一种电子设备,包括:
111.包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述flutter应用的更新方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
112.本技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述flutter应用的更新方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
113.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
114.本领域内的技术人员应明白,本技术实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本技术实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
115.本技术实施例是参照根据本技术实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
116.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
117.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
118.尽管已描述了本技术实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术实施例范围的所有变更和修改。
119.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
120.以上对本技术所提供的一种flutter应用的更新方法、相应的一种flutter应用的更新装置、相应的一种电子设备以及一种计算机存储介质,进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体
实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
技术特征:
1.一种flutter应用的更新方法,其特征在于,所述方法包括:通过flutter应用所在终端获取具有跨平台特性的中间字节码文件;所述中间字节码文件用于对所述flutter应用进行更新;通过flutter应用所在终端预置的后端编译器,编译所述具有跨平台特性的中间字节码文件,得到与flutter应用所在终端相应的二进制文件;执行所述二进制文件对所述flutter应用进行更新。2.根据权利要求1所述的方法,其特征在于,所述通过flutter应用所在终端获取具有跨平台特性的中间字节码文件,包括:通过flutter应用所在终端的后台服务进程,向服务端定时拉取对flutter应用更新的中间字节码文件;所述服务端用于接收将用于更新flutter应用的dart源代码文件编译得到的中间字节码文件。3.根据权利要求1或2所述的方法,其特征在于,所述中间字节码文件包括签名信息,所述通过flutter应用所在终端获取具有跨平台特性的中间字节码文件,包括:通过flutter应用所在终端的后台服务进程,根据所述签名信息从服务端拉取新版本的中间字节码文件。4.根据权利要求1所述的方法,其特征在于,所述flutter应用所在终端预置的后端编译器具有平台标识,所述通过flutter应用所在终端预置的后端编译器,编译所述具有跨平台特性的中间字节码文件,得到与flutter应用所在终端相应的二进制文件,包括:采用预置的后端编译器将所述中间字节码文件编译为与所述平台标识相应的二进制文件,以符合flutter应用所在终端平台特定的二进制文件。5.根据权利要求1或4所述的方法,其特征在于,还包括:将编译后得到的二进制文件存储至所述flutter应用的备份目录,所述备份目录用于在所述flutter应用的安装目录被占用时加载使用。6.根据权利要求1所述的方法,其特征在于,所述执行所述二进制文件对所述flutter应用进行更新,包括:响应对所述flutter应用的启动指令和/或重启动指令,加载所述flutter应用的安装目录中的二进制文件启动所述flutter应用,以对所述flutter应用进行更新。7.根据权利要求6所述的方法,其特征在于,所述加载所述flutter应用的安装目录中的二进制文件启动所述flutter应用,包括:获取所述flutter应用的备份目录中存在的新版本的二进制文件,将所述新版本的二进制文件覆盖至所述flutter应用的安装目录中旧版本的二进制文件;在所述flutter应用启动时,执行所述安装目录中新版本的二进制文件加载更新后的flutter应用。8.一种flutter应用的更新装置,其特征在于,所述装置包括:中间字节码文件获取模块,位于flutter应用所在终端,用于获取具有跨平台特性的中间字节码文件;所述中间字节码文件用于对所述flutter应用进行更新;中间字节码文件编译模块,位于flutter应用所在终端预置的后端编译器,用于编译所述具有跨平台特性的中间字节码文件,得到与flutter应用所在终端相应的二进制文件;应用更新模块,用于执行所述二进制文件对所述flutter应用进行更新。
9.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-8中任一项所述flutter应用的更新方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述flutter应用的更新方法的步骤。
技术总结
本申请实施例提供了Flutter应用的更新方法、装置、设备及存储介质,所述方法包括:通过Flutter应用所在终端获取具有跨平台特性的中间字节码文件;所述中间字节码文件用于对所述Flutter应用进行更新;通过Flutter应用所在终端预置的后端编译器,编译所述具有跨平台特性的中间字节码文件,得到与Flutter应用所在终端相应的二进制文件;执行所述二进制文件对所述Flutter应用进行更新。通过具有跨平台特性的中间字节码对Flutter应用进行更新,只需通过维护一份中间文件,即可适用于任意平台的Flutter应用更新,且可利用用户的使用环境把Flutter应用的中间字节码编译成特定平台的二进制文件,无需引入额外后台系统,无需用户干预,实现Flutter应用源代码的全量热更新。实现Flutter应用源代码的全量热更新。实现Flutter应用源代码的全量热更新。
技术研发人员:吴晓 沈杰
受保护的技术使用者:阿里巴巴(中国)有限公司
技术研发日:2022.01.30
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-23462.html