CN110297655A - 生成补丁包的方法、装置、设备及存储介质 - Google Patents
生成补丁包的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110297655A CN110297655A CN201910541776.7A CN201910541776A CN110297655A CN 110297655 A CN110297655 A CN 110297655A CN 201910541776 A CN201910541776 A CN 201910541776A CN 110297655 A CN110297655 A CN 110297655A
- Authority
- CN
- China
- Prior art keywords
- service packs
- goal approach
- public
- permission
- installation kit
- 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.)
- Granted
Links
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
- G06F8/658—Incremental updates; Differential 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
本申请提供一种生成补丁包的方法、装置、设备及存储介质。包括:在对原始安装包进行插桩时,将原始安装包中的非public类的权限转换为public,非public字段的权限转换为public,protected方法及package‑private方法的权限均转换为public。在生成待修复方法的补丁包过程中,当需要使用原始安装包中的目标方法和\或目标字段时,根据目标方法和\或目标字段的权限使用目标方法和\或目标字段,以生成补丁包。从而避免方法和\或字段无法被访问的问题,以生成有效的补丁包,进而可以解决热修复的问题。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种生成补丁包的方法、装置、设备及存储介质。
背景技术
热修复补丁(patch),指能够修复软件漏洞的一些代码,是一种快速、低成本修复产品软件版本缺陷的方式。热修复技术具有如下优势:1、可快速修复,避免线上Bug带来的业务损失,把损失降到最低。2、保证客户端的更新率,无须用户进行版本升级安装。3、良好的用户体验,无感知修复异常。节省用户下载安装成本。
插桩方案是一种轻量的热修复技术,即在原始安装包的类中的每个方法中插入判断逻辑,当有补丁加载时,执行补丁中的逻辑,当无补丁时,执行原逻辑,以达到修复问题的目标。基于此,在生成补丁包时,需要对原始安装包和新的安装包中的同名类中的每个方法进行对比,当发现有方法发生修改时,在补丁包中生成该类的补丁类,包括:将所有发生修改的方法中的指令复制到该补丁类中。在终端设备加载了该补丁包之后,在执行到发生修改的方法时,发现有补丁类,会执行到补丁类中的方法,达到热修复的目的。
在复制修改的方法时,存在一个问题,即字段及方法的访问限制问题。复制的方法中,可能会调用到其它类中的方法和\或字段,如果该方法和\或字段的权限是非public的,即这类方法和\或字段无法被访问。基于此,生成的补丁包无效,这就给热修复带来一定的困难。
发明内容
本申请实施例提供一种生成补丁包的方法、装置、设备及存储介质。从而可以生成有效的补丁包,进而解决热修复问题。
第一方面,本申请提供一种生成补丁包的方法,包括:在对原始安装包进行插桩时,将原始安装包中的非public类的权限转换为public,非public字段的权限转换为public,protected方法及package-private方法的权限均转换为public。在生成待修复方法的补丁包过程中,当需要使用原始安装包中的目标方法和\或目标字段时,根据目标方法和\或目标字段的权限使用目标方法和\或目标字段,以生成补丁包。
基于此,即使在复制某方法时,调用到了其他的方法和\或字段,由于本申请针对方法和\或字段的不同权限使用方法和\或权限,来生成补丁包,从而避免方法和\或字段无法被访问的问题,以生成有效的补丁包,进而可以解决热修复的问题。
可选的,根据目标方法和\或目标字段的权限使用目标方法和\或目标字段,以生成补丁包,包括:在原始安装包中,调用目标字段,以生成补丁包。和\或,若目标方法的权限是private,则将原始安装包中的目标方法复制到补丁包中,以生成补丁包。若目标方法的权限是public,则在原始安装包中,调用目标方法,以生成补丁包。
即对于目标字段,也可以直接调用目标字段,可以提高补丁包的生成效率。本申请对于权限是public的方法,采用直接调用的方式。相对于反射调用方式,可以提高补丁包的生成效率。相对于复制方式,从而可以减小补丁包的大小。对于权限是private的方法,则将原始安装包中的目标方法复制到补丁包中,以生成补丁包,从而可以提高生成补丁包的灵活性。
可选的,方法还包括:若目标方法的原始权限为protected或package-private,且对目标方法的权限转换失败,则采用反射调用方式调用目标方法,以生成补丁包。
即若目标方法的原始权限为protected或package-private,且对目标方法的权限转换失败,则将原始安装包中的目标方法复制到补丁包中,以生成补丁包。相反,若目标方法的原始权限为protected或package-private,且对目标方法的权限转换成功,则在原始安装包中,调用目标方法,以生成补丁包。从而可以提高生成补丁包的灵活性。
可选的,方法还包括:若获取到目标调用指令,则进行报错。其中,目标调用指令用于调用非public方法。
可选的,若获取到目标调用指令,则进行报错,包括:若获取到目标调用指令,则进行以下至少一项:语音报错、警示灯报错、显示信息报错。
可选的,根据目标方法和\或目标字段的权限使用目标方法和\或目标字段,以生成补丁包之后,还包括:向云端服务器发送补丁包,以供终端设备下载补丁包。
下面将提供生成补丁包的装置、设备、存储介质及计算机程序产品,其效果可参考方法部分,对此不再赘述。
第二方面,本申请提供一种生成补丁包的装置,包括:
转换模块,用于在对原始安装包进行插桩时,将原始安装包中的非public类的权限转换为public,非public字段的权限转换为public,protected方法及package-private方法的权限均转换为public。
第一生成模块,用于在生成待修复方法的补丁包过程中,当需要使用原始安装包中的目标方法和\或目标字段时,根据目标方法和\或目标字段的权限使用目标方法和\或目标字段,以生成补丁包。
第三方面,本申请提供一种生成补丁包的设备,包括:存储器和处理器。
存储器用于存储计算机指令。处理器用于运行存储器存储的计算机指令,以实现上述生成补丁包的方法。
第四方面,本申请提供一种存储介质,包括:可读存储介质和计算机指令,计算机指令存储在可读存储介质中。计算机指令用于实现上述生成补丁包的方法。
第五方面,本申请提供一种计算机程序产品,包括:可执行指令,所述指令用于实现上述生成补丁包的方法。
本申请实施例提供了一种生成补丁包的方法、装置、设备及存储介质。包括:在对原始安装包进行插桩时,将原始安装包中的非public类的权限转换为public,非public字段的权限转换为public,protected方法及package-private方法的权限均转换为public。在生成待修复方法的补丁包过程中,当需要使用原始安装包中的目标方法和\或目标字段时,根据目标方法和\或目标字段的权限使用目标方法和\或目标字段,以生成补丁包。基于此,即使在复制某方法时,调用到了其他的方法和\或字段,由于本申请针对方法和\或字段的不同权限使用方法和\或权限,来生成补丁包,从而避免方法和\或字段无法被访问的问题,以生成有效的补丁包,进而可以解决热修复的问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本申请一实施例提供的应用场景示意图;
图2为本申请一实施例提供的生成补丁包的方法的流程图;
图3为本申请另一实施例提供的生成补丁包的方法的流程图;
图4为本申请再一实施例提供的生成补丁包的方法的流程图;
图5为本申请又一实施例提供的生成补丁包的方法的流程图;
图6为本申请再一实施例提供的生成补丁包的方法的流程图;
图7为本申请一实施例提供的界面示意图;
图8为本申请又一实施例提供的生成补丁包的方法的流程图;
图9为本申请一实施例提供的一种生成补丁包的装置的示意图;
图10为本申请一实施例提供的智能设备的示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
通常代码中包括数据结构:类,而类中包括字段、方法等。因此,通常对代码的修复涉及对方法的修复和字段的修复。
如上所述,在复制修改的方法时,存在一个问题,即字段及方法的访问限制问题。复制的方法中,可能会调用到其它类中的方法和\或字段,如果该方法和\或字段的权限是非public的,即这类方法和\或字段无法被访问。基于此,生成的补丁包无效,这就给热修复带来一定的困难。
为了解决上述技术问题,本申请提供一种生成补丁包的方法、装置、设备及存储介质。
示例性的,图1为本申请一实施例提供的应用场景示意图,如图1所示,当某应用(Application,APP)需要热修复时,开发人员在智能设备11上可以执行插桩过程,即在原始安装包的类中的每个方法中插入判断逻辑,当有补丁加载时,执行补丁中的逻辑,当无补丁时,执行原逻辑,以达到修复问题的目标。并在生成补丁包时,对原始安装包和新的安装包中的同名类中的每个方法进行对比,当发现有方法发生修改时,在补丁包中生成该类的补丁类。并且开发人员可以修改补丁类、方法及字段的权限。当设备11生成补丁包之后,可以将该补丁包上传至云端服务器12,以供终端设备13从云端服务器12下载补丁包,当终端设备加载完该补丁包之后,便完成了热修复过程。
需要说明的是,本申请技术方案的应用场景可以是上述应用场景,但并不限于此。
图2为本申请一实施例提供的生成补丁包的方法的流程图,该方法的执行主体可以是上述智能设备的部分或者全部,该智能设备可以是计算机,数字广播终端,移动电话、消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。该智能设备的部分可以是智能设备中的处理器或者芯片等。示例性的,下面以智能设备为执行主体,对方法进行说明。如图2所示,该方法可以包括如下步骤:
步骤S201:智能设备在对原始安装包进行插桩时,将原始安装包中的非public类的权限转换为public,非public字段的权限转换为public,protected方法及package-private方法的权限均转换为public。
步骤S202:智能设备在生成待修复方法的补丁包过程中,当需要使用原始安装包中的目标方法和\或目标字段时,根据目标方法和\或目标字段的权限使用目标方法和\或目标字段,以生成补丁包。
在编程语言(例如:Java、C或者C++语言)中,类是主要的类型,类成员可以包括常数、字段、方法、属性、时间、索引器、运算符、实例构造函数、析构函数、静态构造函数和嵌套类型声明。
字段是标识与对象或者类关联的变量的成员。方法是实现由对象或类执行的计算或操作的成员。
所谓“待修复方法”指的是原始安装包中需要修复的方法,智能设备目的是为该待修复方法生成patch方法。
其中,编程语言中的访问控制权限见表1。
表1
在编程语言中有public、protected、private三种显示的修饰符用于控制可见性,package-private不是显示的修饰符,它是隐含的,即如果在类、方法、字段等前没加显示的可见性修饰符,那它就是package-private级别的。如果在类的定义中没有指定package-private,那么在编程语言中,该package-private会被放在缺省包中,一般来说这个缺省的包就是当前目录。
在子类中的方法如果重载了父类的方法,那么该方法的可见级别相对于父类的可见级别应更低或者相同,如父类中的方法是public,那么子类中方法必须是public。
因此,上述权限非public,包括:protected、private和package-private。
智能设备在对原始安装包进行插桩时,可以在每个方法插入一段类型为ChangeQuickRedirect静态变量的逻辑,插入过程对业务开发是完全透明的。基于此,终端设备在加载补丁包时,从补丁包中读取要替换的类及具体替换的方法实现,新建ClassLoader加载补丁dex。当changeQuickRedirect不为null时,可能会执行到accessDispatch从而替换掉之前老的逻辑,达到热修复的目的。
在本申请中,智能设备在对原始安装包进行插桩时,将原始安装包中的非public类的权限转换为public,非public字段的权限转换为public,protected方法及package-private方法的权限均转换为public。可选的,对于private方法,则不修改其权限。
步骤S202存在如下三种情况:
情况一:智能设备在生成待修复方法的补丁包过程中,当需要使用原始安装包中的目标字段时,根据目标字段的权限使用目标字段,以生成补丁包。
相应的,图3为本申请另一实施例提供的生成补丁包的方法的流程图,如图3所示,上述步骤S202包括如下步骤:
步骤S301:在原始安装包中,调用目标字段,以生成补丁包。
情况二:智能设备在生成待修复方法的补丁包过程中,当需要使用原始安装包中的目标方法时,根据目标方法的权限使用目标方法,以生成补丁包。
图4为本申请再一实施例提供的生成补丁包的方法的流程图,如图3所示,上述步骤S202包括如下步骤:
步骤S401:若目标方法的权限是private,则将原始安装包中的目标方法复制到补丁包中,以生成补丁包。若目标方法的权限是public,则在原始安装包中,调用目标方法,以生成补丁包。
情况三:智能设备在生成待修复方法的补丁包过程中,当需要使用原始安装包中的目标方法和目标字段时,根据目标方法和目标字段的权限使用目标方法和目标字段,以生成补丁包。
图5为本申请又一实施例提供的生成补丁包的方法的流程图,如图5所示,上述步骤S202包括如下步骤:
步骤S501:在原始安装包中,调用目标字段,以生成补丁包。若目标方法的权限是private,则将原始安装包中的目标方法复制到补丁包中,以生成补丁包。若目标方法的权限是public,则在原始安装包中,调用目标方法,以生成补丁包。
针对上述三种情况进行如下说明:
所谓目标方法指的是:在生成补丁包的过程中,假设需要复制方法A,而该方法A需要调用其他的方法,该方法即为所述目标方法。
所谓目标字段指的是:在生成补丁包的过程中,假设需要复制方法A,而该方法A需要调用其他的字段,该字段即为所述目标字段。
由于在插桩过程中,非public字段的权限被转换成了public。即所有字段的权限均为public。因此,对于目标字段而言,只能设备直接可以从原始安装包中,调用目标字段。
由于在插桩过程中,protected方法及package-private方法的权限均转换为public。即原始安装包方法的权限为public或者private。因此,若目标方法的权限是private,则将原始安装包中的目标方法复制到补丁包中,以生成补丁包。若目标方法的权限是public,则在原始安装包中,调用目标方法,以生成补丁包。
在本申请实施例中,由于智能设备在对原始安装包进行插桩时,将原始安装包中的非public类的权限转换为public,非public字段的权限转换为public,protected方法及package-private方法的权限均转换为public。因此,智能设备在生成待修复方法的补丁包过程中,当需要使用原始安装包中的目标方法和\或目标字段时,根据目标方法和\或目标字段的权限使用目标方法和\或目标字段,以生成补丁包。基于此,即使在复制某方法时,调用到了其他的方法和\或字段,由于本申请针对方法和\或字段的不同权限使用方法和\或权限,来生成补丁包,从而避免方法和\或字段无法被访问的问题,以生成有效的补丁包,进而可以解决热修复的问题。
进一步地,对于目标字段,也可以直接调用目标字段,可以提高补丁包的生成效率。本申请对于权限是public的方法,采用直接调用的方式。相对于反射调用方式,可以提高补丁包的生成效率。相对于复制方式,从而可以减小补丁包的大小。对于权限是private的方法,则将原始安装包中的目标方法复制到补丁包中,以生成补丁包,从而可以提高生成补丁包的灵活性。
图6为本申请再一实施例提供的生成补丁包的方法的流程图,该方法的执行主体可以是上述智能设备的部分或者全部,该智能设备可以是计算机,数字广播终端,移动电话、消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。该智能设备的部分可以是智能设备中的处理器或者芯片等。示例性的,下面以智能设备为执行主体,对方法进行说明。如图6所示,该方法可以包括如下步骤:
步骤S601:智能设备在对原始安装包进行插桩时,将原始安装包中的非public类的权限转换为public,非public字段的权限转换为public,protected方法及package-private方法的权限均转换为public。
步骤S602:若目标方法的原始权限为protected或package-private,且对目标方法的权限转换失败,则采用反射调用方式调用目标方法,以生成补丁包。
所谓“对目标方法的权限转换失败”,例如:智能设备将该目标方法的原始权限从protected或package-private到public的转换失败。
其中,步骤S601与步骤S201相同,针对该步骤的解释说明,可参考上一实施例,对此不再赘述。
针对步骤S602进行如下说明:
反射调用方式大致包括如下步骤:
1、获取目标方法所在类的Class对象。
2、实例化这个Class对象。
3、获取当前类的目标方法。
4、用目标方法方法对象名.invoke,通过Class对象的实例,调用带相应参数的目标方法。
通过反射调用目标方法,具体实现需要注意两点:
(1)通过Class类的getMethod方法取的Method对象,并设置调用方法时需要的参数类型。
(2)使用Method方法调用invoke方法,并向该方法传递参数,其参数通常是一个类的对象。
在本申请实施例中,若目标方法的原始权限为protected或package-private,且对目标方法的权限转换失败,则将原始安装包中的目标方法复制到补丁包中,以生成补丁包。相反,若目标方法的原始权限为protected或package-private,且对目标方法的权限转换成功,则在原始安装包中,调用目标方法,以生成补丁包。从而可以提高生成补丁包的灵活性。
在本申请中,若智能设备获取到目标调用指令,则进行报错。其中,目标调用指令用于调用非public方法,可选的,该目标调用指令是invoke-super调用指令。其中,可以采用以下至少一项报错方式:语音方式、警示灯方式、显示信息方式。
例如:若智能设备获取到所述目标调用指令,则该智能设备播报“无法调用”的语音信息。
或者,
若智能设备获取到所述目标调用指令,则该智能设备的某警示灯闪烁。
或者,
图7为本申请一实施例提供的界面示意图,如图7所示,若智能设备获取到所述目标调用指令,则该智能设备显示“无法调用”的字样。
进一步地,图8为本申请又一实施例提供的生成补丁包的方法的流程图,该方法的执行主体可以是上述智能设备的部分或者全部,该智能设备可以是计算机,数字广播终端,移动电话、消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。该智能设备的部分可以是智能设备中的处理器或者芯片等。示例性的,下面以智能设备为执行主体,对方法进行说明。如图8所示,在步骤S202之后(其中,图8以在步骤S202之后为例)或者在步骤S602之后,该方法可以包括如下步骤:
步骤S801:智能设备向云端服务器发送补丁包,以供终端设备下载补丁包。
其中,终端设备在加载补丁包时,从补丁包中读取要替换的类及具体替换的方法实现,新建ClassLoader加载补丁dex。当changeQuickRedirect不为null时,可能会执行到accessDispatch从而替换掉之前老的逻辑,达到热修复的目的。
图9为本申请一实施例提供的一种生成补丁包的装置的示意图,其中该装置可以是上述智能设备的部分或者全部,该智能设备可以是计算机,数字广播终端,移动电话、消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。如图9所示,该装置包括:
转换模块901,用于在对原始安装包进行插桩时,将原始安装包中的非public类的权限转换为public,非public字段的权限转换为public,protected方法及package-private方法的权限均转换为public。
第一生成模块902,用于在生成待修复方法的补丁包过程中,当需要使用原始安装包中的目标方法和\或目标字段时,根据目标方法和\或目标字段的权限使用目标方法和\或目标字段,以生成补丁包。
可选的,第一生成模块902具体用于:
在原始安装包中,调用目标字段,以生成补丁包。
和\或,
若目标方法的权限是private,则将原始安装包中的目标方法复制到补丁包中,以生成补丁包。
若目标方法的权限是public,则在原始安装包中,调用目标方法,以生成补丁包。
可选的,该装置还包括:第二生成模块903,用于若对目标方法的原始权限为protected或package-private,且对目标方法的权限转换失败,则采用反射调用方式调用目标方法,以生成补丁包。
可选的,该装置还包括:报错模块904,用于若获取到目标调用指令,则进行报错。
其中,目标调用指令用于调用非public方法。
可选的,报错模块904具体用于:若获取到目标调用指令,则进行以下至少一项:语音报错、警示灯报错、显示信息报错。
可选的,该装置还包括:发送模块905,用于向云端服务器发送补丁包,以供终端设备下载补丁包。
本申请提供的生成补丁包的装置可用于执行上述方法实施例,其内容和效果可参考方法实施例部分,本申请对此不再赘述。
图10为本申请一实施例提供的智能设备的示意图,如图10所示,该智能设备包括:存储器1001、处理器1002和收发器1003,其中该收发器1003用于智能设备与其他设备之间的数据传输。存储器1001用于存储计算机指令。处理器1002用于执行计算机指令,以实现上述的生成补丁包的方法,其内容和效果可参考上述方法实施例部分,对此不再赘述。
本申请还提供一种存储介质,包括:可读存储介质和计算机指令,所述计算机指令存储在所述可读存储介质中;所述计算机指令用于实现前述任一方法实施例提供的生成补丁包的方法。
本申请实施例还提供一种程序产品,该程序产品包括计算机指令(即计算机程序),该计算机指令存储在可读存储介质中。智能设备的至少一个处理器可以从可读存储介质读取该计算机指令,至少一个处理器执行该计算机指令,以实现上述生成补丁包的方法。
在上述翻译设备的具体实现中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:只读存储器(英文:read-only memory,缩写:ROM)、RAM、快闪存储器、硬盘、固态硬盘、磁带(英文:magnetictape)、软盘(英文:floppy disk)、光盘(英文:optical disc)及其任意组合。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (13)
1.一种生成补丁包的方法,其特征在于,包括:
在对原始安装包进行插桩时,将所述原始安装包中的非public类的权限转换为public,非public字段的权限转换为public,protected方法及package-private方法的权限均转换为public;
在生成待修复方法的补丁包过程中,当需要使用所述原始安装包中的目标方法和\或目标字段时,根据所述目标方法和\或目标字段的权限使用所述目标方法和\或目标字段,以生成所述补丁包。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标方法和\或目标字段的权限使用所述目标方法和\或目标字段,以生成所述补丁包,包括:
在所述原始安装包中,调用所述目标字段,以生成所述补丁包;
和\或,
若所述目标方法的权限是private,则将所述原始安装包中的所述目标方法复制到所述补丁包中,以生成所述补丁包;
若所述目标方法的权限是public,则在所述原始安装包中,调用所述目标方法,以生成所述补丁包。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
若所述目标方法的原始权限为protected或package-private,且对所述目标方法的权限转换失败,则采用反射调用方式调用所述目标方法,以生成所述补丁包。
4.根据权利要求1或2所述的方法,其特征在于,还包括:
若获取到目标调用指令,则进行报错;
其中,所述目标调用指令用于调用非public方法。
5.根据权利要求4所述的方法,其特征在于,所述若获取到目标调用指令,则进行报错,包括:
若获取到目标调用指令,则进行以下至少一项:语音报错、警示灯报错、显示信息报错。
6.根据权利要求1或2所述的方法,其特征在于,所述根据所述目标方法和\或目标字段的权限使用所述目标方法和\或目标字段,以生成所述补丁包之后,还包括:
向云端服务器发送所述补丁包,以供终端设备下载所述补丁包。
7.一种生成补丁包的装置,其特征在于,包括:
转换模块,用于在对原始安装包进行插桩时,将所述原始安装包中的非public类的权限转换为public,非public字段的权限转换为public,protected方法及package-private方法的权限均转换为public;
第一生成模块,用于在生成待修复方法的补丁包过程中,当需要使用所述原始安装包中的目标方法和\或目标字段时,根据所述目标方法和\或目标字段的权限使用所述目标方法和\或目标字段,以生成所述补丁包。
8.根据权利要求7所述的装置,其特征在于,所述第一生成模块具体用于:
在所述原始安装包中,调用所述目标字段,以生成所述补丁包;
和\或,
若所述目标方法的权限是private,则将所述原始安装包中的所述目标方法复制到所述补丁包中,以生成所述补丁包;
若所述目标方法的权限是public,则在所述原始安装包中,调用所述目标方法,以生成所述补丁包。
9.根据权利要求7或8所述的装置,其特征在于,还包括:
第二生成模块,用于若所述目标方法的原始权限为protected或package-private,且对所述目标方法的权限转换失败,则采用反射调用方式调用所述目标方法,以生成所述补丁包。
10.根据权利要求7或8所述的装置,其特征在于,还包括:
报错模块,用于若获取到目标调用指令,则进行报错;
其中,所述目标调用指令用于调用非public方法。
11.根据权利要求7或8所述的装置,其特征在于,还包括:
发送模块,用于向云端服务器发送所述补丁包,以供终端设备下载所述补丁包。
12.一种生成补丁包的设备,其特征在于,包括:存储器和处理器;
所述存储器用于存储计算机指令;所述处理器用于运行所述存储器存储的所述计算机指令实现权利要求1至6任一项所述的生成补丁包的方法。
13.一种存储介质,其特征在于,包括:可读存储介质和计算机指令,所述计算机指令存储在所述可读存储介质中;所述计算机指令用于实现权利要求1至6任一项所述的生成补丁包的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910541776.7A CN110297655B (zh) | 2019-06-21 | 2019-06-21 | 生成补丁包的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910541776.7A CN110297655B (zh) | 2019-06-21 | 2019-06-21 | 生成补丁包的方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110297655A true CN110297655A (zh) | 2019-10-01 |
CN110297655B CN110297655B (zh) | 2023-06-06 |
Family
ID=68028453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910541776.7A Active CN110297655B (zh) | 2019-06-21 | 2019-06-21 | 生成补丁包的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110297655B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112650521A (zh) * | 2020-12-28 | 2021-04-13 | 北京字节跳动网络技术有限公司 | 软件开发工具包sdk热修复方法、装置与电子设备 |
CN112947929A (zh) * | 2021-01-28 | 2021-06-11 | 北京字节跳动网络技术有限公司 | 应用程序安装包的构建方法、装置、计算机设备和介质 |
CN113377382A (zh) * | 2020-03-09 | 2021-09-10 | 北京字节跳动网络技术有限公司 | 一种软件安装包的处理方法、装置、电子设备及存储介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130347124A1 (en) * | 2012-06-26 | 2013-12-26 | Sap Portals Israel Ltd | Accessing Restricted Resources In Computer Programming |
US8924412B2 (en) * | 2005-12-21 | 2014-12-30 | Digimarc Corporation | Rules driven pan ID metadata routing system and network |
CN105430681A (zh) * | 2015-11-04 | 2016-03-23 | 努比亚技术有限公司 | 异常自动上传及恢复方法、装置及移动终端 |
CN106503579A (zh) * | 2016-09-29 | 2017-03-15 | 维沃移动通信有限公司 | 一种访问目标文件的方法及装置 |
CN106951279A (zh) * | 2017-02-27 | 2017-07-14 | 努比亚技术有限公司 | 应用的热修复装置及方法 |
CN107133068A (zh) * | 2017-04-18 | 2017-09-05 | 努比亚技术有限公司 | 移动终端及应用修复方法 |
CN108170550A (zh) * | 2017-12-29 | 2018-06-15 | 五八有限公司 | 异常处理的方法、装置及设备 |
CN109344619A (zh) * | 2018-08-15 | 2019-02-15 | 北京奇艺世纪科技有限公司 | 应用程序的热修复方法和装置 |
US20190073213A1 (en) * | 2017-09-04 | 2019-03-07 | Alibaba Group Holding Limited | Sending updates associated with a transaction platform to a distribution group of users associated with a messaging service |
CN109445816A (zh) * | 2018-10-16 | 2019-03-08 | 网易(杭州)网络有限公司 | 导表处理方法、装置、存储介质、处理器及终端 |
CN109491695A (zh) * | 2018-10-19 | 2019-03-19 | 华南理工大学 | 一种集成安卓应用的增量更新方法 |
CN109726535A (zh) * | 2018-12-29 | 2019-05-07 | 杭州数澜科技有限公司 | 一种用于大数据平台的数据权限管理的方法和系统 |
CN109828772A (zh) * | 2019-02-19 | 2019-05-31 | 百度在线网络技术(北京)有限公司 | 热更新方法、操作系统、终端设备和存储介质 |
-
2019
- 2019-06-21 CN CN201910541776.7A patent/CN110297655B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8924412B2 (en) * | 2005-12-21 | 2014-12-30 | Digimarc Corporation | Rules driven pan ID metadata routing system and network |
US20130347124A1 (en) * | 2012-06-26 | 2013-12-26 | Sap Portals Israel Ltd | Accessing Restricted Resources In Computer Programming |
CN105430681A (zh) * | 2015-11-04 | 2016-03-23 | 努比亚技术有限公司 | 异常自动上传及恢复方法、装置及移动终端 |
CN106503579A (zh) * | 2016-09-29 | 2017-03-15 | 维沃移动通信有限公司 | 一种访问目标文件的方法及装置 |
CN106951279A (zh) * | 2017-02-27 | 2017-07-14 | 努比亚技术有限公司 | 应用的热修复装置及方法 |
CN107133068A (zh) * | 2017-04-18 | 2017-09-05 | 努比亚技术有限公司 | 移动终端及应用修复方法 |
US20190073213A1 (en) * | 2017-09-04 | 2019-03-07 | Alibaba Group Holding Limited | Sending updates associated with a transaction platform to a distribution group of users associated with a messaging service |
CN108170550A (zh) * | 2017-12-29 | 2018-06-15 | 五八有限公司 | 异常处理的方法、装置及设备 |
CN109344619A (zh) * | 2018-08-15 | 2019-02-15 | 北京奇艺世纪科技有限公司 | 应用程序的热修复方法和装置 |
CN109445816A (zh) * | 2018-10-16 | 2019-03-08 | 网易(杭州)网络有限公司 | 导表处理方法、装置、存储介质、处理器及终端 |
CN109491695A (zh) * | 2018-10-19 | 2019-03-19 | 华南理工大学 | 一种集成安卓应用的增量更新方法 |
CN109726535A (zh) * | 2018-12-29 | 2019-05-07 | 杭州数澜科技有限公司 | 一种用于大数据平台的数据权限管理的方法和系统 |
CN109828772A (zh) * | 2019-02-19 | 2019-05-31 | 百度在线网络技术(北京)有限公司 | 热更新方法、操作系统、终端设备和存储介质 |
Non-Patent Citations (3)
Title |
---|
IT前沿技术分享: "Android热更新二:理解Java反射", pages 1 - 8, Retrieved from the Internet <URL:《https://www.jianshu.com/p/156f4b5337e2》> * |
JEFF HICKS: "Creating Simple PowerShell HotFix HTMLReports", pages 1 - 7, Retrieved from the Internet <URL:https://petri.com/simple-powershell-hotfix-html-reports/> * |
张奕 等: "单元测试中访问权限受限的成员函数的测试", 《微电子学与计算机》, vol. 22, no. 4, pages 185 - 188 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377382A (zh) * | 2020-03-09 | 2021-09-10 | 北京字节跳动网络技术有限公司 | 一种软件安装包的处理方法、装置、电子设备及存储介质 |
CN112650521A (zh) * | 2020-12-28 | 2021-04-13 | 北京字节跳动网络技术有限公司 | 软件开发工具包sdk热修复方法、装置与电子设备 |
CN112650521B (zh) * | 2020-12-28 | 2023-11-10 | 抖音视界有限公司 | 软件开发工具包sdk热修复方法、装置与电子设备 |
CN112947929A (zh) * | 2021-01-28 | 2021-06-11 | 北京字节跳动网络技术有限公司 | 应用程序安装包的构建方法、装置、计算机设备和介质 |
CN112947929B (zh) * | 2021-01-28 | 2023-11-24 | 抖音视界有限公司 | 应用程序安装包的构建方法、装置、计算机设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110297655B (zh) | 2023-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
FI106752B (fi) | Järjestelmä ohjelmiston vaihtamiseksi tietokoneen käytön aikana | |
CN110297655A (zh) | 生成补丁包的方法、装置、设备及存储介质 | |
US8151258B2 (en) | Managing software patches | |
US7096311B2 (en) | Updating electronic files using byte-level file differencing and updating algorithms | |
JP5058450B2 (ja) | 効率的なパッチ当て | |
CN106055979B (zh) | 内核修复方法和装置 | |
EP2876865B1 (en) | Communication apparatus, communication system, communication method and recording medium | |
US20150067167A1 (en) | Hot pluggable extensions for access management system | |
CN110544097A (zh) | 智能合约版本控制、调用和升级方法、设备及存储介质 | |
CN102105848A (zh) | 用于管理硬件资源的资源管理器 | |
MXPA05003944A (es) | Parchado eficiente. | |
US20230036357A1 (en) | Method and apparatus for authority control, computer device and storage medium | |
US20120180076A1 (en) | System and Method to Abstract Hardware Routing via a Correlatable Identifier | |
CN111352653B (zh) | 基于PaaS云平台服务器的系统开发方法及服务器 | |
KR20150023354A (ko) | 트랜잭셔널 미들웨어 머신 환경에서 묵시적 버저닝을 지원하기 위한 시스템 및 방법 | |
CN110209416A (zh) | 应用软件更新方法、装置、终端及存储介质 | |
CN113687858B (zh) | 配置文件的检查方法、装置、电子设备及存储介质 | |
CN110049090B (zh) | 配置微服务架构中的自适应断路器链的方法、系统 | |
CN106713469B (zh) | 用于分布式容器的动态加载方法、装置及系统 | |
CN1696910B (zh) | 用于对软件打补丁的方法和系统 | |
US11106435B1 (en) | OPC UA server, system operating using OPC UA, and method of executing OPC UA system | |
CN111770122A (zh) | 服务通信代理scp注册方法、服务调用方法及网络设备 | |
CN108920171A (zh) | 固件更新方法及装置、电子设备 | |
CN103064783A (zh) | 使用重复利用动态链接库进行功能测试的系统和方法 | |
CN111970349B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |