CN110990177B - 故障修复方法、装置、系统、存储介质及电子设备 - Google Patents

故障修复方法、装置、系统、存储介质及电子设备 Download PDF

Info

Publication number
CN110990177B
CN110990177B CN201911070144.3A CN201911070144A CN110990177B CN 110990177 B CN110990177 B CN 110990177B CN 201911070144 A CN201911070144 A CN 201911070144A CN 110990177 B CN110990177 B CN 110990177B
Authority
CN
China
Prior art keywords
fault
information
network
router
flutter
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.)
Active
Application number
CN201911070144.3A
Other languages
English (en)
Other versions
CN110990177A (zh
Inventor
韩旭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beike Technology Co Ltd
Original Assignee
Beike Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beike Technology Co Ltd filed Critical Beike Technology Co Ltd
Priority to CN201911070144.3A priority Critical patent/CN110990177B/zh
Publication of CN110990177A publication Critical patent/CN110990177A/zh
Application granted granted Critical
Publication of CN110990177B publication Critical patent/CN110990177B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Abstract

本申请公开了一种故障修复方法、装置、系统、存储介质及电子设备,涉及应用程序开发技术。具体方案包括:根据Flutter端的故障信息确定异常信息;根据异常信息判断是否达到预设修复条件;当达到预设修复条件时,获取安装发生故障的Flutter端的目标设备的设备信息;根据设备信息和故障信息生成网络运行件;网络运行件为在网络环境中运行的Flutter端的组成部件;判断是否满足预设替换条件;当满足预设替换条件时,将目标设备中安装的Flutter端的本地运行件替换为所述网络运行件。本申请可以无需安装新的应用程序,达到快速及时修复Flutter端的故障的目的,且提升应用程序的用户体验。

Description

故障修复方法、装置、系统、存储介质及电子设备
技术领域
本申请涉及应用程序开发技术,特别是涉及一种故障修复方法、装置、系统、存储介质及电子设备。
背景技术
Flutter是谷歌公司推出的一种新型跨平台应用程序开发技术,具有提升开发效率、以及在iOS和安卓Android两个平台展现一致的风格等优点。
但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端的目标设备的设备信息;
运行件生成模块,用于根据所述设备信息和所述故障信息生成网络运行件;网络运行件为在网络环境中运行的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端运行时就可以修复Flutter端的故障,无需等到升级安装新的应用程序,可以及时修复Flutter端的故障,并且避免频繁升级安装新的应用程序,提升应用程序的用户体验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的一种故障修复方法的流程示意图;
图2为本申请实施例的另一种故障修复方法的流程示意图;
图3为Flutter端上传的故障信息;
图4为根据故障信息确定异常信息的流程示意图;
图5为根据故障信息确定异常信息的另一种流程示意图;
图6为本申请实施例的另一种故障修复方法的流程示意图;
图7为本申请实施例的另一种故障修复方法的流程示意图;
图8为本申请实施例的一种故障修复装置的结构示意图;
图9为本申请实施例的一种故障修复系统的结构示意图;
图10为本申请实施例的另一种应用于故障修复系统的故障修复方法的流程示意图;
图11为本申请实施例的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例,例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。
Flutter是谷歌公司推出的一种新型跨平台应用程序开发技术,但是使用Flutter技术开发的应用程序(Application,APP)无法动态修复,当使用Flutter技术开发的APP采集到错误信息时,需要人工对错误信息进行分析并修复故障,最后打包成新的APP投放到应用市场,用户只能通过安装新的APP来修复Flutter端的故障。
然而,在实际实施时,除非发生严重的故障问题,否则不会针对个别用户发生的故障就生成新的APP投放应用市场,从而造成Flutter端的故障无法及时修复。另一方面,如果发生严重故障问题,迫使用户频繁升级安装新的APP,将极大地影响应用程序的用户体验。
有鉴于此,本申请的核心发明点在于,根据Flutter端的故障信息确定异常信息,并针对目标设备的Flutter端进行故障修复,生成网络运行件,在目标设备的Flutter端运行时,将目标设备中安装的Flutter端的本地运行件替换为上述网络运行件。从而有针对性的在目标设备的Flutter端运行时就可以修复Flutter端的故障,无需等到升级安装新的应用程序,可以及时修复Flutter端的故障,并且避免频繁升级安装新的应用程序,提升应用程序的用户体验。
为使本申请的目的、技术方案和优点更加清楚,下面以具体实施例对本发明的技术方案进行详细说明。下面几个具体实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
实施例一
图1为本申请实施例提供的一种故障修复方法的流程示意图,如图1所示,该实施例主要包括:
S101:根据Flutter端的故障信息确定异常信息;所述异常信息包括所述Flutter端发生故障的至少一种故障类型和每种故障类型的故障的发生次数。
Flutter端为由Flutter技术实现的APP或者包含了由Flutter技术实现的组成部件的APP。上述APP安装在手机、平板电脑、车载智能设备、移动支付设备、游戏机、智能手表等移动客户端中,本申请实施例提供的方法不适用于安装在个人电脑,安装在个人电脑的APP并不存在本申请实施例所要解决的技术问题。这里,故障信息是Flutter端在运行时生成的,Flutter端通常每发生一次故障生成一组故障信息,Flutter端生成的故障信息的常用格式为错误堆栈信息。根据Flutter端的故障信息可以确定异常信息,这里,异常信息包括Flutter端发生故障的至少一种故障类型和每种故障类型的故障的发生次数。具体的,在对故障信息分析确定异常信息时,将Flutter端发生的故障按照预先设置的故障类型进行分类,确定该Flutter端发生的故障所属的至少一种故障类型,并确定每种故障类型的故障的发生次数。另外,这里所指的Flutter端的故障信息可以通过一台机器多次上报或者多台机器上报后得到。
S102:根据所述异常信息判断是否达到预设修复条件;当达到预设修复条件时,获取安装发生故障的所述Flutter端的目标设备的设备信息。
在实际实施时,一些微小的故障无需修复,甚至用户都无法察觉故障的存在,因此,通常不是一确定异常信息就进行修复,需要根据异常信息判断是否达到预设修复条件。由于,异常信息包括Flutter端发生故障的至少一种故障类型和每种故障类型的故障的发生次数,这里,根据该Flutter端发生故障的故障类型和/或发生次数判断该Flutter端是否达到预设修复条件。因此,预设修复条件可以根据故障类型和/或发生次数确定。
由于本申请实施例提供的Flutter端故障修复方法可以针对发生故障的目标设备有针对性的进行修复,因此,当判定达到预设修复条件时,首先获取发生故障且需要进行修复的Flutter端所安装的目标设备的设备信息。这里,目标设备的设备信息包括以下至少一种:设备唯一标识符、设备编号、设备名、制造商、品牌、型号、厂商、指令集、硬件序列号、显示屏参数、主板名称、存储器名称等。
S103:根据所述设备信息和所述故障信息生成网络运行件;所述网络运行件携带所述设备信息。
由于针对每个发生故障的Flutter端分别进行故障修复,因此,每个设备中的Flutter端可能已经有所不同,因此,在对目标设备的Flutter端进行故障修复时,需要根据设备信息和异常信息两者进行。
通过生成网络运行件的方式进行故障修复,这里网络运行件为可以正确运行的无故障的Flutter端的组成部件,通过网络(web)实现Flutter端在运行时的替换。网络运行件为在网络环境中运行的Flutter端的组成部件,网络运行件可以通过网络获取,且网络运行件通常在网络容器(web容器)中运行,通过web容器实现在目标设备本地安装的APP中运行网络运行件的目的。
S104:判断是否满足预设替换条件;当满足预设替换条件时,将所述目标设备中安装的所述Flutter端的本地运行件替换为所述网络运行件。
目标设备的Flutter端通过将本地运行件替换为网络运行件进行故障修复,这一替换操作需要在满足预设替换条件时进行,具体的,可以在Flutter端运行时进行替换修复;或者确定自己是否发生了需要修复的故障,在发生需要修复的故障时,才会进行替换修复。因此,需要判断是否满足预设替换条件,在判定满足预设替换条件时,将所述目标设备中安装的所述Flutter端的本地运行件替换为所述网络运行件。这里,本地运行件是在APP安装时被安装到目标设备本地的Flutter端的组成部件。将发生了故障的本地运行件替换为修复了故障的网络运行件,通过web容器在目标设备安装的Flutter端运行,不再运行发生了故障的本地运行件,而是运行修复了故障的网络运行件,即可在不升级安装新的应用程序的情况下,在目标设备的Flutter端运行时就可以修复Flutter端的故障。从而可以及时修复Flutter端的故障,并且大幅提升应用程序的用户体验。
为了针对不同的故障发生情形,提供既保证修复效果,又保证修复效率,还不影响应用程序的用户体验,本申请实施例提供了两种故障修复模式,分别是对APP的Flutter产物进行整体替换,以及仅对出现故障的Flutter页面进行有针对性的替换。下述本申请实施例二提供了对Flutter产物进行整体替换的实施例,实施例三提供了对出现故障的Flutter页面进行有针对性的替换的实施例,实施例四提供了结合两种故障修复模式的实施例。
实施例二
如图2所示,本申请实施例还提供另一种故障修复方法,提供了对Flutter产物进行整体替换的实施例,对Flutter产物进行整体替换时,网络运行件的类型为Flutter网络产物,具体步骤包括:
S201:根据Flutter端的故障信息确定异常信息。
由于开发人员编写的程序代码有缺陷(Bug),或者测试人员测试不到位,会导致投放到应用市场的Flutter端出现故障。Flutter端每发生一次故障,会上传大量以堆栈信息为形式的故障信息至后台的堆栈服务器。Flutter端上传的故障信息如图3所示。从图3中可以看出完整的故障信息包含大量冗余信息,无法直观的判别究竟何处发生了何种异常。并且,将完整的故障信息不加区别的收集分析,会大大增加存储器的消耗,浪费大量存储器空间,并且增加分析难度。
在本申请实施例中,故障用来描述单次的故障,异常用来描述一类故障的集合。因此,故障信息为每次Flutter端发生故障时接收到的故障信息,故障类型为每次Flutter端发生故障时接收到的故障信息所属的类型。异常信息包括Flutter端发生故障的至少一种故障类型和每种故障类型的故障的发生次数,异常类型为至少一种故障类型的集合。
本申请实施例采用下述两种可能的实施方式根据Flutter端的故障信息确定异常信息。
A:如图4所示,一种可能的实施方式中,根据Flutter端的故障信息确定异常信息的步骤包括:
S401:判断所述故障信息所属的异常类型,并根据所述异常类型确定信息数量。
Flutter端上传的故障信息是有规律可循的,通常从故障信息的第一条信息开始的前1-10条信息即可获得足够多信息用以进行故障修复。在实际实施时,有效的故障信息通常为从故障信息的第一条信息开始的前1-10条信息,但也有可能是故障信息中部的至少一条信息,或者至故障信息的最后一条为止的后1-10条信息。信息数量为进行故障修复所需的最少的故障信息个数,示例性的,信息数量的取值范围可以为1~10。
通常情况下,从故障信息的第一条就可以确定故障名称,根据故障名称可以确定故障类型。将确定目标故障信息所需的信息数量相同的故障类型,划分为一个异常类型,一个异常类型对应一个信息数量数值。
示例性的,在获取Flutter端的故障信息后,可以确定故障名称,进而确定故障信息所属的异常类型,从而可以从1~10中确定信息数量的数值,假设,可以确定信息数量为3。
S402:根据所述信息数量,从所述故障信息中确定目标故障信息。
故障信息中包含了很多信息,包括故障名称、故障属性信息、Flutter端的描述信息、故障的关联性信息等,不是所有信息都可用于修复故障,目标故障信息为故障信息中修复故障所必须的信息。
一般而言,从故障信息中从故障信息的第一条信息开始的前N个信息数量个信息为目标故障信息。例如,假设基于图3所示的故障信息确定异常信息,且确定的信息数量为3时,目标故障信息为图3所示的故障信息中的前3个信息,也就是:
“PlatformException(error,Attemp to invoke virtual method‘java.lang.String java.lang.Object.toString()’)
package:flutter/src/services/message_codecs.dart 551:7StandardMethodCodec.decodeEnvelope
package:flutter/src/services/platform_channel.dart 292:18MehtodChannel.invodeMethod”
但实际实施时,也可能从故障信息中的任一条信息开始,取条数为信息数量的故障信息,作为目标故障信息。
S403:根据所述目标故障信息确定所述异常信息。
对故障进行修复时,往往不仅需要得知故障的名称,还需要获取故障属性信息,例如,安装发生故障的Flutter端的目标设备所在的地理位置、发生故障的Flutter端的调用关系等。因此,目标故障信息包含了故障名称和修复故障所必须的每个故障属性信息。
从目标故障信息可以确定故障名称,进行确定故障类型。在预设时长范围内,统计每种故障类型的故障的发生次数,可以得到异常信息。
仅根据目标故障信息确定异常信息与根据原始的故障信息确定异常信息相比,确定的准确度提高,复杂度降低,提升了确定异常信息的效率。且,在将故障信息上传故障日志时,可以仅将目标故障信息上传故障日志保存,这样做一方面不会丢失异常信息,另一方面大大节省了故障日志的存储资源消耗,避免了存储器空间的浪费。
B:如图5所示,在另一种可能的实施方式中,根据Flutter端的故障信息确定异常信息的步骤包括:
S501:判断所述故障信息所属的异常类型,并根据所述异常类型确定信息数量。
S502:根据所述信息数量,从所述故障信息中确定目标故障信息。
S503:判断根据所述目标故障信息能否进行故障修复。
具体的,判断目标故障信息中是否包括了故障名称和修复故障所必须的每个故障属性信息,如果是,则判定能够根据目标故障信息进行故障修复,执行步骤S504;反之,则判定不能根据目标故障信息进行故障修复,执行步骤S505。这里,不能根据目标故障信息进行故障修复,可能为根据目标故障信息无法确定异常信息;也可能为虽然可以根据目标故障信息确定异常信息,但目标故障信息中包含的故障属性信息不足,无法满足修复故障的需求。
S504:根据所述目标故障信息确定所述异常信息。
从目标故障信息可以确定故障名称,进行确定故障类型。在预设时长范围内,统计每种故障类型的故障的发生次数,可以得到异常信息。
S505:根据所述故障信息确定所述异常信息。
当不能根据目标故障信息进行故障修复时,说明目标故障信息包含的信息个数不足,可能提供确定异常信息所需的信息;也可能目标故障信息中包含的故障属性信息不足,无法满足修复故障的需求。此时,仅能确定目前获取的目标故障信息不足以进行故障修复,尚不能确定多少个信息可以进行故障修复。因此,为了确保应用尽可能少的流程就可以进行故障修复,直接将最完整的故障信息取回,根据完整的故障信息确定异常信息和进行故障修复,确保可以成功确定异常信息并进行故障修复。
进一步的,由于确定了目前获取的目标故障信息不足以确定异常信息或进行故障修复,也就是说,要么故障信息所属的异常类型对应的信息数量确定的过少;要么故障信息所属的异常类型归类错误;要么第一次获取到该故障信息所属的故障类型,按照默认的异常类型进行信息数量和目标故障信息的确定,需要根据获取到的目标故障信息进一步确定该故障类型所属的异常类型。因此,可以采用两种可能的实施方式克服此问题:一种可能的实施方式中,增加故障信息所属的异常类型的信息数量的数值;另一种可能的实施方式中,将故障信息划分到对应更多信息数量的异常类型中去,具体的,将这一故障信息所属的故障类型划分到对应更多信息数量的异常类型中去。
S202:根据所述异常信息判断是否达到预设修复条件。
异常信息包括Flutter端发生故障的至少一种故障类型和每种故障类型的故障的发生次数,因此,可以根据故障类型和/或发生次数判断是否达到预设修复条件。
具体的,需要进行故障修复的情况可包含以下两种:1、发生了较为严重的故障,需要立即进行修复;2、发生了多次的故障,需要进行修复。因此,预设修复条件为所述故障类型中包含预设关键故障类型;和/或,任一种所述故障类型的发生次数大于该故障类型对应的预设次数阈值。示例性的,预设关键故障类型可以包括:数组越界、空指针异常等。
当未达到预设修复条件时,回到步骤S201,等待根据Flutter端新的故障信息继续确定异常信息,并判断此时的异常信息是否达到预设修复条件。当达到了预设修复条件时,执行步骤S203。
S203:获取安装发生故障的所述Flutter端的目标设备的设备信息。
本申请实施例提供的Flutter端故障修复方法对发生故障的目标设备有针对性的进行修复,因此首先确定需要进行修复的目标设备,确定目标设备通过获取目标设备的设备信息进行。
S204:获取所述目标设备安装的所述Flutter端的程序代码。
对故障的修复通常需要通过修改程序代码实现,这里的程序代码为实现Flutter端的底层程序代码,因此,根据设备信息有目的性地拉取目标设备中Flutter端的程序代码。
目标设备中可能安装有至少一个Flutter端,但不同的Flutter端执行通常不同的功能、并且由不同的软件开发方开发和发布。因此,软件开发方根据设备标识,就可以有目的性的拉取自己开发的Flutter端的程序代码。
S205:根据所述故障信息修改所述程序代码,利用修改后的程序代码在网络环境下编译生成所述Flutter网络产物;所述Flutter网络产物携带有所述设备信息。
Flutter端的程序代码进行编译后可以是生成Flutter产物,Flutter产物为可以运行的Flutter端或可以运行的Flutter端的组成部件。这里,Flutter网络产物为可以在网络环境中运行的Flutter端或可以在网络环境中运行的Flutter端的组成部件。
根据故障信息修改程序代码从而修复故障;在根据故障信息确定了目标故障信息的情况下,根据目标故障信息修改程序代码从而修复故障。之后为了能够在不更新安装新的APP的情况下对发生故障的Flutter端进行替换,需要借助网络环境进行。因此,在Flutter的网络编译环境(Flutter For Web)中对为了修复故障而修改的程序代码进行编译,从而得到可以在网络环境中运行的Flutter网络产物。为了区别目标设备与其他设备,表明该Flutter网络产物是针对修复目标设备的故障的,需要在Flutter网络产物上携带设备信息。
S206:当Flutter端运行时,判断是否存在Flutter网络产物。
修复过程通常在Flutter端运行时进行。在具体实施时,通常在下一次重新启动Flutter页面时进行。修复过程不是在Flutter端一运行就开始进行的,而是需要首先判断是否满足修复所必须的条件。在本申请实施例二中,必须的修复条件为已经准备好了用于替换的Flutter网络产物。因此,当所述目标设备上安装的所述Flutter端开始运行时,判断是否存在携带有所述目标设备的设备信息的所述Flutter网络产物。当存在所述Flutter网络产物时执行步骤S207,反之,运行原来的Flutter端,直至下一次运行Flutter端时,判定存在携带有目标设备的设备信息的Flutter网络产物为止。
S207:当存在所述Flutter网络产物时,所述目标设备将本地的所述Flutter端的Flutter产物替换为所述Flutter网络产物。
在目标设备的APP中运行Flutter网络产物,需要准备网络环境,在网络运行件为Flutter网络产物时,网络运行环境为可以加载Flutter网络产物的网络容器(FlutterWeb容器)。目标设备的APP将原来随着APP的安装过程安装在本地的Flutter端的Flutter产物替换为FlutterWeb容器中运行的Flutter网络产物。从而实现了无需重新安装APP,即可将Flutter端中有故障的Flutter产物替换为修复了故障的Flutter网络产物。在及时修复Flutter端的故障的同时,避免频繁升级安装新的应用程序。
实施例三
如图6所示,本申请实施例还提供另一种故障修复方法,提供了仅对出现故障的Flutter页面进行有针对性的替换的实施例,对Flutter页面进行针对性替换时,网络运行件的类型为替换网页。Flutter页面为Flutter端中使用Flutter技术实现的页面,Flutter端包含有至少一个Flutter页面。Flutter端出现故障时,可以表现为Flutter端中的至少一个Flutter页面出现故障,此时,仅需要对Flutter页面进行针对性替换即可,但当出现故障的Flutter页面数量较多时,最好采用将Flutter产物替换为Flutter网络产物的替换方式;也可以表现为Flutter端出现较严重的故障,例如Flutter端闪退、崩溃等,此时无法使用替换Flutter页面的方式修复故障,仅能通过将Flutter产物替换为Flutter网络产物的方式修复故障。对出现故障的Flutter页面进行有针对性的替换的具体步骤包括:
S601:根据Flutter端的故障信息确定异常信息。
根据Flutter端的故障信息确定异常信息的实现细节在实施例二的步骤S201中已经进行过详细的阐述,此处不再赘述。
S602:根据所述异常信息判断是否达到预设修复条件。
这里,同样根据故障类型和/或发生次数判断是否达到预设修复条件。且当未达到预设修复条件时,回到步骤S601,等待根据Flutter端新的故障信息继续确定异常信息,并判断此时的异常信息是否达到预设修复条件。当达到了预设修复条件时,执行步骤S603。
S603:获取安装发生故障的所述Flutter端的目标设备的设备信息。
S604:根据所述设备信息和所述故障信息确定所述Flutter端中发生故障的至少一个故障页面。
为了对发生故障的Flutter页面进行针对性替换,需要首先确定Flutter端中发生故障的至少一个故障页面。在根据故障信息确定了目标故障信息的情况下,根据设备信息和目标故障信息确定Flutter端中发生故障的至少一个故障页面。
S605:根据所述故障信息生成每个所述故障页面分别对应的所述替换网页。
根据所述故障信息生成每个所述故障页面分别对应的所述替换网页;或者,在根据故障信息确定了目标故障信息的情况下,根据设备信息和目标故障信息确定Flutter端中发生故障的至少一个故障页面。为每个故障页面分别生成一个对应的替换网页,替换网页与故障页面的页面布局、视觉效果、跳转路径和实现的功能完全相同。优选的,可以采用第5代超级文本标记语言(HyperText Markup Language,HTML)标准规范(HTML5,H5)制作H5网页。一个替换网页对应一个故障页面,替换网页根据异常信息对对应的故障页面进行了故障修复,且由于仅对出现故障的目标设备的故障页面进行替换,因此,每个替换网页需要携带目标设备的设备信息。在Flutter端为了区别每个页面,每个页面都具有一个唯一的页面标识信息。因此,为了确定每个替换页面所需替换的Flutter页面,每个替换网页还需携带页面标识信息。替换页面也可以不携带页面标识信息,而是使用配置的方法,将故障页面的页面标识信息与替换页面或替换页面的网络地址进行一一对应。
S606:当所述目标设备中安装的所述Flutter端开始运行时,在所述Flutter端中准备网络页面展示环境。
由于替换网页是基于H5技术制作的,需要在网络运行环境中运行,并且替换网页的网络运行环境为网络页面展示环境,因此,为了加载并展示替换网页,需要首先在目标设备的Flutter端中准备网络页面展示环境。例如,在目标设备的Flutter端中准备网页视图(WebView)环境。
S607:根据所述设备信息和所述故障页面的页面标识信息,获取对应的所述替换页面的网络地址,并根据所述网络地址获取所述替换页面。
因此,根据设备信息和故障页面的页面标识信息就确定了一个唯一的故障页面,从而可以获取对应的替换网页。由于替换网页制作后遵循网络协议,因此,需要首选获取对应替换网页的网络地址。这里,网络地址通常为超文本传输协议(HyperText TransferProtocol,HTTP协议)格式的远端网络地址。根据上述网络地址,可以获取替换页面。
S608:当所述Flutter端跳转到所述故障页面时,加载所述替换页面。
采用替换网页作为网络运行件时,对故障页面的修复过程也不是在Flutter端一运行就开始进行的,而是需要首先判断是否满足预设替换条件,此时,预设替换条件为所述Flutter端跳转到所述故障页面。这是由于仅在发生故障的故障页面运行时,需要进行替换页面的替换,在跳转到并运行非故障页面时,仅需正常展示Flutter端的页面即可。
因此,当所述Flutter端跳转到故障页面时,加载替换页面,将修复了故障的替换页面展示给用户。具体的,由于替换页面也是基于网络格式的,需要网络环境运行,因此,在准备了网络页面展示环境的基础上,通常还需要创建网络容器,在网络容器中加载替换页面。
对于故障页面较少的情况下,仅针对故障页面进行替换可以以较低的代价快速修复故障,在及时修复故障的基础上,尽可能地降低所需的时间和人力成本。
实施例四
如图7所示,本申请实施例还提供另一种故障修复方法,结合两种故障修复模式,具体步骤包括:
S701:根据Flutter端的故障信息确定异常信息。
S702:根据所述异常信息判断是否达到预设修复条件。
同样根据故障类型和/或发生次数判断是否达到预设修复条件。当未达到预设修复条件时,回到步骤S701,等待根据Flutter端新的故障信息继续确定异常信息,并判断此时的异常信息是否达到预设修复条件。当达到了预设修复条件时,执行步骤S703。
S703:获取安装发生故障的所述Flutter端的目标设备的设备信息。
S704:判断是否达到预设时长阈值。
这里,由于本申请实施例支持两种故障修复模式,因此,需要在此两种故障修复模式之间进行选择,时长阈值的设定是为了防止系统长时间未选择故障修复模式,从而造成系统持续等待甚至进入卡死状态设置的。当达到所述预设时长阈值且仍未获取到所述网络运行件的类型时,选择默认的故障修复模式。由于故障修复模式时通过网络运行件的类型确定的,因此,当达到所述预设时长阈值且仍未获取到所述网络运行件的类型时,将网络运行件的类型确定为默认类型。由于将网络运行件的类型确定为Flutter网络产物,整体替换Flutter端中的Flutter产物可以获得更好的修复效果,故障有更大概率可以得到修复,因此,优选的将Flutter网络产物作为网络运行件的默认类型,也即,执行步骤S205。当然的,在不同的实施情况下,也可以将替换网页作为网络运行件的默认类型。
S705:当达到预设时长阈值且未获取到网络运行件的类型时,将网络运行件的类型确定为Flutter网络产物。
在确定了网络运行件的类型为Flutter网络产物之后,根据实施例二中步骤S204至S207进行Flutter端的故障修复。
S706:当未达到预设时长阈值,且获取到的网络运行件的类型为Flutter网络产物时,对Flutter产物进行整体替换。
具体的,根据实施例二中步骤S204至S207对Flutter产物进行整体替换,从而进行Flutter端的故障修复。
S707:当未达到预设时长阈值,且获取到的网络运行件的类型为替换网页时,对出现故障的Flutter页面进行替换。
具体的,根据实施例三中步骤S604至S608对出现故障的Flutter页面进行有针对性的替换,从而进行Flutter端的故障修复。
基于相同的设计构思,本申请实施例还提供一种Flutter端故障修复装置、系统、存储介质及电子设备。
实施例五
如图8所示,本申请实施例还提供一种故障修复装置800,包括:
异常确定模块801,用于根据Flutter端的故障信息确定异常信息;所述异常信息包括所述Flutter端发生故障的至少一种故障类型和每种故障类型的故障的发生次数;
第一判断模块802,用于根据所述异常信息判断是否达到预设修复条件;
信息获取模块803,用于当判定达到预设修复条件时,获取安装发生故障的所述Flutter端的目标设备的设备信息;
运行件生成模块804,用于根据所述设备信息和所述故障信息生成网络运行件;网络运行件为在网络环境中运行的Flutter端的组成部件;所述网络运行件携带所述设备信息;
第二判断模块805,用于判断是否满足预设替换条件;
替换模块806,用于当满足预设替换条件时,将所述目标设备中安装的所述Flutter端的本地运行件替换为所述网络运行件。运行件生成模块
一种可能的实施方式中,所述网络运行件的类型包括Flutter网络产物或替换网页。
一种可能的实施方式中,所述网络运行件的类型为所述Flutter网络产物;
运行件生成模块804,具体用于:
获取所述目标设备上安装的所述Flutter端的程序代码;
根据所述故障信息修改所述程序代码,利用修改后的程序代码在网络环境下编译生成所述Flutter网络产物;所述Flutter网络产物携带有所述设备信息。
一种可能的实施方式中,在所述网络运行件的类型为所述Flutter网络产物的情况下,所述预设替换条件为:在运行所述Flutter端时,存在所述Flutter网络产物;
替换模块806,具体用于:
当所述目标设备上安装的所述Flutter端开始运行时,判断是否存在携带有所述目标设备的所述设备信息的所述Flutter网络产物;
当存在所述Flutter网络产物时,所述目标设备将本地的所述Flutter端的Flutter产物替换为所述Flutter网络产物。
一种可能的实施方式中,所述网络运行件的类型为所述替换网页;
运行件生成模块804,具体用于:
根据所述设备信息和所述故障信息确定所述Flutter端中发生故障的至少一个故障页面;
根据所述故障信息生成每个所述故障页面分别对应的所述替换网页;每个所述替换网页携带有所述设备信息。
一种可能的实施方式中,在所述网络运行件的类型为所述替换网页的情况下,所述预设替换条件为:运行所述Flutter端时,所述Flutter端跳转到所述故障页面;
替换模块806,具体用于:
当所述目标设备中安装的所述Flutter端开始运行时,在所述Flutter端中准备网络页面展示环境;
根据所述设备信息和所述故障页面的页面标识信息,获取对应的所述替换页面的网络地址,并根据所述网络地址获取所述替换页面;
当所述Flutter端跳转到所述故障页面时,加载所述替换页面。
一种可能的实施方式中,异常确定模块801,具体用于:
判断所述故障信息所属的异常类型,并根据所述异常类型确定信息数量;
根据所述信息数量,从所述故障信息中确定目标故障信息;
根据所述目标故障信息确定所述异常信息。
一种可能的实施方式中,异常确定模块801,还用于:
判断根据所述目标故障信息能否进行故障修复,当根据所述目标故障信息能进行故障修复时,执行所述根据所述目标故障信息确定所述异常信息的步骤;
当根据所述目标故障信息不能进行故障修复时,根据所述故障信息确定所述异常信息。
一种可能的实施方式中,异常确定模块801,还用于:增加所述故障信息所属的所述异常类型的所述信息数量的数值。
一种可能的实施方式中,异常确定模块801,还用于:将所述故障信息划分到包含更多所述信息数量的所述异常类型中去。
一种可能的实施方式中,所述预设修复条件包括:
所述故障类型中包含预设关键故障类型;
和/或,任一种所述故障类型的所述发生次数大于该故障类型对应的预设次数阈值。
一种可能的实施方式中,Flutter端故障修复装置800,还包括:
模式选择模块807,用于判断是否达到预设时长阈值,当没有达到所述预设时长阈值时,获取所述网络运行件的类型;当达到所述预设时长阈值且未获取到所述网络运行件的类型时,将所述网络运行件的类型确定为所述Flutter网络产物。
在故障修复装置800中,异常确定模块801与第一判断模块802连接,异常确定模块801根据Flutter端的故障信息确定异常信息,并将异常信息发送给第一判断模块802。第一判断模块802与信息获取模块803连接,当判定达到预设修复条件时,由信息获取模块803获取设备信息。信息获取模块803与运行件生成模块804连接,将获取的设备信息发送给运行件生成模块804,运行件生成模块804还可以与内部存储器或外部存储器连接,获取故障信息,运行件生成模块804根据设备信息和故障信息生成网络运行件。第二判断模块805和运行件生成模块804分别连接替换模块806,第二判断模块805判断是否满足预设替换条件,当满足预设替换条件时,驱动替换模块806将目标设备中安装的Flutter端的本地运行件替换为网络运行件。
一种可能的实施方式中,故障修复装置800还可以包括模式选择模块807,模式选择模块807连接在信息获取模块803和运行件生成模块804之间,用于确定网络运行件的类型。
一种可能的实施方式中,本申请实施例提供的故障修复装置800还可以包括中央控制模块和存储模块,故障修复装置800中的每个模块均与中央控制模块连接,存储模块也与中央控制模块连接,由中央控制模块进行每个模块之间执行顺序和数据交互的调度,并将每个中间数据存存储在内部存储或存储器中,通过中央控制模块从内部存储或存储器读取中间数据、或者将中间数据写入内部存储或存储器中。
本申请实施例提供的故障修复装置可以无需安装新的应用程序,达到快速及时修复Flutter端的故障的目的,且提升应用程序的用户体验。
实施例六
如图9所示,本申请实施例还提供一种故障修复系统900,具体包括:目标设备901和后台服务器902。
这里,目标设备901为安装有Flutter端的电子设备,具体为安装了由Flutter技术实现的APP客户端或者安装了包含由Flutter技术实现的组成部件的APP客户端的电子设备。例如,目标设备901可以为手机、平板、车载电子设备、移动支付电子设备、智能电视、数码相机、游戏机、智能手表等任一种常见的移动电子设备。其中,目标设备901中安装有Flutter端9011。
后台服务器902为提供数据服务、客户端支持服务、APP更新发布服务等的服务器,可以是目标设备901内部的服务器也可以是目标设备901外部的服务器。其中,后台服务器902包括日志平台9021、打包平台9022和发布平台9023。
Flutter端9011与日志平台9021和发布平台9023连接,打包平台9022与日志平台9021和发布平台9023连接。
Flutter端9011,用于发送故障信息;
日志平台9021,用于根据Flutter端的故障信息确定异常信息;还用于根据所述异常信息判断是否达到预设修复条件;在达到预设修复条件时,获取安装发生故障的所述Flutter端的目标设备的设备信息,并将携带有所述设备信息的第一替换指令发送到所述打包平台;
打包平台9022,用于在接收到所述第一替换指令时,根据所述设备信息和所述故障信息生成携带所述设备信息的网络运行件,并将所述网络运行件发送至发布平台;
发布平台9023,用于在接收到所述网络运行件时,根据所述设备信息,向所述目标设备的所述Flutter端发送所述第二替换指令;
Flutter端9011,还用于在接收到第二替换指令且满足预设替换条件时,将本地运行件替换为网络运行件。
如图10所示,一种利用本申请实施例提供的Flutter端故障修复系统实现的Flutter端故障修复方法,包括如下步骤:
S1001:Flutter端9011发送故障信息给日志平台9021。
在实际实施时,如果不先获取目标故障信息,而是直接依据完整故障信息确定异常信息,则Flutter端9011直接将完整的故障信息发送给日志平台9021。
否则,如果首先获取目标故障信息,并根据目标故障信息确定异常信息,则Flutter端9011仅将目标故障信息发送给日志平台9021。
对应实施例二中的两种实施方式,在可能的实施方式A中,Flutter端9011判断所述故障信息所属的异常类型,并根据所述异常类型确定信息数量,根据所述信息数量,从所述故障信息中确定目标故障信息后,将目标故障信息发送给日志平台9021,并将目标故障信息保存在APP侧,例如存储为堆栈.simple文件。在实施方式B中,Flutter端9011获取目标故障信息后,将目标故障信息发送给日志平台9021,并将目标故障信息和完整的故障信息均保存在APP侧,例如存储为堆栈.simple文件和堆栈.all,如果日志平台9021可以根据目标故障信息进行故障修复,则继续向下执行,如果日志平台9021无法根据目标故障信息进行故障修复,则从Flutter端9011中获取完整的故障信息,从完整的故障信息中确定异常信息。
S1002:日志平台9021根据故障信息确定异常信息。
具体的,根据完整的故障信息或者目标故障信息确定异常信息。
S1003:日志平台9021根据所述异常信息判断是否达到预设修复条件。
S1004:当判定达到预设修复条件时,从Flutter端9011获取发生故障的Flutter端9011所安装的目标设备的设备信息。
在判定达到预设修复条件时,或者在每次确定异常信息时,均可通过电话或在线即时通话工具通知开发人员或测试人员,提醒开发人员即时了解故障的发生,并作出相应的处置行为。
由于本申请实施例对Flutter端9011进行针对性修复,因此不同设备中的Flutter端9011的实现方式、程序代码和版本可能均不同。为了加以区别,为Flutter端9011的每次发布和每次修改设置版本标识信息,此时,日志平台9021在从Flutter端9011获取目标设备的设备信息的同时,还需要从Flutter端9011读取当前运行环境下的Flutter端9011的版本标识信息。
S1005:日志平台9021将携带有设备信息的第一替换指令发送到打包平台9022。
在日志平台9021从目标设备的Flutter端9011读取了版本标识信息时,第一替换指令除了携带有设备信息,还携带有目标设备Flutter端9011的版本标识信息。
S1006:打包平台9022或发布平台9023确定修复模式。
修复模式的确定,也即是网络运行件的类型的确定可以由打包平台9022或发布平台9023进行。
可以由打包平台9022在接收到第一替换指令时,尝试获取网络运行件的类型,例如,提醒开发人员确定网络运行件的类型,或者根据发生故障的故障类型和/或发生次数确定网络运行件的类型。也可以在打包平台9022在接收到第一替换指令时,通过消息、指令、通知、事件或激励等形式,通知发布平台9023尝试获取网络运行件的类型,例如,提醒开发人员确定网络运行件的类型,或者根据发生故障的故障类型和/或发生次数确定网络运行件的类型。如果确定网络运行件的类型为Flutter网络产物,则执行步骤S1007至步骤S1010;如果确定网络运行件的类型为替换网页,则执行步骤S1011至步骤S1012。这里,步骤S1007至步骤S1010,以及步骤S1011至步骤S1012为两种故障修复模式下实现的生成携带所述设备信息的网络运行件,并将所述网络运行件发送至发布平台9023的过程。
具体的,打包平台9022根据设备信息和故障信息生成用于修复目标设备的Flutter端9011故障的携带所述设备信息的网络运行件;在根据故障信息确定目标故障信息的情况下,打包平台9022根据设备信息和目标故障信息生成用于修复目标设备的Flutter端9011故障的携带所述设备信息的网络运行件。
S1007:打包平台9022根据设备信息和版本标识信息从目标设备的Flutter端9011获取Flutter端9011的程序代码。
在不使用版本标识信息进行Flutter端9011的版本管理时,可以仅根据设备信息从目标设备的Flutter端9011获取Flutter端9011的程序代码;在使用版本标识信息进行Flutter端9011的版本管理时,根据设备信息和版本标识信息从目标设备的Flutter端9011获取Flutter端9011的程序代码。
S1008:打包平台9022在修改程序代码修复故障后,编译为网络环境中运行的Flutter网络产物。
S1009:打包平台9022将Flutter网络产物发送至发布平台9023。
在不使用版本标识信息进行Flutter端9011的版本管理时,Flutter网络产物在发送时携带有设备信息;在使用版本标识信息进行Flutter端9011的版本管理时,Flutter网络产物在发送时携带有设备信息,还携带版本标识信息。
S1010:发布平台9023发布或替换Flutter网络产物。
可以由开发人员手动发布或替换发布平台9023的Flutter网络产物,也可以由发布平台9023自动发布或替换Flutter网络产物。在使用版本标识信息进行Flutter端9011的版本管理时,每次接收到新的Flutter网络产物,发布平台9023均自动配置Flutter网络产物的产物版本标识信息。产物版本标识信息就是Flutter网络产物的版本标识信息,与Flutter端9011的程序代码的版本标识信息由对应关系,方便版本管理。
S1011:打包平台9022确定Flutter端9011中发生故障的至少一个故障页面和每个故障页面的页面标识信息,针对每个故障页面,为该故障页面生成对应的替换页面,并将该故障页面的页面标识信息与对应的替换页面的网络地址进行映射。
这一过程也可以自动完成或由开发人员手动完成。
S1012:打包平台9022将每个故障页面上传至发布平台9023。
这里,每个故障页面携带设备信息和页面标识信息。
S1013:发布平台9023在接收到所述网络运行件时,根据设备信息,向目标设备的Flutter端9011发送第二替换指令
这里的网络运行件为步骤S1007至步骤S1010生成的Flutter网络产物,或步骤S1011至步骤S1012生成的替换页面。第二替换指令可以携带故障修复模式,也可以不携带故障修复模式。
S1014:Flutter端9011在接收到第二替换指令时,判断故障修复模式。
当第二替换指令携带故障修复模式时,根据第二替换指令中携带的故障修复模式判定故障修复模式。当第二替换指令没有携带故障修复模式时,可以根据发布平台是否准备好Flutter网络产物等不同故障修复模式的特征,判定故障修复模式。当故障修复模式为对Flutter产物进行整体替换时,也就是网络运行件的类型为Flutter网络产物时,执行步骤S1015至步骤S1016;当故障修复模式为对出现故障的Flutter页面进行有针对性的替换时,也就是网络运行件的类型为替换页面时,执行步骤S1017至步骤S1018。
这里,步骤S1015至步骤S1016,以及步骤S1017至步骤S1018为两种故障修复模式下实现的Flutter端9011在接收到所述第二替换指令且满足预设替换条件时,将本地运行件替换为所述网络运行件的过程。
S1015:Flutter端9011在开始启动Flutter页面时从发布平台9023获取Flutter网络产物。
具体的,在开始启动Flutter页面时,Flutter端9011从发布平台9023拉取Flutter网络产物的Flutter网络产物的资源包。并且,为了避免错误的加载了修复旧版本的Flutter端9011用的Flutter网络产物,在获取Flutter网络产物之前,Flutter端9011根据产物版本标识信息判断发布平台9023的Flutter网络产物是否为最新的用户更新修复自身的Flutter网络产物。如果是,从发布平台9023获取该Flutter网络产物,反之,不从发布平台9023获取该Flutter网络产物。Flutter端9011从发布平台9023获取了该Flutter网络产物之后,可以将该Flutter网络产物从发布平台9023删除。在使用了产物版本标识信息对Flutter网络产物进行了版本控制的情况下,也可以不将该Flutter网络产物从发布平台9023删除,此时不删除该Flutter网络产物也不会造成Flutter端9011更新和修复的混乱。
为了顺利加载Flutter网络产物,在获取Flutter网络产物之前,可以提前准备好网络环境,例如Flutter For Web环境。
S1016:在进入Flutter页面之前,Flutter端9011创建网络容器,并将本地的Flutter产物替换为在网络容器中加载的Flutter网络产物。
Flutter端9011使用网络容器中加载的Flutter网络产物展现用户界面并完成APP的功能,从而无需安装信息的APP,即可对有故障的Flutter端9011进行修复。
S1017:Flutter端9011在开始启动Flutter页面时准备网络环境。
对出现故障的Flutter页面进行有针对性的替换时,无需准备Flutter For Web环境,而是准备网络页面展示环境。
S1018:Flutter端9011根据故障页面的页面标识信息对应的替换页面的网络地址,从发布平台9023获取故障页面对应的替换页面。
S1019:在Flutter端9011跳转到故障页面时,加载替换页面。
这里,替换页面也需运行在网络容器中。
本申请实施例提供的故障修复系统,可以无需安装新的应用程序,达到快速及时修复Flutter端的故障的目的,且提升应用程序的用户体验。
实施例七
一种计算机可读介质,所述计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行本申请实施例提供的任一种故障修复方法的步骤。实际应用中,所述的计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的,也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或多个程序被执行时,实现根据参考本申请实施例提供的故障修复装置进行本申请实施例提供的任一种故障修复方法的步骤。
根据本申请公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件,或者上述的任意合适的组合,但不用于限制本申请保护的范围。在本申请公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
本申请所述的方法步骤除了可以用数据处理程序来实现,还可以由硬件来实现,例如,可以由逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌微控制器等来实现。因此这种可以实现本申请所述方法的硬件也可以构成本申请。
实施例八
本申请实施例还提供一种电子设备,可以是计算机或服务器,其中可以集成本申请上述实施例提供的任一种故障修复装置。如图11所示,本申请实施例提供了一种电子设备1100。
该电子设备可以包括一个或者一个以上处理核心的处理器1101、一个或一个以上计算机可读存储介质1102。该电子设备还可以包括电源1103、输入输出单元1104。本领域技术人员可以理解,图11中并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中:
处理器1101是该电子设备的控制部分,利用各种接口和线路连接各个部分,通过运行或执行存储在计算机可读存储介质1102中的软件程序,执行本申请实施例提供的任一种故障修复方法的步骤。
计算机可读存储介质1102可用于存储软件程序,即本申请实施例提供的任一种故障修复方法中涉及的程序。
处理器1101通过运行存储在计算机可读存储介质1102的软件程序,从而执行各种功能应用以及数据处理。计算机可读存储介质1102可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据电子设备需要使用的数据等。此外,计算机可读存储介质1102可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,计算机可读存储介质1102还可以包括存储器控制器,以提供处理器1101对计算机可读存储介质1102的访问。
电子设备还包括给各个部件供电的电源1103,优选的,电源1103可以通过电源管理系统与处理器1101逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源1103还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入输出单元1104,比如可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入;比如可用于显示由用户输入的信息或提供给用户的信息以及服务器的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。
本申请附图中的流程图和框图,示出了按照本申请公开的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或者程序代码的一部分,上述模块、程序段、或程序代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应该注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同附图中所标准的顺序发生。例如,两个连接地表示的方框实际上可以基本并行地执行,它们有时也可以按照相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或者流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本申请的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本申请中。特别地,在不脱离本申请精神和教导的情况下,本申请的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,所有这些组合和/或结合均落入本申请公开的范围。
本申请中应用了具体实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思路,并不用于限制本申请。对于本领域的技术人员来说,可以依据本申请的思路、精神和原则,在具体实施方式及应用范围上进行改变,其所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (10)

1.一种故障修复方法,其特征在于,包括:
根据Flutter端的故障信息确定异常信息;所述异常信息包括所述Flutter端发生故障的至少一种故障类型和每种故障类型的故障的发生次数;
根据所述异常信息判断是否达到预设修复条件;
当达到预设修复条件时,获取安装发生故障的所述Flutter端的目标设备的设备信息;
根据所述设备信息和所述故障信息生成网络运行件;所述网络运行件为在网络环境中能够正常运行的无故障的Flutter端的组成部件;所述网络运行件携带所述设备信息;
判断是否满足预设替换条件;
当满足预设替换条件时,将所述目标设备中安装的所述Flutter端的本地运行件替换为所述网络运行件。
2.根据权利要求1所述的方法,其特征在于,所述网络运行件的类型包括Flutter网络产物或Flutter替换网页。
3.根据权利要求2所述的方法,其特征在于,所述网络运行件的类型为所述Flutter网络产物;
所述根据所述设备信息和所述故障信息生成网络运行件的步骤为:
获取所述目标设备上安装的所述Flutter端的程序代码;
根据所述故障信息修改所述程序代码,利用修改后的程序代码在网络环境下编译生成所述Flutter网络产物;所述Flutter网络产物携带有所述设备信息。
4.根据权利要求3所述的方法,其特征在于,在所述网络运行件的类型为所述Flutter网络产物的情况下,所述预设替换条件为:在运行所述Flutter端时,存在所述Flutter网络产物;
所述将所述目标设备中安装的所述Flutter端的本地运行件替换为所述网络运行件的步骤包括:
当所述目标设备上安装的所述Flutter端开始运行时,判断是否存在携带有所述目标设备的设备信息的所述Flutter网络产物;
当存在所述Flutter网络产物时,所述目标设备将本地的所述Flutter端的Flutter产物替换为所述Flutter网络产物。
5.根据权利要求2所述的方法,其特征在于,所述网络运行件的类型为所述替换网页;
所述根据所述设备信息和所述故障信息生成网络运行件的步骤为:
根据所述设备信息和所述故障信息确定所述Flutter端中发生故障的至少一个故障页面;
根据所述故障信息生成每个所述故障页面分别对应的所述替换网页;每个所述替换网页携带有所述设备信息。
6.根据权利要求5所述的方法,其特征在于,在所述网络运行件的类型为所述替换网页的情况下,所述预设替换条件为:运行所述Flutter端时,所述Flutter端跳转到所述故障页面;
所述将所述目标设备中安装的所述Flutter端的本地运行件替换为所述网络运行件的步骤为:
当所述目标设备中安装的所述Flutter端开始运行时,在所述Flutter端中准备网络页面展示环境;
根据所述设备信息和所述故障页面的页面标识信息,获取对应的所述替换网页的网络地址,并根据所述网络地址获取所述替换网页;
当所述Flutter端跳转到所述故障页面时,加载所述替换网页。
7.一种故障修复装置,其特征在于,包括:
异常确定模块,用于根据Flutter端的故障信息确定异常信息;所述异常信息包括所述Flutter端发生故障的至少一种故障类型和每种故障类型的故障的发生次数;
第一判断模块,用于根据所述异常信息判断是否达到预设修复条件;
信息获取模块,用于当判定达到预设修复条件时,获取安装发生故障的所述Flutter端的目标设备的设备信息;
运行件生成模块,用于根据所述设备信息和所述故障信息生成网络运行件;网络运行件为在网络环境中能够正常运行的无故障的Flutter端的组成部件;所述网络运行件携带所述设备信息;
第二判断模块,用于判断是否满足预设替换条件;
替换模块,用于当满足预设替换条件时,将所述目标设备中安装的所述Flutter端的本地运行件替换为所述网络运行件。
8.一种故障修复系统,其特征在于,包括:目标设备和后台服务器;
所述目标设备中安装有Flutter端;
所述后台服务器包括日志平台、打包平台和发布平台;
所述Flutter端与所述日志平台和所述发布平台连接,所述打包平台与所述日志平台和所述发布平台连接;
所述Flutter端,用于发送故障信息;
所述日志平台,用于根据Flutter端的故障信息确定异常信息;还用于根据所述异常信息判断是否达到预设修复条件;在达到预设修复条件时,获取安装发生故障的所述Flutter端的目标设备的设备信息,并将携带有所述设备信息的第一替换指令发送到所述打包平台;
所述打包平台,用于在接收到所述第一替换指令时,根据所述设备信息和所述故障信息生成携带所述设备信息的网络运行件,所述网络运行件为在网络环境中能够正常运行的无故障的Flutter端的组成部件,并将所述网络运行件发送至发布平台;
所述发布平台,用于在接收到所述网络运行件时,根据所述设备信息,向所述目标设备的所述Flutter端发送第二替换指令;
所述Flutter端,还用于在接收到所述第二替换指令且满足预设替换条件时,将本地运行件替换为所述网络运行件。
9.一种计算机可读存储介质,存储有计算机指令,其特征在于,所述指令被处理器执行时可实现权利要求1~6任一项所述的方法的步骤。
10.一种电子设备,其特征在于,该电子设备包括如权利要求9所述的计算机可读存储介质,还包括可执行所述计算机可读存储介质的处理器。
CN201911070144.3A 2019-11-05 2019-11-05 故障修复方法、装置、系统、存储介质及电子设备 Active CN110990177B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911070144.3A CN110990177B (zh) 2019-11-05 2019-11-05 故障修复方法、装置、系统、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911070144.3A CN110990177B (zh) 2019-11-05 2019-11-05 故障修复方法、装置、系统、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN110990177A CN110990177A (zh) 2020-04-10
CN110990177B true CN110990177B (zh) 2023-10-20

Family

ID=70083299

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911070144.3A Active CN110990177B (zh) 2019-11-05 2019-11-05 故障修复方法、装置、系统、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN110990177B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112749059A (zh) * 2021-01-13 2021-05-04 叮当快药科技集团有限公司 前端异常监控的方法、装置及系统
CN112764958B (zh) * 2021-01-27 2023-01-13 上海淇玥信息技术有限公司 一种辅助修复页面故障的方法、装置和电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003173207A (ja) * 2001-12-05 2003-06-20 Osaka Gas Co Ltd 遠隔故障診断方法及び遠隔故障診断システム
CN104834555A (zh) * 2015-03-30 2015-08-12 百度在线网络技术(北京)有限公司 调用功能模块的方法、相关装置及装置修复方法
CN110209416A (zh) * 2019-05-31 2019-09-06 彩讯科技股份有限公司 应用软件更新方法、装置、终端及存储介质
CN110262825A (zh) * 2019-06-24 2019-09-20 北京字节跳动网络技术有限公司 热更新方法、装置、电子设备及可读存储介质
CN110286927A (zh) * 2019-06-24 2019-09-27 北京字节跳动网络技术有限公司 Flutter应用的热更新方法、装置及设备
CN110399246A (zh) * 2019-07-30 2019-11-01 腾讯科技(深圳)有限公司 程序修复方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003173207A (ja) * 2001-12-05 2003-06-20 Osaka Gas Co Ltd 遠隔故障診断方法及び遠隔故障診断システム
CN104834555A (zh) * 2015-03-30 2015-08-12 百度在线网络技术(北京)有限公司 调用功能模块的方法、相关装置及装置修复方法
CN110209416A (zh) * 2019-05-31 2019-09-06 彩讯科技股份有限公司 应用软件更新方法、装置、终端及存储介质
CN110262825A (zh) * 2019-06-24 2019-09-20 北京字节跳动网络技术有限公司 热更新方法、装置、电子设备及可读存储介质
CN110286927A (zh) * 2019-06-24 2019-09-27 北京字节跳动网络技术有限公司 Flutter应用的热更新方法、装置及设备
CN110399246A (zh) * 2019-07-30 2019-11-01 腾讯科技(深圳)有限公司 程序修复方法和装置

Also Published As

Publication number Publication date
CN110990177A (zh) 2020-04-10

Similar Documents

Publication Publication Date Title
CN109302522B (zh) 测试方法、装置以及计算机系统和介质
US9703677B2 (en) Code coverage plugin
US9417865B2 (en) Determining when to update a package manager software
EP1983686B1 (en) Mobile terminal apparatus and diagnosis method for mobile terminal apparatus
CN102622298B (zh) 一种软件测试系统及方法
US7900198B2 (en) Method and system for parameter profile compiling
US20150100829A1 (en) Method and system for selecting and executing test scripts
US20150100832A1 (en) Method and system for selecting and executing test scripts
CN105468529A (zh) 一种安卓应用ui控件精准遍历方法和装置
US20150100830A1 (en) Method and system for selecting and executing test scripts
CN102023881A (zh) 一种软件升级方法、装置及嵌入式设备
US20050102569A1 (en) Performing diagnosis in a computer system
CN110990177B (zh) 故障修复方法、装置、系统、存储介质及电子设备
CN111881014B (zh) 一种系统测试方法、装置、存储介质及电子设备
US20150100831A1 (en) Method and system for selecting and executing test scripts
US9317254B1 (en) Fault tolerance model, methods, and apparatuses and their validation techniques
CN102346673A (zh) 一种手机系统升级的方法及装置
CN104360952A (zh) 一种软件测试系统及方法
WO2019061364A1 (zh) 故障分析方法及相关设备
CN111158743A (zh) 大数据运维管理平台
US9880925B1 (en) Collecting structured program code output
CN112241370B (zh) 一种api接口类的校验方法、系统及装置
US7260750B2 (en) Computer system diagnostic procedures performed in specified order
CN112162908A (zh) 基于字节码注入技术的程序调用链路监控实现方法及装置
KR20140084698A (ko) 철강 공정용 소프트웨어 자동 테스트 시스템

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
GR01 Patent grant
GR01 Patent grant