CN110471693A - 应用程序发布、运行方法及设备 - Google Patents

应用程序发布、运行方法及设备 Download PDF

Info

Publication number
CN110471693A
CN110471693A CN201910773791.4A CN201910773791A CN110471693A CN 110471693 A CN110471693 A CN 110471693A CN 201910773791 A CN201910773791 A CN 201910773791A CN 110471693 A CN110471693 A CN 110471693A
Authority
CN
China
Prior art keywords
code
function
patch file
application program
client device
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
Application number
CN201910773791.4A
Other languages
English (en)
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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201910773791.4A priority Critical patent/CN110471693A/zh
Publication of CN110471693A publication Critical patent/CN110471693A/zh
Pending legal-status Critical Current

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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了应用程序发布、运行方法及设备,涉及计算机领域,当第一功能被触发时,通过运行第一功能对应的跳转代码确定是否存在与第一功能关联的目标补丁文件;如果第一功能对应的跳转代码的运行结果为是,通过运行修复指示代码确定至少一个功能的修复代码是否包括第一功能的修复代码;如果修复指示代码的运行结果为是,通过运行调用代码获取第一功能的修复代码;通过第一功能的修复代码代替第一功能的初始代码运行实现第一功能。该方式可以实现在修复BUG时,无需在应用程序的安装包中进行修改,仅通过增加能够修复该BUG的补丁文件即可实现BUG修复,修复成本降低,一次补丁文件的发布可以修复至少一个功能的BUG,提高了修复效率。

Description

应用程序发布、运行方法及设备
技术领域
本申请涉及通信及计算机技术领域,尤其是涉及一种应用程序发布、运行方法及设备。
背景技术
随着智能终端的发展,智能终端设备的用户量呈飞速发展的趋势,这就衍生了各式各样的终端应用程序(Application,APP)。
一直以来,应用程序在线上发布后,客户端设备下载安装使用时,会经常遇到程序崩溃或闪退等与预期不符的事件发生,这类现象称之为“BUG”。即使一款APP在软件发布前有严谨的测试流程,但由于设备种类、参数不同,测试不可能全面覆盖,因此,APP存在BUG也是在所难免的。
为了解决APP运行时,存在BUG的问题,目前的流程是:开发人员需要修改BUG对应的代码,然后,重新编译和打包生成APP的安装包,再经过测试重新发布该安装包,客户端设备重新下载该安装包,重新安装没有该BUG的APP。
发明内容
有鉴于此,本申请提供了一种应用程序发布、运行方法及设备,以缓解BUG的修复成本高、效率低的问题。
第一方面,本申请实施例提供了一种应用程序运行方法。该方法应用于客户端设备,所述客户端设备安装有应用程序,所述应用程序具有多个功能,每个功能对应的初始代码前端均配置有跳转代码;第一功能为所述多个功能中的任意一个,所述方法包括:当所述第一功能被触发时,通过运行所述第一功能对应的跳转代码确定是否存在与所述第一功能关联的目标补丁文件,所述目标补丁文件包括修复指示代码、调用代码和至少一个功能的修复代码;如果所述第一功能对应的跳转代码的运行结果为是,通过运行所述修复指示代码确定所述至少一个功能的修复代码中是否包括所述第一功能的修复代码;如果所述修复指示代码的运行结果为是,通过运行所述调用代码,获取所述第一功能的修复代码;通过所述第一功能的修复代码代替所述第一功能的初始代码运行,实现所述第一功能。
在一些实施方式中,所述方法还包括:如果所述第一功能对应的跳转代码的运行结果为否,运行所述第一功能的初始代码。
在一些实施方式中,所述方法还包括:如果所述修复指示代码的运行结果为否,运行所述第一功能的初始代码。
在一些实施方式中,基于前述方案,所述目标补丁文件配置有类标识,所述类标识对应多个类方法,每个类方法对应于一个功能,所述类标识对应的所有功能包括所述第一功能。
在一些实施方式中,所述方法还包括:向发布服务器发送补丁查询请求;接收所述发布服务器响应所述补丁查询请求发送的补丁包,通过解析所述补丁包生成所述目标补丁文件;将所述目标补丁文件与所述目标补丁文件的类标识对应的所有功能的跳转代码关联。
在一些实施方式中,所述跳转代码包括判断子代码和跳转子代码;所述将所述目标补丁文件与所述目标补丁文件的类标识对应的所有功能的跳转代码关联包括:将所述类标识对应的所有跳转代码的判断子代码的静态变量赋值为非空;将所述目标补丁文件的修复指示代码和调用代码,关联在所述类标识对应的所有跳转代码的跳转子代码中。
在一些实施方式中,所述第一功能关联的补丁文件为多个,每个补丁文件配置有版本标识,所述目标补丁文件为与所述第一功能关联的多个补丁文件中版本标识最新的补丁文件。
第二方面,本申请实施例还提供一种应用程序发布方法。该方法应用于开发端设备,所述开发端设备用于开发应用程序,所述应用程序具有多个功能,每个功能对应有初始代码,所述方法包括:在所述多个功能中每个功能的初始代码前,插入跳转代码,所述跳转代码用于判断是否存在该跳转代码对应功能关联的补丁文件;根据所述多个功能的初始代码和跳转代码,生成所述应用程序的安装包;将所述应用程序的安装包发送至客户端设备,以便所述客户端设备进行安装,以运行所述应用程序。
在本申请的一些实施方式中,所述方法还包括:确定补丁文件;所述补丁文件包括修复指示代码、调用代码和至少一个功能的修复代码;
将所述补丁文件通过发布服务器发送至客户端设备,以便所述客户端设备进行安装,以运行修复所述至少一个功能。
第三方面,本申请实施例提供了一种客户端设备。该客户端设备安装有应用程序,所述应用程序具有多个功能,每个功能对应的初始代码前端均配置有跳转代码;第一功能为所述多个功能中的任意一个,所述客户端设备包括:第一确定单元,用于当所述第一功能被触发时,通过运行所述第一功能对应的跳转代码确定是否存在与所述第一功能关联的目标补丁文件,所述目标补丁文件包括修复指示代码、调用代码和至少一个功能的修复代码;第二确定单元,用于如果所述第一功能对应的跳转代码的运行结果为是,通过运行所述修复指示代码确定所述至少一个功能的修复代码中是否包括所述第一功能的修复代码;获取单元,用于如果所述修复指示代码的运行结果为是,通过运行所述调用代码,获取所述第一功能的修复代码;运行单元,通过所述第一功能的修复代码代替所述第一功能的初始代码运行,实现所述第一功能。
第四方面,本申请实施例还提供了一种开发端设备。该开发端设备用于开发应用程序,所述应用程序具有多个功能,每个功能对应有初始代码,所述开发端设备包括:插桩单元,用于在所述多个功能中每个功能的初始代码前,插入跳转代码,所述跳转代码用于判断是否存在该跳转代码对应功能的补丁文件;生成单元,用于根据所述多个功能的初始代码和跳转代码,生成所述应用程序的安装包;发送单元,用于将所述应用程序的安装包发送至客户端设备,以便所述客户端设备进行安装,以运行所述应用程序。
第五方面,本申请实施例提供了一种应用程序发布系统,包括:发布服务器、上述第三方面的任意一种客户端设备以及上述第四方面的任意一种开发端设备,所述客户端设备以及所述开发端设备均与所述发布服务器相连接。
第六方面,本申请实施例又提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述的第一方面或第二方面所述方法。
本申请实施例带来了以下有益效果:本申请实施例提供的应用程序发布、运行方法及设备,当第一功能被触发时,通过运行第一功能对应的跳转代码确定是否存在与第一功能关联的目标补丁文件;如果第一功能对应的跳转代码的运行结果为是,通过运行修复指示代码确定至少一个功能的修复代码中是否包括第一功能的修复代码;如果修复指示代码的运行结果为是,通过运行调用代码,获取第一功能的修复代码;通过第一功能的修复代码代替第一功能的初始代码运行,实现第一功能。该方式可以实现在修复BUG时,无需在应用程序的安装包中进行修改,而是通过在初始代码前配置的跳转代码使其跳转到补丁文件的修复代码,而不用继续运行到存在BUG的初始代码,仅通过增加能够修复该BUG的补丁文件即可实现BUG修复,修复成本降低,避免了重新测试发版导致的周期较长的问题。补丁文件可以是针对至少一个功能的,以此可以降低开发人员工作的琐碎程度,一次补丁文件的发布可以修复至少一个功能的BUG,提高了修复效率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的应用场景示意图;
图2为本申请实施例提供的一种应用程序运行方法流程示意图;
图3为本申请实施例提供了一种应用程序发布方法流程示意图;
图4为本申请实施例提供了一种客户端设备的示意图;
图5为本申请实施例提供了一种开发端设备的示意图;
图6为本申请实施例提供了一种客户端设备的结构图;
图7为本申请实施例提供了一种开发端设备的结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例的条目中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例提供的一种应用程序发布、运行方法及设备,可以在应用程序出现BUG时,实现在线修复,提高了修复效率。该应用程序发布及运行方法可以应用于如图1所示的应用场景中。该应用场景可以包括客户端设备101、开发端设备102和发布服务器103,该客户端设备101可以通过有线网络或无线网络与发布服务器103进行通信,以获取应用程序的安装包以及补丁包等数据,该开发端设备102可以通过有线网络或无线网络与发布服务器103进行通信,以向发布服务器发送开发的应用程序的安装包或补丁包等数据。
上述的应用程序指为完成某项或多项特定工作的计算机程序,包括但不限于移动设备(如智能手机、平板电脑等)中的APP;上述的客户端设备是与服务器相对应,为用户提供本地服务的程序,例如用户打开客户端设备中的某个界面时,客户端设备发送请求到服务器,服务器根据请求返回数据到客户端设备,客户端设备向用户呈现最终界面,又如用户在客户端设备呈现的界面上进行输入操作,客户端设备发送相应的数据到服务器,服务器对数据进行存储;上述的功能是指由开发人员通过编程语言输入的一系列代码来实现;上述的跳转代码的逻辑为在功能被触发(例如通过功能对应的代码运行)时,判断是否存在与该功能关联的补丁文件,如果存在补丁文件,则跳转到补丁文件,运行补丁文件的代码段。
为便于对本实施例进行理解,首先对本申请实施例所公开的一种应用程序运行方法,结合附图进行详细介绍。
图2为本申请实施例提供的一种应用程序运行方法流程示意图。该应用于客户端设备(例如图1所示的客户端设备101),该客户端设备安装有应用程序,该应用程序具有多个功能,其中,每个功能对应的初始代码前端均配置有跳转代码。下面以第一功能对应的运行方法作为一个示例进行介绍,该第一功能为上述多个功能中的任意一个。如图2所示,该方法具体可以包括如下步骤:
步骤S210,当第一功能被触发时,通过运行第一功能对应的跳转代码确定是否存在与第一功能关联的目标补丁文件。其中,该目标补丁文件包括修复指示代码、调用代码和至少一个功能的修复代码。
第一功能可以在多种情况下被触发。在一个示例中,可以在第二功能对应的代码运行结束时,自动或主动触发该第一功能。例如,第一功能和第二功能组合实现一个逻辑,且该第二功能在该逻辑上位于第一功能的前一位,在运行时,第二功能对应的代码运行结束后,自动运行第一功能对应的代码。再例如,第二功能可以调用第一功能。在另一个示例中,可以通过指定的操作指令或指定事件,触发该第一功能。
当第一功能被触发时,需要先运行跳转代码。其中,跳转代码用于实现判断是通过初始代码来实现第一功能,还是通过修复代码来实现第一功能;该功能可以通过判断是否存在第一功能关联的目标补丁文件来实现。
对应判断是否存在第一功能关联的目标补丁文件的方式可以包括多种。在一个示例中,可以通过第一指示信息来判断是否存在第一功能关联的目标补丁文件。例如,第一指示信息的默认值(例如,0)用于表示不存在第一功能关联的目标补丁文件,当第一指示信息为非默认值(例如,1)时,表示存在第一功能关联的目标补丁文件。对于该第一指示信息的值的修改,可以在从发布服务器接收到新的补丁文件后,将该新的补丁文件对应的第一指示信息全部修改为非默认值。
当第一功能对应的跳转代码的运行结果为否,则运行该第一功能对应的初始代码,以实现该第一功能。其中,如果第一功能对应的跳转代码的运行结果为否,可确定不存在与第一功能关联的目标补丁文件,此时,由于不存在第一功能对应的补丁,运行第一功能的初始代码。
步骤S220,如果第一功能对应的跳转代码的运行结果为是,通过运行修复指示代码确定至少一个功能的修复代码中是否包括第一功能的修复代码。
在开发补丁文件时,可以针对多个BUG,进行开发,该多个BUG对应的修复代码,可以放在一个补丁文件内。
由于客户端设备一般具有非常多的功能,这些功能还可以按照一些分类方式进行分类,以便进行更方便的管理。所以补丁文件可以关联到一些除其包含的修复代码对应的功能之外的其他功能上。例如,功能可以对应有类别,每个类别可以对应一个或多个功能。在将补丁文件和功能进行关联时,可以与该补丁文件对应的类别的所有功能进行关联。
故,在步骤S210的判断结论为存在与第一功能关联的目标补丁文件后,还需要进一步判断该目标补丁文件是否有能够实现第一功能,也就是判断,该目标补丁文件中是否包含第一功能的修复代码。
判断该目标补丁文件中是否包含第一功能的修复代码的方式可以通过运行修复指示代码来实现,具体的实现方式可以包括多种。在一个示例中,目标补丁文件中可以包括第二指示信息,该第二指示信息用于指示其能够实现的功能的标识,也就是其包含修复代码的至少一个功能的标识。通过运行修复指示代码可以判断该至少一个功能的标识中是否包含第一功能的标识,来确定目标补丁文件中是否包含第一功能的修复代码。
如果目标补丁文件中不包含第一功能的修复代码,也就是修复指示代码的运行结果为否,则运行该第一功能对应的初始代码,以实现该第一功能。
步骤S230,如果修复指示代码的运行结果为是,通过运行调用代码,获取第一功能的修复代码。
调用代码用于实现从目标运行文件包括的至少一个功能的修复代码中,获取第一功能的修复代码。
步骤S240,通过第一功能的修复代码代替第一功能的初始代码运行,实现第一功能。
在一些实施例中,应用程序的运行文件和补丁文件为不同的文件,在有BUG需要修复时,从应用程序的运行文件跳转到补丁文件进行运行,当运行完补丁文件,修复BUG后,再跳转回应用程序的运行文件,以实现该应用程序的其他功能。
通过本申请实施例在修复BUG时,无需在应用程序的安装包中进行修改,而是通过在初始代码前配置的跳转代码使其跳转到补丁文件的修复代码,而不用继续运行到存在BUG的初始代码,仅通过增加能够修复该BUG的补丁文件即可实现BUG修复,修复成本降低,避免了重新测试发版导致的周期较长的问题。补丁文件可以是针对至少一个功能的,以此可以降低开发人员工作的琐碎程度,一次补丁文件的发布可以修复至少一个功能的BUG,提高了修复效率。
在一些实施例中,基于上述方案,上述的目标补丁文件配置有类标识,该类标识对应多个类方法,每个类方法对应于一个功能,该类标识对应的所有功能包括所述第一功能。其中,类标识可以是类名称等。
在具体实现时,在客户端设备运行该应用程序的过程中或在启动该应用程序后,可以实时接收发布服务器更新的补丁包,例如jar包。客户端设备解析该补丁包,并将解析后的补丁包与其要修复的类对应的所有类方法进行关联。具体可以通过如下步骤来实现:
步骤1),向发布服务器发送补丁查询请求;
步骤2),接收所述发布服务器响应补丁查询请求发送的补丁包,通过解析补丁包生成目标补丁文件;
步骤3),将目标补丁文件与目标补丁文件的类标识对应的所有功能的跳转代码关联。
对于上述步骤1),在具体实现时,也可以为客户端设备在发布服务器进行更新服务订阅,对于订阅了更新服务的客户端设备,发布服务器在确认有新的补丁包后,可以直接向该客户端设备推送新的补丁包。
对于上述步骤2),客户端设备从发布服务接收到补丁包可以包括多个。这里仅是以目标补丁文件对应的补丁包为例进行说明。对于系统为安卓操作系统的客户端设备,可以通过Android SDK提供的DexClassLoader类加载jar包,以便确定该jar包对应的补丁文件。
以此可以实现,实时的或在客户端设备有需要的情况下,对BUG进行修复,整个过程对用户是透明的,并且修复效率高。
在一些实施例中,对于上述步骤3),具体可以包括如下步骤:将类标识对应的所有跳转代码的静态变量赋值为目标补丁文件的类标识。
其中,跳转代码可以通过静态成员变量thunder是否为null判断补丁文件是否为空。可以将将类标识对应的所有跳转代码的静态变量thunder进行赋值为目标补丁文件的类标识,使之在方法调用时,跳转到该目标补丁文件。
在具体实现时,随着硬件、系统等不断的迭代更新,所以,BUG也一直会出现,同样会出现一个BUG修复多次的情况,为了能够运行最新的补丁文件,在一些实施例中,第一功能关联的补丁文件为多个,每个补丁文件配置有版本标识,上述目标补丁文件为与第一功能关联的多个补丁文件中版本标识最新的补丁文件。以此可以实现,仅通过补丁文件的更新,可以不断的对BUG进行修复,且无需重新下载安装包。
另外,第一功能关联的补丁文件可能并不都包括第一功能的修复代码。在运行修复指示代码时,可以按照版本号,由新到旧依次进行判断,如果包含第一功能的修复代码,则运行该修复代码,停止继续判断。
图3为本申请实施例提供了一种应用程序发布方法流程示意图。该方法应用于开发端设备,这里的开发端设备用于开发应用程序,应用程序具有多个功能,每个功能对应有初始代码,如图3所示该方法包括:
步骤S310,在多个功能中每个功能的初始代码前,插入跳转代码,跳转代码用于判断是否存在该跳转代码对应功能关联的补丁文件。
示例性的,每个功能可以对应一个类方法,在应用程序的编译阶段,针对应用程序的所有类方法进行插桩,即在每个类方法中插入跳转代码,该跳转代码用于在该类方法存在BUG时,跳转到补丁文件运行修复代码;如果该类方法无BUG,则运行初始代码。
在多个功能中每个功能的初始代码前,插入跳转代码的实现方式可以包括多种。在一个示例中,可以在应用程序的初始代码均编译完成后,遍历应用程序的所有类方法,在每个类方法对应的初始代码前插入跳转代码。在另一个示例中,在编写一个类方法的初始代码之前,先插入跳转代码;即首先插入跳转代码,然后再编写一个类方法的初始代码,完成一个功能的编译;然后按照这种方式实现多个功能的编译,从而完成对整个应用程序的编译。
步骤S320,根据多个功能的初始代码和跳转代码,生成应用程序的安装包。
生成应用程序的安装包的过程可以包括测试、打包等等。
步骤S330,将应用程序的安装包发送至客户端设备,以便客户端设备进行安装,以运行应用程序。
具体的,将应用程序的安装包通过发布服务器发送至客户端设备,以便客户端设备进行安装,以运行应用程序。
应当理解的是,也可以将应用程序的安装包放置发布服务器后台,客户端设备可以通过发布服务器下载安装。
本申请实施例提供的应用程序发布方法,应用于开发端设备,首先通过在多个功能中每个功能的初始代码前,插入用于判断是否存在该跳转代码对应功能关联的补丁文件的跳转代码;然后根据多个功能的初始代码和跳转代码,生成应用程序的安装包;最后将应用程序的安装包通过发布服务器发送至客户端设备,以便客户端设备进行安装,以运行应用程序,由于在初始代码前插入跳转代码,能够取代人工添加代码,达到自动化方法插桩,节约了人工成本;并且跳转代码与应用的业务逻辑无关,有利于实现应用程序发布的标准化和通用化。此外,在开发人员因代码不严谨,将BUG带上线后,后续补丁文件可以通过插入的跳转代码的运行使其跳转到补丁文件修复代码进行修复,而不用继续运行到存在BUG的初始代码,实现了不用重新测试发版而在线解决BUG问题,及时修复线上问题,周期更短;同时,用户无需重新下载安装软件,提高用户体验度。
在一些实施例中,考虑到在发现应用程序中的类方法存在BUG时如何实现热修复的问题,该方法还包括:
步骤(1),确定补丁文件。其中,该补丁文件包括修复指示代码、调用代码和至少一个功能的修复代码;
步骤(2),将该补丁文件通过发布服务器发送至客户端设备,以便客户端设备进行安装,以运行修复至少一个功能。
通过本申请实施例提供的应用程序发布方法,无需在应用程序的安装包中进行修改,而是通过在初始代码前配置的跳转代码使其跳转到补丁文件的修复代码,而不用继续运行到存在BUG的初始代码,仅通过增加能够修复该BUG的补丁文件即可实现BUG修复,修复成本降低,避免了重新测试发版导致的周期较长的问题。补丁文件可以是针对至少一个功能的,以此可以降低开发人员工作的琐碎程度,一次补丁文件的发布可以修复至少一个功能的BUG,提高了修复效率。
图4为本申请实施例提供了一种客户端设备结构示意图。该客户端设备安装有应用程序,所述应用程序具有多个功能,每个功能对应的初始代码前端均配置有跳转代码;第一功能为所述多个功能中的任意一个。如图4所示,该客户端设备包括:
第一确定单元401,用于当所述第一功能被触发时,通过运行所述第一功能对应的跳转代码确定是否存在与所述第一功能关联的目标补丁文件,所述目标补丁文件包括修复指示代码、调用代码和至少一个功能的修复代码;
第二确定单元402,用于如果所述第一功能对应的跳转代码的运行结果为是,通过运行所述修复指示代码确定所述至少一个功能的修复代码中是否包括所述第一功能的修复代码;
获取单元403,用于如果所述修复指示代码的运行结果为是,通过运行所述调用代码,获取所述第一功能的修复代码;
运行单元404,通过所述第一功能的修复代码代替所述第一功能的初始代码运行,实现所述第一功能。
在一些实施例中,第二确定单元还用于如果所述第一功能对应的跳转代码的运行结果为否,运行所述第一功能的初始代码。
在一些实施例中,获取单元还用于如果所述修复指示代码的运行结果为否,运行所述第一功能的初始代码。
在一些实施例中,所述目标补丁文件配置有类标识,所述类标识对应多个类方法,每个类方法对应于一个功能,所述类标识对应的所有功能包括所述第一功能。
在一些实施例中,该客户端设备还包括:
关联单元405,用于向发布服务器发送补丁查询请求;接收所述发布服务器响应所述补丁查询请求发送的补丁包,通过解析所述补丁包生成所述目标补丁文件;将所述目标补丁文件与所述目标补丁文件的类标识对应的所有功能的跳转代码关联。
在一些实施例中,所述跳转代码包括判断子代码和跳转子代码;上述关联单元还用于将所述类标识对应的所有跳转代码的判断子代码的静态变量赋值为非空;将所述目标补丁文件的修复指示代码和调用代码,关联在所述类标识对应的所有跳转代码的跳转子代码中。
在一些实施例中,所述第一功能关联的补丁文件为多个,每个补丁文件配置有版本标识,所述目标补丁文件为与所述第一功能关联的多个补丁文件中版本标识最新的补丁文件。
图5为本申请实施例提供的一种开发端设备结构示意图。该开发端设备用于开发应用程序,所述应用程序具有多个功能,每个功能对应有初始代码。如图5,该开发端设备包括:
插桩单元501,用于在所述多个功能中每个功能的初始代码前,插入跳转代码,所述跳转代码用于判断是否存在该跳转代码对应功能的补丁文件;
生成单元502,用于根据所述多个功能的初始代码和跳转代码,生成所述应用程序的安装包;
发送单元503,用于将所述应用程序的安装包发送至客户端设备,以便所述客户端设备进行安装,以运行所述应用程序。
在一些实施例中,该开发端设备还包括:
确定单元504,用于确定补丁文件;所述补丁文件包括修复指示代码、调用代码和至少一个功能的修复代码;将所述补丁文件通过发布服务器发送至客户端设备,以便所述客户端设备进行安装,以运行修复所述至少一个功能。
参见图6,本发明实施例还提供一种客户端设备101,包括:处理器60,存储器61,总线62和通信接口63,所述处理器60、通信接口63和存储器61通过总线62连接;处理器60用于运行存储器61中存储的可运行模块,例如计算机程序。
参见图7,本发明实施例还提供一种开发端设备102,包括:处理器70,存储器71,总线72和通信接口73,所述处理器70、通信接口73和存储器71通过总线72连接;处理器70用于运行存储器71中存储的可运行模块,例如计算机程序。
其中,上述存储器可能包含高速随机存取存储器(Random Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory,NVM),例如至少一个磁盘存储器。通过至少一个通信接口(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
上述总线可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6或图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器用于存储程序,所述处理器在接收到运行指令后,运行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所运行的方法可以应用于处理器中,或者由处理器实现。
处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者运行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器运行完成,或者用译码处理器中的硬件及软件模块组合运行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
本申请实施例提供了一种应用程序发布系统,包括:发布服务器、客户端设备以及开发端设备,所述客户端设备以及所述开发端设备均与所述发布服务器相连接。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行本申请实施例提供的上述的应用程序运行方法和/或应用程序发布方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可运行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地运行,它们有时也可以按相反的顺序运行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用运行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (13)

1.一种应用程序运行方法,其特征在于,应用于客户端设备,所述客户端设备安装有应用程序,所述应用程序具有多个功能,每个功能对应的初始代码前端均配置有跳转代码;第一功能为所述多个功能中的任意一个,所述方法包括:
当所述第一功能被触发时,通过运行所述第一功能对应的跳转代码确定是否存在与所述第一功能关联的目标补丁文件,所述目标补丁文件包括修复指示代码、调用代码和至少一个功能的修复代码;
如果所述第一功能对应的跳转代码的运行结果为是,通过运行所述修复指示代码确定所述至少一个功能的修复代码中是否包括所述第一功能的修复代码;
如果所述修复指示代码的运行结果为是,通过运行所述调用代码,获取所述第一功能的修复代码;
通过所述第一功能的修复代码代替所述第一功能的初始代码运行,实现所述第一功能。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述第一功能对应的跳转代码的运行结果为否,运行所述第一功能的初始代码。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述修复指示代码的运行结果为否,运行所述第一功能的初始代码。
4.根据权利要求1所述的方法,其特征在于,所述目标补丁文件配置有类标识,所述类标识对应多个类方法,每个类方法对应于一个功能,所述类标识对应的所有功能包括所述第一功能。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
向发布服务器发送补丁查询请求;
接收所述发布服务器响应所述补丁查询请求发送的补丁包,通过解析所述补丁包生成所述目标补丁文件;
将所述目标补丁文件与所述目标补丁文件的类标识对应的所有功能的跳转代码关联。
6.根据权利要求5所述的方法,其特征在于,所述将所述目标补丁文件与所述目标补丁文件的类标识对应的所有功能的跳转代码关联包括:
将所述类标识对应的所有跳转代码的静态变量赋值为所述目标补丁文件的类标识。
7.根据权利要求1所述的方法,其特征在于,所述第一功能关联的补丁文件为多个,每个补丁文件配置有版本标识,所述目标补丁文件为与所述第一功能关联的多个补丁文件中版本标识最新的补丁文件。
8.一种应用程序发布方法,其特征在于,应用于开发端设备,所述开发端设备用于开发应用程序,所述应用程序具有多个功能,每个功能对应有初始代码,所述方法包括:
在所述多个功能中每个功能的初始代码前,插入跳转代码,所述跳转代码用于判断是否存在该跳转代码对应功能关联的补丁文件;
根据所述多个功能的初始代码和跳转代码,生成所述应用程序的安装包;
将所述应用程序的安装包发送至客户端设备,以便所述客户端设备进行安装,以运行所述应用程序。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
确定补丁文件;所述补丁文件包括修复指示代码、调用代码和至少一个功能的修复代码;
将所述补丁文件通过发布服务器发送至客户端设备,以便所述客户端设备进行安装,以运行修复所述至少一个功能。
10.一种客户端设备,其特征在于,所述客户端设备安装有应用程序,所述应用程序具有多个功能,每个功能对应的初始代码前端均配置有跳转代码;第一功能为所述多个功能中的任意一个,所述客户端设备包括:
第一确定单元,用于当所述第一功能被触发时,通过运行所述第一功能对应的跳转代码确定是否存在与所述第一功能关联的目标补丁文件,所述目标补丁文件包括修复指示代码、调用代码和至少一个功能的修复代码;
第二确定单元,用于如果所述第一功能对应的跳转代码的运行结果为是,通过运行所述修复指示代码确定所述至少一个功能的修复代码中是否包括所述第一功能的修复代码;
获取单元,用于如果所述修复指示代码的运行结果为是,通过运行所述调用代码,获取所述第一功能的修复代码;
运行单元,通过所述第一功能的修复代码代替所述第一功能的初始代码运行,实现所述第一功能。
11.一种开发端设备,其特征在于,所述开发端设备用于开发应用程序,所述应用程序具有多个功能,每个功能对应有初始代码,所述开发端设备包括:
插桩单元,用于在所述多个功能中每个功能的初始代码前,插入跳转代码,所述跳转代码用于判断是否存在该跳转代码对应功能的补丁文件;
生成单元,用于根据所述多个功能的初始代码和跳转代码,生成所述应用程序的安装包;
发送单元,用于将所述应用程序的安装包发送至客户端设备,以便所述客户端设备进行安装,以运行所述应用程序。
12.一种应用程序发布系统,其特征在于,包括:发布服务器、如权利要求10所述的客户端设备以及如权利要求11所述的开发端设备,所述客户端设备以及所述开发端设备均与所述发布服务器相连接。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行所述权利要求1至9任一所述的方法。
CN201910773791.4A 2019-08-21 2019-08-21 应用程序发布、运行方法及设备 Pending CN110471693A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910773791.4A CN110471693A (zh) 2019-08-21 2019-08-21 应用程序发布、运行方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910773791.4A CN110471693A (zh) 2019-08-21 2019-08-21 应用程序发布、运行方法及设备

Publications (1)

Publication Number Publication Date
CN110471693A true CN110471693A (zh) 2019-11-19

Family

ID=68512033

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910773791.4A Pending CN110471693A (zh) 2019-08-21 2019-08-21 应用程序发布、运行方法及设备

Country Status (1)

Country Link
CN (1) CN110471693A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111831316A (zh) * 2020-07-21 2020-10-27 北京字节跳动网络技术有限公司 一种软件开发包更新方法及装置
CN112181470A (zh) * 2020-09-22 2021-01-05 京东数字科技控股股份有限公司 一种部署补丁的方法和装置
CN113010199A (zh) * 2021-03-16 2021-06-22 南方电网数字电网研究院有限公司 应用更新方法、装置、计算机设备和存储介质
CN114610516A (zh) * 2022-03-10 2022-06-10 北京字节跳动网络技术有限公司 应用程序的修复方法、装置、计算机设备以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040107416A1 (en) * 2002-12-02 2004-06-03 Microsoft Corporation Patching of in-use functions on a running computer system
CN106055368A (zh) * 2016-06-02 2016-10-26 腾讯科技(深圳)有限公司 应用更新方法和装置
CN106951279A (zh) * 2017-02-27 2017-07-14 努比亚技术有限公司 应用的热修复装置及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040107416A1 (en) * 2002-12-02 2004-06-03 Microsoft Corporation Patching of in-use functions on a running computer system
CN106055368A (zh) * 2016-06-02 2016-10-26 腾讯科技(深圳)有限公司 应用更新方法和装置
CN106951279A (zh) * 2017-02-27 2017-07-14 努比亚技术有限公司 应用的热修复装置及方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111831316A (zh) * 2020-07-21 2020-10-27 北京字节跳动网络技术有限公司 一种软件开发包更新方法及装置
CN112181470A (zh) * 2020-09-22 2021-01-05 京东数字科技控股股份有限公司 一种部署补丁的方法和装置
CN112181470B (zh) * 2020-09-22 2024-05-17 京东科技控股股份有限公司 一种部署补丁的方法和装置
CN113010199A (zh) * 2021-03-16 2021-06-22 南方电网数字电网研究院有限公司 应用更新方法、装置、计算机设备和存储介质
CN113010199B (zh) * 2021-03-16 2023-01-20 南方电网数字电网研究院有限公司 应用更新方法、装置、计算机设备和存储介质
CN114610516A (zh) * 2022-03-10 2022-06-10 北京字节跳动网络技术有限公司 应用程序的修复方法、装置、计算机设备以及存储介质
CN114610516B (zh) * 2022-03-10 2023-07-04 抖音视界有限公司 应用程序的修复方法、装置、计算机设备以及存储介质

Similar Documents

Publication Publication Date Title
CN110471693A (zh) 应用程序发布、运行方法及设备
US20220317997A1 (en) Online Upgrade Method for Household Appliance Multi-MCU System, Electronic Device and Medium
CN109034814B (zh) 基于以太坊虚拟机的智能合约处理方法和装置
CN109933348B (zh) 一种电子控制单元中Bootloader的更新方法和装置
CN107943469B (zh) 一种智能合约的发布方法及装置
CN106707848B (zh) 一种控制系统的控制程序组织结构和下载方法
CN102902556B (zh) 一种嵌入式设备的多级引导加载方法
CN106502725A (zh) 应用程序的升级方法、设备及电子设备
CN107506219A (zh) 一种基于Android系统的通用版本升级方法
US20100095159A1 (en) Apparatus and method for automatic testing of software or digital devices
CN107976986A (zh) 用于对车辆电子控制模块编程的方法
CN109101237A (zh) 代码的加密编译方法及装置
CN112698857B (zh) 一种数据刷写的方法及设备
CN110188036A (zh) 一种软件测试方法及装置
CN104615471A (zh) 一种终端的系统升级方法及装置
CN112540725A (zh) 非易失性数据存储方法、嵌入式系统以及存储介质
CN105045671B (zh) 一种智能终端的系统升级方法及装置
CN109688472A (zh) 电视系统升级方法、装置、设备及存储介质
CN109729517A (zh) 通讯模块软件版本管理方法和系统
CN107679423A (zh) 分区完整性检查方法及装置
CN111464351A (zh) 一种智能家居设备配网方法、装置、终端设备及存储介质
CN111142922B (zh) 应用程序更新方法、装置、终端及服务器
CN103379145A (zh) 信息处理的方法、设备和系统
CN104994220A (zh) 一种数据处理方法和系统
CN108170568B (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: 20191119

RJ01 Rejection of invention patent application after publication