CN110286927A - Flutter应用的热更新方法、装置及设备 - Google Patents
Flutter应用的热更新方法、装置及设备 Download PDFInfo
- Publication number
- CN110286927A CN110286927A CN201910551006.0A CN201910551006A CN110286927A CN 110286927 A CN110286927 A CN 110286927A CN 201910551006 A CN201910551006 A CN 201910551006A CN 110286927 A CN110286927 A CN 110286927A
- Authority
- CN
- China
- Prior art keywords
- flutter
- product
- version
- new version
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000012545 processing Methods 0.000 claims description 18
- 238000009434 installation Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 12
- 230000005055 memory storage Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 10
- 230000006837 decompression Effects 0.000 description 9
- 230000005291 magnetic effect Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000005611 electricity Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 208000021760 high fever Diseases 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000008140 language development Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001755 vocal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供一种Flutter应用的热更新方法、装置及设备,该方法包括:从服务器获取新版本的Flutter产物存储在备份目录;当应用再次启动时,从所述备份目录获取所述新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动。有效提高了热更新效率,降低了启动时间。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种Flutter应用的热更新方法、装置及设备。
背景技术
Flutter是Google推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过Dart语言开发应用App。为了提高用户的体验,作为一种在客户端执行的项目,Flutter的热更新能力尤为重要。
但是,目前Flutter自己支持的热更新方式还比较羸弱,对于安卓Android平台,当前提供的一种热更新方式为:提供一个执行的URL链接,每次应用启动时会拉取该URL链接下的压缩文件,解压缩后根据版本和时间戳进行替换。现有的热更新方式启动耗时较长。
发明内容
本公开提供一种Flutter应用的热更新方法、装置及设备,以解决现有技术热更新效率低等缺陷。
本公开第一个方面提供一种Flutter应用的热更新方法,包括:
从服务器获取新版本的Flutter产物存储在备份目录;
当应用再次启动时,从所述备份目录获取所述新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动。
本公开第二个方面提供一种Flutter应用的热更新装置,包括:
获取模块,用于从服务器获取新版本的Flutter产物存储在备份目录;
处理模块,用于当应用再次启动时,从所述备份目录获取所述新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动。
本公开第三个方面提供一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机程序;所述至少一个处理器执行所述存储器存储的计算机程序,以实现第一个方面提供的方法。
本公开第四个方面提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时实现第一个方面提供的方法。
本公开提供的Flutter应用的热更新方法、装置及设备,通过从服务器获取新版本的Flutter产物存储在备份目录,当应用再次启动时,从所述备份目录获取所述新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动,有效实现了Flutter应用的热更新,有效提高了热更新效率,降低启动时间。解决了现有技术每次启动拉取URL链接下的压缩文件,解压缩后根据版本和时间戳进行替换导致启动时间长的问题。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开一实施例提供的Flutter应用的热更新方法的流程示意图;
图2为本公开另一实施例提供的Flutter应用的热更新方法的流程示意图;
图3为本公开一实施例提供的Flutter应用的热更新装置的结构示意图;
图4为本公开一实施例提供的电子设备的结构示意图;
图5为本公开一实施例提供电子设备的示例性结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
首先对本公开所涉及的名词进行解释:
Flutter:Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。Flutter可以与现有的代码一起工作。Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。
Dart:Dart是谷歌开发的计算机编程语言,后来被Ecma(ECMA-408)认定为标准。它被用于web、服务器、移动应用和物联网等领域的开发。它是宽松开源许可证(修改的BSD证书)下的开源软件。Dart是面向对象的、类定义的、单继承的语言。它的语法类似C语言,可以转译为JavaScript,支持接口(interfaces)、混入(mixins)、抽象类(abstract classes)、具体化泛型(reified generics)、可选类型(optional typing)和sound type system。
APK:Android Package,安卓安装包。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。
AOT编译模式:运行前编译模式。AOT,Ahead Of Time,指运行前编译,可以避免在运行时的编译性能消耗和内存消耗,可以在程序运行初期就达到最高性能,可以显著的加快程序的启动。
本公开实施例提供的Flutter应用的热更新方法,适用于安卓平台的Flutter应用的热更新。用户在客户端启动应用后,即在应用处于开启状态下,可以通过客户端向服务器查询Flutter产物是否有更新,若有更新,则从服务器下载Flutter产物,存放到备份目录,安卓平台的拉取组件采取双缓存机制,在应用的缓存目录中设置有主目录和备份目录两个目录,用于存储Flutter产物,应用启动时基于主目录的Flutter产物进行启动,启动后,由于主目录当前正在使用,获取到的新版本的Flutter产物需要存储在备份目录。当该应用被关闭并再次启动时,先判断备份目录中是否有新版本的Flutter产物,若有则先将备份目录中的新版本的Flutter产物拷贝到主目录覆盖主目录中的旧版本的Flutter产物,则可以基于新版本的Flutter产物进行启动,从而实现热更新。相对于现有技术每次启动拉取URL链接下的压缩文件,解压缩后根据版本和时间戳进行替换,有效提高了热更新效率,降低启动时间。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
本公开一实施例提供一种Flutter应用的热更新方法,用于安卓平台的Flutter应用的热更新。本公开实施例的执行主体为Flutter应用的热更新装置,该装置可以设置在客户端中。
如图1所示,为本公开实施例提供的Flutter应用的热更新方法的流程示意图,该方法包括:
步骤101,从服务器获取新版本的Flutter产物存储在备份目录。
具体的,可以在应用启动后的任意空闲时间或者预先设置的时间,从服务器获取新版本的Flutter产物存储在备份目录。
安卓平台的拉取组件采取双缓存机制,即在应用的缓存目录中设置有主目录和备份目录两个目录,用于存储Flutter产物,应用启动时基于主目录的Flutter产物进行启动,启动后,由于主目录当前正在使用,获取到的新版本的Flutter产物需要存储在备份目录,为下一次启动做准备。
步骤102,当应用再次启动时,从备份目录获取新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动。
具体的,当该应用被关闭并再次启动时,先判断备份目录中是否有新版本的Flutter产物,若有则先将备份目录中的新版本的Flutter产物拷贝到主目录覆盖主目录中的旧版本的Flutter产物,则可以基于新版本的Flutter产物进行启动,从而实现热更新。
本公开实施例提供的Flutter应用的热更新方法,通过从服务器获取新版本的Flutter产物存储在备份目录,当应用再次启动时,从备份目录获取新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动,有效实现了Flutter应用的热更新,有效提高了热更新效率,降低启动时间。解决了现有技术每次启动拉取URL链接下的压缩文件,解压缩后根据版本和时间戳进行替换导致启动时间长的问题。
本公开另一实施例对上述实施例提供的方法做进一步补充说明。
如图2所示,为本实施例提供的Flutter应用的热更新方法的流程示意图。
作为一种可实施的方式,在上述实施例的基础上,可选地,步骤101具体包括:
步骤1011,向服务器发送更新查询请求,以使服务器根据更新查询请求判断是否有新版本的Flutter产物。
其中,更新查询请求包括渠道信息、平台信息及当前版本信息。
具体的,用户在客户端启动应用后,即在应用处于开启状态下,可以通过客户端向服务器发送更新查询请求,更新查询请求包括应用的渠道信息、平台信息及当前版本信息。
其中,渠道信息是指应用的资源来源,这里渠道信息为Flutter。平台信息指安卓平台、iOS平台等,这里平台信息为安卓平台。当前版本信息是指客户端该应用中Flutter产物的当前版本。比如可以为每次更新设置版本号,版本号按照某种递增的方式设置。
服务器接收到客户端发送的更新查询请求后,从更新查询请求获取渠道信息、平台信息及当前版本信息。服务器根据客户端发送的当前版本及本地的版本,可以判断出相对于该客户端,该应用是否有新版本的Flutter产物。服务器可以通过版本控制组件实现版本控制,当有新版本的Flutter产物时,向客户端返回对应的新版本的Flutter产物。
通过版本控制,当服务器中相对于该客户端的应用有多个版本的Flutter产物时,服务器可以将最新版本的Flutter产物返回给客户端,使客户端直接升级到最新版本,进一步提高热更新效率。
步骤1012,当有新版本的Flutter产物时,接收服务器返回的新版本的Flutter产物。
其中,Flutter产物为基于运行前编译模式对Flutter代码进行编译的编译结果。
具体的,当服务器返回新版本的Flutter产物,客户端即可接收到服务器返回的新版本的Flutter产物,也即从服务器获取到了新版本的Flutter产物。
作为另一种可实施的方式,在上述实施例的基础上,可选地,在从服务器获取新版本的Flutter产物存储在备份目录之前,该方法还包括:
步骤2011,当应用启动时,若应用为首次启动,则解压安卓安装包,获取安卓安装包中的Flutter产物。
步骤2012,将Flutter产物拷贝到主目录,进行启动。
具体的,应用启动时,可以首先判断是否为首次启动,首次启动即为应用在客户端安装时启动。若应用为首次启动,启动时的Flutter产物来自于应用的安卓安装包APK自带的资源解压,即需要解压APK,获取APK中的Flutter产物,存储到主目录中,用于应用首次启动。之后则可以根据版本控制拉取对应的更新产物(即上述新版本的Flutter产物),并存入目前未被使用的备份目录,当用户再次开启应用时,应用即可选择更新产物进行启动。
本公开实施例提供的Flutter应用的热更新方法,只需在首次启动时,解压APK,获得APK中的Flutter产物,后续每次启动均无需再解压APK,从服务器检查更新即可。
作为另一种可实施的方式,在上述实施例的基础上,可选地,若服务器没有新版本的Flutter产物,则基于旧版本的Flutter产物进行启动。
具体的,若服务器判断没有新版本的Flutter产物,服务器可以向客户端返回不需更新或没有新版本等表示的消息,客户端接收到服务器发送的不需更新或或没有新版本等表示的消息后,则可以按照正常启动方式启动,即基于主目录中的旧版本的Flutter产物进行启动。
作为一种可实施的方式,在上述实施例的基础上,可选地,从备份目录获取新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动,包括:
步骤2021,将备份目录中的新版本的Flutter产物拷贝到主目录,覆盖主目录中的旧版本的Flutter产物;
步骤2022,基于新版本的Flutter产物,进行启动。
具体的,在将新版本的Flutter产物存储到备份目录中后,当应用再次启动时,将备份目录中的新版本的Flutter产物拷贝到主目录,覆盖主目录中的旧版本的Flutter产物,从而实现Flutter产物的热更新,使得客户端可以基于新版本的Flutter产物进行启动应用。
需要说明的是,本公开实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本公开不做限定。
本公开实施例提供的Flutter应用的热更新方法,通过从服务器获取新版本的Flutter产物存储在备份目录,当应用再次启动时,从备份目录获取新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动,有效实现了Flutter应用的热更新,有效提高了热更新效率,降低启动时间。解决了现有技术每次启动拉取URL链接下的压缩文件,解压缩后根据版本和时间戳进行替换导致启动时间长的问题。并且可以实现版本控制,进一步提高热更新的效率。
本公开再一实施例提供一种Flutter应用的热更新装置,用于执行上述实施例的方法。
如图3所示,为本公开实施例提供的Flutter应用的热更新装置的结构示意图。该Flutter应用的热更新装置30包括获取模块31和处理模块32。
其中,获取模块,用于从服务器获取新版本的Flutter产物存储在备份目录;处理模块,用于当应用再次启动时,从备份目录获取新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动。
关于本公开实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
根据本公开实施例提供的Flutter应用的热更新装置,通过从服务器获取新版本的Flutter产物存储在备份目录,当应用再次启动时,从备份目录获取新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动,有效实现了Flutter应用的热更新,有效提高了热更新效率,降低启动时间。解决了现有技术每次启动拉取URL链接下的压缩文件,解压缩后根据版本和时间戳进行替换导致启动时间长的问题。
本公开又一实施例对上述实施例提供的装置做进一步补充说明,以执行上述实施例提供的方法。
作为一种可实施的方式,在上述实施例的基础上,可选地,获取模块,具体用于:
向服务器发送更新查询请求,以使服务器根据更新查询请求判断是否有新版本的Flutter产物,更新查询请求包括渠道信息、平台信息及当前版本信息;
当有新版本的Flutter产物时,接收服务器返回的新版本的Flutter产物;
其中,Flutter产物为基于运行前编译模式对Flutter代码进行编译的编译结果。
作为另一种可实施的方式,在上述实施例的基础上,可选地,处理模块,还用于:
当应用首次启动时,解压安卓安装包,获取安卓安装包中的Flutter产物;
将Flutter产物拷贝到主目录,进行启动。
作为另一种可实施的方式,在上述实施例的基础上,可选地,处理模块,还用于:
若服务器没有新版本的Flutter产物,则基于旧版本的Flutter产物进行启动。
作为另一种可实施的方式,在上述实施例的基础上,可选地,处理模块,具体用于:
将备份目录中的新版本的Flutter产物拷贝到主目录,覆盖主目录中的旧版本的Flutter产物;
基于新版本的Flutter产物,进行启动。
关于本公开实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是,本公开实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本公开不做限定。
根据本公开实施例的Flutter应用的热更新装置,通过从服务器获取新版本的Flutter产物存储在备份目录,当应用再次启动时,从备份目录获取新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动,有效实现了Flutter应用的热更新,有效提高了热更新效率,降低启动时间。解决了现有技术每次启动拉取URL链接下的压缩文件,解压缩后根据版本和时间戳进行替换导致启动时间长的问题。并且可以实现版本控制,进一步提高热更新的效率。
本公开再一实施例提供一种电子设备,用于执行上述实施例提供的方法。该电子设备可以为终端(或称客户端),具体为基于安卓平台的客户端。
如图4所示,为本公开实施例提供的电子设备的结构示意图。该电子设备50包括:至少一个处理器51和存储器52;
存储器存储计算机程序;至少一个处理器执行存储器存储的计算机程序,以实现上述实施例提供的方法。
根据本公开实施例的电子设备,通过从服务器获取新版本的Flutter产物存储在备份目录,当应用再次启动时,从备份目录获取新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动,有效实现了Flutter应用的热更新,有效提高了热更新效率,降低启动时间。解决了现有技术每次启动拉取URL链接下的压缩文件,解压缩后根据版本和时间戳进行替换导致启动时间长的问题。并且可以实现版本控制,进一步提高热更新的效率。
作为一种示例性的实施例,可选地,如图5所示,为本公开实施例提供的电子设备的示例性结构示意图。该电子设备800可以包括处理装置(例如中央处理器、图形处理器等)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储装置808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有电子设备800操作所需的各种程序和数据。处理装置801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
通常,以下装置可以连接至I/O接口805:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置806;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置807;包括例如磁带、硬盘等的存储装置808;以及通信装置809。通信装置809可以允许电子设备800与其他设备进行无线或有线通信以交换数据。虽然图5示出了具有各种装置的电子设备800,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置809从网络上被下载和安装,或者从存储装置808被安装,或者从ROM 802被安装。在该计算机程序被处理装置801执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
本公开又一实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时实现上述任一实施例提供的方法。
根据本公开实施例的计算机可读存储介质,通过从服务器获取新版本的Flutter产物存储在备份目录,当应用再次启动时,从所述备份目录获取所述新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动,有效实现了Flutter应用的热更新,有效提高了热更新效率,降低启动时间。解决了现有技术每次启动拉取URL链接下的压缩文件,解压缩后根据版本和时间戳进行替换导致启动时间长的问题。并且可以实现版本控制,进一步提高热更新的效率。
第一方面,根据本公开的一个或多个实施例,提供了一种Flutter应用的热更新方法,包括:
从服务器获取新版本的Flutter产物存储在备份目录;
当应用再次启动时,从所述备份目录获取所述新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动。
根据本公开的一个或多个实施例,所述从服务器获取新版本的Flutter产物,包括:
向服务器发送更新查询请求,以使所述服务器根据所述更新查询请求判断是否有新版本的Flutter产物,所述更新查询请求包括渠道信息、平台信息及当前版本信息;
当有新版本的Flutter产物时,接收所述服务器返回的新版本的Flutter产物;
其中,Flutter产物为基于运行前编译模式对Flutter代码进行编译的编译结果。
根据本公开的一个或多个实施例,在从服务器获取新版本的Flutter产物存储在备份目录之前,所述方法还包括:
当所述应用首次启动时,解压安卓安装包,获取安卓安装包中的Flutter产物;
将所述Flutter产物拷贝到主目录,进行启动。
根据本公开的一个或多个实施例,若服务器没有新版本的Flutter产物,则基于旧版本的Flutter产物进行启动。
根据本公开的一个或多个实施例,所述从所述备份目录获取所述新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动,包括:
将所述备份目录中的新版本的Flutter产物拷贝到主目录,覆盖主目录中的旧版本的Flutter产物;
基于所述新版本的Flutter产物,进行启动。
第二方面,根据本公开的一个或多个实施例,提供了一种Flutter应用的热更新装置,包括:
获取模块,用于从服务器获取新版本的Flutter产物存储在备份目录;
处理模块,用于当应用再次启动时,从所述备份目录获取所述新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动。
根据本公开的一个或多个实施例,所述获取模块,具体用于:
向服务器发送更新查询请求,以使所述服务器根据所述更新查询请求判断是否有新版本的Flutter产物,所述更新查询请求包括渠道信息、平台信息及当前版本信息;
当有新版本的Flutter产物时,接收所述服务器返回的新版本的Flutter产物;
其中,Flutter产物为基于运行前编译模式对Flutter代码进行编译的编译结果。
根据本公开的一个或多个实施例,所述处理模块,还用于:
当所述应用首次启动时,解压安卓安装包,获取安卓安装包中的Flutter产物;
将所述Flutter产物拷贝到主目录,进行启动。
根据本公开的一个或多个实施例,所述处理模块,还用于:
若服务器没有新版本的Flutter产物,则基于旧版本的Flutter产物进行启动。
根据本公开的一个或多个实施例,所述处理模块,具体用于:
将所述备份目录中的新版本的Flutter产物拷贝到主目录,覆盖主目录中的旧版本的Flutter产物;
基于所述新版本的Flutter产物,进行启动。
第三方面,根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的涉及所述的Flutter应用的热更新方法。
第四方面,根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的涉及所述的Flutter应用的热更新方法。
在本公开所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本公开实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本公开各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述各实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的范围。
Claims (10)
1.一种Flutter应用的热更新方法,其特征在于,包括:
从服务器获取新版本的Flutter产物存储在备份目录;
当应用再次启动时,从所述备份目录获取所述新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动。
2.根据权利要求1所述的方法,其特征在于,所述从服务器获取新版本的Flutter产物,包括:
向服务器发送更新查询请求,以使所述服务器根据所述更新查询请求判断是否有新版本的Flutter产物,所述更新查询请求包括渠道信息、平台信息及当前版本信息;
当有新版本的Flutter产物时,接收所述服务器返回的新版本的Flutter产物;
其中,Flutter产物为基于运行前编译模式对Flutter代码进行编译的编译结果。
3.根据权利要求1所述的方法,其特征在于,在从服务器获取新版本的Flutter产物存储在备份目录之前,所述方法还包括:
当所述应用首次启动时,解压安卓安装包,获取安卓安装包中的Flutter产物;
将所述Flutter产物拷贝到主目录,进行启动。
4.根据权利要求1所述的方法,其特征在于,若服务器没有新版本的Flutter产物,则基于旧版本的Flutter产物进行启动。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述从所述备份目录获取所述新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动,包括:
将所述备份目录中的新版本的Flutter产物拷贝到主目录,覆盖主目录中的旧版本的Flutter产物;
基于所述新版本的Flutter产物,进行启动。
6.一种Flutter应用的热更新装置,其特征在于,包括:
获取模块,用于从服务器获取新版本的Flutter产物存储在备份目录;
处理模块,用于当应用再次启动时,从所述备份目录获取所述新版本的Flutter产物,覆盖旧版本的Flutter产物,进行启动。
7.根据权利要求6所述的装置,其特征在于,所述获取模块,具体用于:
向服务器发送更新查询请求,以使所述服务器根据所述更新查询请求判断是否有新版本的Flutter产物,所述更新查询请求包括渠道信息、平台信息及当前版本信息;
当有新版本的Flutter产物时,接收所述服务器返回的新版本的Flutter产物;
其中,Flutter产物为基于运行前编译模式对Flutter代码进行编译的编译结果。
8.根据权利要求6所述的装置,其特征在于,所述处理模块,还用于:
当所述应用首次启动时,解压安卓安装包,获取安卓安装包中的Flutter产物;
将所述Flutter产物拷贝到主目录,进行启动。
9.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机程序;所述至少一个处理器执行所述存储器存储的计算机程序,以实现权利要求1-5中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时实现权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910551006.0A CN110286927A (zh) | 2019-06-24 | 2019-06-24 | Flutter应用的热更新方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910551006.0A CN110286927A (zh) | 2019-06-24 | 2019-06-24 | Flutter应用的热更新方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110286927A true CN110286927A (zh) | 2019-09-27 |
Family
ID=68005376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910551006.0A Pending CN110286927A (zh) | 2019-06-24 | 2019-06-24 | Flutter应用的热更新方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110286927A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110634102A (zh) * | 2019-11-19 | 2019-12-31 | 成都品果科技有限公司 | 基于flutter的跨平台证件照移动终端系统及其使用方法 |
CN110750288A (zh) * | 2019-10-23 | 2020-02-04 | 广州华多网络科技有限公司 | 原生工程配置方法、装置、电子设备及存储介质 |
CN110928729A (zh) * | 2019-12-06 | 2020-03-27 | 深圳乐信软件技术有限公司 | 应用程序flutter功能的控制方法、装置、终端设备及存储介质 |
CN110990177A (zh) * | 2019-11-05 | 2020-04-10 | 贝壳技术有限公司 | 故障修复方法、装置、系统、存储介质及电子设备 |
CN111008009A (zh) * | 2019-11-05 | 2020-04-14 | 贝壳技术有限公司 | 基于Flutter的业务组件化方法及系统 |
CN111008007A (zh) * | 2019-11-06 | 2020-04-14 | 贝壳技术有限公司 | 组件开发方法、系统、存储介质及处理器 |
CN111158689A (zh) * | 2019-12-30 | 2020-05-15 | 深圳Tcl数字技术有限公司 | 跨系统的ui应用生成方法、设备及计算机可读存储介质 |
CN111338666A (zh) * | 2020-02-10 | 2020-06-26 | 北京字节跳动网络技术有限公司 | 一种实现应用程序升级的方法、装置、介质和电子设备 |
CN111694564A (zh) * | 2020-06-05 | 2020-09-22 | 百度在线网络技术(北京)有限公司 | Flutter混合模式的编译方法、装置、设备和介质 |
CN111740948A (zh) * | 2020-05-12 | 2020-10-02 | 北京沃东天骏信息技术有限公司 | 数据包发布方法、动态更新方法、装置、设备及介质 |
CN112965731A (zh) * | 2021-02-26 | 2021-06-15 | 平安壹钱包电子商务有限公司 | 基于Tinker的Flutter热更新方法、装置、设备及存储介质 |
CN113064593A (zh) * | 2021-04-12 | 2021-07-02 | 深圳市活力天汇科技股份有限公司 | 移动app动态化的方法、装置、计算机设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130227539A1 (en) * | 2012-02-29 | 2013-08-29 | Microsoft Corporation | Updating applications |
CN107729041A (zh) * | 2017-07-26 | 2018-02-23 | 上海壹账通金融科技有限公司 | 应用程序热更新方法、装置、终端和存储介质 |
CN109739600A (zh) * | 2018-12-26 | 2019-05-10 | 网易传媒科技(北京)有限公司 | 数据处理方法、介质、装置和计算设备 |
-
2019
- 2019-06-24 CN CN201910551006.0A patent/CN110286927A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130227539A1 (en) * | 2012-02-29 | 2013-08-29 | Microsoft Corporation | Updating applications |
CN107729041A (zh) * | 2017-07-26 | 2018-02-23 | 上海壹账通金融科技有限公司 | 应用程序热更新方法、装置、终端和存储介质 |
CN109739600A (zh) * | 2018-12-26 | 2019-05-10 | 网易传媒科技(北京)有限公司 | 数据处理方法、介质、装置和计算设备 |
Non-Patent Citations (2)
Title |
---|
ZHENGXIAOYONG: "Flutter动态化探索", 《HTTPS://JUEJIN.CN/POST/6844903794040373262》 * |
闲鱼技术: "揭秘Flutter Hot Reload(原理篇)", 《HTTPS://JUEJIN.CN/POST/6844903695038021639》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750288A (zh) * | 2019-10-23 | 2020-02-04 | 广州华多网络科技有限公司 | 原生工程配置方法、装置、电子设备及存储介质 |
CN110750288B (zh) * | 2019-10-23 | 2023-03-24 | 广州华多网络科技有限公司 | 原生工程配置方法、装置、电子设备及存储介质 |
CN111008009B (zh) * | 2019-11-05 | 2023-02-24 | 贝壳技术有限公司 | 基于Flutter的业务组件化方法及系统 |
CN110990177B (zh) * | 2019-11-05 | 2023-10-20 | 贝壳技术有限公司 | 故障修复方法、装置、系统、存储介质及电子设备 |
CN110990177A (zh) * | 2019-11-05 | 2020-04-10 | 贝壳技术有限公司 | 故障修复方法、装置、系统、存储介质及电子设备 |
CN111008009A (zh) * | 2019-11-05 | 2020-04-14 | 贝壳技术有限公司 | 基于Flutter的业务组件化方法及系统 |
CN111008007A (zh) * | 2019-11-06 | 2020-04-14 | 贝壳技术有限公司 | 组件开发方法、系统、存储介质及处理器 |
CN111008007B (zh) * | 2019-11-06 | 2023-03-28 | 贝壳技术有限公司 | 组件开发方法、系统、存储介质及处理器 |
CN110634102A (zh) * | 2019-11-19 | 2019-12-31 | 成都品果科技有限公司 | 基于flutter的跨平台证件照移动终端系统及其使用方法 |
CN110928729A (zh) * | 2019-12-06 | 2020-03-27 | 深圳乐信软件技术有限公司 | 应用程序flutter功能的控制方法、装置、终端设备及存储介质 |
CN110928729B (zh) * | 2019-12-06 | 2023-04-11 | 深圳乐信软件技术有限公司 | 应用程序flutter功能的控制方法、装置、终端设备及存储介质 |
CN111158689A (zh) * | 2019-12-30 | 2020-05-15 | 深圳Tcl数字技术有限公司 | 跨系统的ui应用生成方法、设备及计算机可读存储介质 |
CN111338666A (zh) * | 2020-02-10 | 2020-06-26 | 北京字节跳动网络技术有限公司 | 一种实现应用程序升级的方法、装置、介质和电子设备 |
CN111740948A (zh) * | 2020-05-12 | 2020-10-02 | 北京沃东天骏信息技术有限公司 | 数据包发布方法、动态更新方法、装置、设备及介质 |
CN111694564A (zh) * | 2020-06-05 | 2020-09-22 | 百度在线网络技术(北京)有限公司 | Flutter混合模式的编译方法、装置、设备和介质 |
CN111694564B (zh) * | 2020-06-05 | 2023-08-04 | 百度在线网络技术(北京)有限公司 | Flutter混合模式的编译方法、装置、设备和介质 |
CN112965731A (zh) * | 2021-02-26 | 2021-06-15 | 平安壹钱包电子商务有限公司 | 基于Tinker的Flutter热更新方法、装置、设备及存储介质 |
CN112965731B (zh) * | 2021-02-26 | 2023-02-14 | 平安壹钱包电子商务有限公司 | 基于Tinker的Flutter热更新方法、装置、设备及存储介质 |
CN113064593B (zh) * | 2021-04-12 | 2022-04-12 | 深圳市活力天汇科技股份有限公司 | 移动app动态化的方法、装置、计算机设备及存储介质 |
CN113064593A (zh) * | 2021-04-12 | 2021-07-02 | 深圳市活力天汇科技股份有限公司 | 移动app动态化的方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110286927A (zh) | Flutter应用的热更新方法、装置及设备 | |
CN105100191B (zh) | 一种云编译实现Java应用安装的方法、装置及系统 | |
CN105677335B (zh) | 提高移动终端首次开机速度的方法及装置 | |
US8635522B2 (en) | Hybrid web container for cross-platform mobile applications | |
CN109710870A (zh) | H5页面的加载方法、装置、电子设备及可读存储介质 | |
CN102622241B (zh) | 一种软件升级方法及装置 | |
CN104375849B (zh) | 加载内核的方法及装置 | |
TWI520061B (zh) | 移動裝置的應用程式框架 | |
CN109542445A (zh) | 一种Android插件化开发的方法和装置 | |
CN109375918A (zh) | 小程序的界面渲染方法、装置、电子设备和存储介质 | |
CN108228818A (zh) | 网页资源加载方法及装置、电子设备、以及存储介质 | |
US8954922B2 (en) | Service emulator substituting for backend components to satisfy needs of front end components | |
CN106980508A (zh) | 用于生成页面的方法和装置 | |
CN112579048B (zh) | 小程序集成方法、装置、电子设备及存储介质 | |
CN107463406A (zh) | 发布移动应用的方法和电子设备 | |
CN109960580A (zh) | 一种部署开票服务的方法及系统 | |
CN109240697A (zh) | 调用处理方法及装置、存储介质 | |
CN106168901A (zh) | 应用程序字体自定义方法和控制方法及相应装置 | |
CN116301951B (zh) | 一种基于kubernetes的微服务应用安装升级方法及装置 | |
CN108733370B (zh) | 原生app的样式化显示方法、装置、终端及存储介质 | |
CN109933364A (zh) | 一种代码管理方法 | |
CN109582317A (zh) | 用于调试寄宿应用的方法和装置 | |
CN111338666A (zh) | 一种实现应用程序升级的方法、装置、介质和电子设备 | |
CN109947423A (zh) | 代码生成方法、装置、终端和介质 | |
CN113220339A (zh) | 一种页面生成方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190927 |
|
RJ01 | Rejection of invention patent application after publication |