CN112905220A - 热修复方法、装置、设备及存储介质 - Google Patents
热修复方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112905220A CN112905220A CN202110282350.1A CN202110282350A CN112905220A CN 112905220 A CN112905220 A CN 112905220A CN 202110282350 A CN202110282350 A CN 202110282350A CN 112905220 A CN112905220 A CN 112905220A
- Authority
- CN
- China
- Prior art keywords
- sdk
- code
- thermal
- repair
- rule
- 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
- 238000000034 method Methods 0.000 title claims abstract description 85
- 230000008439 repair process Effects 0.000 claims abstract description 208
- 230000014759 maintenance of location Effects 0.000 claims abstract description 79
- 230000006870 function Effects 0.000 claims description 48
- 230000001419 dependent effect Effects 0.000 claims description 38
- 238000013507 mapping Methods 0.000 claims description 31
- 238000005067 remediation Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 18
- 238000011084 recovery Methods 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 6
- 230000009545 invasion Effects 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000008447 perception Effects 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000013067 intermediate product Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Images
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/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例提供一种热修复方法、装置、设备及存储介质,该方法包括:对用于热修复的软件开发工具包SDK进行编译;查找用于存储代码混淆时保持规则的目标文件;查找所述SDK中的需要保持的内容,并基于所述内容生成更新的保持规则;将所述目标文件中的所述保持规则,更新为所述更新的保持规则,生成二进制归档文件;其中,所述二进制归档文件用于为接入所述SDK的目标应用提供热修复功能。本公开实施例能够使接入方App在二次混淆后,无需额外操作就能便于有效地使用SDK的热修复功能,扩大了SDK热修的适用范围。
Description
技术领域
本公开实施例涉及计算机技术领域,尤其涉及一种热修复方法、装置、设备及存储介质。
背景技术
热修复(hotfix),是指通过发布patch(补丁,即用来修复漏洞的补丁)在线上实现修复的方式,是一种低成本修复软件版本缺陷的方法。现有的热修复方式,都是在客户端启动应用程序(App,application)时,主动向服务端发起请求,查看是否有热修复脚本,如果存在脚本则下载脚本并执行脚本。
对于软件开发工具包(Software Development Kit,SDK)级别的热修复方案常见的方式包括利用钩子程序(hookApp)编译过程的SDK热修复方案或是采用自身代码(project_only)的方式进行可选范围内热修复方案,一般接入方App在接入SDK时需要进行二次混淆,但二次混淆可能会导致热补丁不可用,热修复失败,甚至可能导致App接入失败。现有技术中,通过给出相应的keep规则要求,接入方App在接入SDK时添加相应keep(即不混淆或保持)规则,但是这样会造成以下缺陷:如果提供keep规则,则依赖于App接入时手动进行keep(即不混淆),App如果漏添加了其他相关规则,有可能造成热修复无效,App闪退等问题,同时需要SDK和App每次更新SDK版本时手动维护keep规则,维护成本很高。
因此,现有技术的热修复方案,一旦接入方App进行二次混淆后,不能保证热修复的有效性,甚至反而会因为热修复的下发造成接入方App的崩溃,即使通过维护keep规则来保证二次混淆后的可用性,也需要SDK和接入方App两方共同维护,针对接入方App的侵人性很大。
发明内容
本公开实施例提供一种热修复方法、装置、设备及存储介质,能够使接入方App在二次混淆后,无需额外操作就能便于有效地使用SDK的热修复功能,扩大了SDK热修的适用范围。
第一方面,本公开实施例提供一种热修复方法,所述方法包括:
对用于热修复的软件开发工具包SDK进行编译;
查找用于存储代码混淆时保持规则的目标文件;
查找热修复SDK中的需要保持的内容,并基于所述内容生成更新的保持规则;
将所述目标文件中的所述保持规则,更新为所述更新的保持规则,生成二进制归档文件;
其中,所述二进制归档文件用于为接入所述热修复SDK的目标应用提供热修复功能。
第二方面,本公开实施例提供一种热修复方法,所述方法包括:
获取二进制归档文件中编译后的热修复SDK和包含更新的保持规则的目标文件;
接入编译后的热修复SDK,从目标文件中获取所述更新的保持规则,并根据所述更新的保持规则进行二次混淆;
通过所述编译后的热修复SDK的热修复功能对二次混淆后的代码进行热修复,所述编译后的热修复SDK的代码是经过混淆后的代码。
第三方面,本公开实施例提供一种热修复装置,包括:
编译模块,用于对用于热修复的软件开发工具包SDK进行编译;
第一查找模块,用于查找用于存储代码混淆时保持规则的目标文件;
第二查找模块,用于查找所述SDK中的需要保持的内容,并基于所述内容生成更新的保持规则;
更新模块,用于将所述目标文件中的所述保持规则,更新为所述更新的保持规则,生成二进制归档文件
其中,所述二进制归档文件用于为接入所述SDK的目标应用提供热修复功能。
第四方面,本公开实施例提供一种热修复装置,包括:
获取模块,用于获取二进制归档文件中编译后的热修复SDK和包含更新的保持规则的目标文件;
处理模块,用于接入编译后的热修复SDK,从目标文件中获取所述keep更新的保持规则的内容,并根据所述keep更新的保持规则的内容进行二次混淆;
热修复模块,用于通过所述编译后的热修复SDK的热修复功能对二次混淆后的代码进行热修复,所述编译后的热修复SDK的代码是经过混淆后的代码。
第五方面,本公开实施例提供一种电子设备,包括:至少一个处理器、存储器以及通信接口;
所述通信接口用于与网络设备进行通信;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上述第一方面以及第二方面所述的热修复方法。
第六方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第二方面所述的热修复方法。
第七方面,本公开实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上第一方面以及第二方面所述的热修复方法。
本公开实施例提供的热修复方法、装置、设备及存储介质,首先对用于热修复的软件开发工具包SDK进行编译,在编译过程中,查找用于存储代码混淆时保持规则的目标文件,并查找所述SDK中的需要保持的内容,并基于所述内容生成更新的保持规则;然后将所述目标文件中的所述保持规则,更新为所述更新的保持规则,生成二进制归档文件,用以为接入所述SDK的目标应用提供热修复功能,因此,当接入方App(即目标应用)需要接入SDK时,目标应用可以直接从目标文件中获取不需要混淆的内容(即保持内容)即可,进而通过SDK的热修复功能对二次混淆后的代码进行热修复,无需目标应用做额外操作即可使用SDK的热修复功能,解决了SDK热修复对目标应用的侵入性问题,同时适用于有无不可混淆要求的热修复,扩大了SDK热修复的适用范围。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的热修复方法的场景示意图;
图2为本公开实施例提供的热修复方法的流程示意图;
图3为本公开另一实施例提供的热修复方法的流程示意图;
图4为本公开再一实施例提供的热修复方法的流程示意图;
图5为本公开另一实施例提供的热修复方法的流程示意图;
图6为本公开实施例提供的热修复装置的结构框图;
图7为本公开再一实施例提供的热修复装置的结构框图;
图8为本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置或模块之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
现有技术中,一般接入方App对二次混淆有要求即一般需要进行二次混淆,但是目前SDK热修复方案在接入方App进行二次混淆后,会造成SDK的热修复功能不可用,甚至反而会增大闪退(或崩溃)率,即使通过维护keep规则来保证二次混淆后的可用性,也需要SDK和接入App两方共同维护,针对接入方App的侵入性很大,维护成本高。
为了解决上述问题,本公开的技术构思为:利用Android库项目的二进制归档文件(Android Archive,AAR)的特性,aar(即AAR)中有一个proguard.txt,利用proguard.txt可以存储在编译SDK的过程中生成keep规则的内容,这样接入方App接入SDK时利用proguard.txt中的keep规则,即可知道不混淆的自身代码和外部依赖代码;其中自身代码已混淆过一次,不会造成自身代码的逻辑泄漏。这样实现了接入方App能够在二次混淆的情况下,无感知的使用SDK的热修复功能,扩大了SDK热修复的适用范围和易用性,保证了接入方App的代码安全。
参见图1所示,图1为本公开实施例提供的热修复方法的场景示意图,其中,本公开的热修复方法实现的是在Android平台10上保证接入方App(这里指目标应用20)二次混淆时仍能进行SDK30热修复,且对接入方App无侵入性,无不可混淆要求,无需更新SDK30时同步更新SDK热修复相关的keep规则。
参见图2所示,图2为本公开实施例提供的热修复方法的流程示意图。本公开实施例的方法可以应用在终端设备或服务器中,本公开实施例中对执行主体不进行限定。该热修复方法包括:
步骤S101、对用于热修复的软件开发工具包SDK进行编译。
本公开实施例中,可以应用于Android平台。在Android平台上接入方App若想正常使用接入的SDK的热修复功能,需要在生成或编译SDK的过程中,将不混淆的内容(这里指保持规则)添加到aar中,使得接入方App在接入SDK时,根据添加的keep规则(即不混淆规则或保持规则),将不混淆的内容去除再进行二次混淆,这样接入方App经过二次混淆后,在使用SDK的热修复功能时,代码能够被识别,实现热修复即仍然可以使用SDK的热修复功能。
具体地,响应于用于指示执行编译SDK操作的指令,根据预设编译语言,执行编译SDK的操作。其中,在编译SDK的过程中,将需要的keep规则更新在aar的proguard.txt即目标文件中,这里目标文件中存储的是keep规则即不混淆的内容。
S102、查找用于存储代码混淆时保持规则的目标文件。
本公开实施例中,在编译过程中,可以通过查找aar的proguard.txt即目标文件,将keep规则存储在proguard.txt中。
S103、查找所述SDK中的需要保持的内容,并基于所述内容生成更新的保持规则。
S104、将所述目标文件中的所述保持规则,更新为所述更新的保持规则,生成二进制归档文件。
其中,所述二进制归档文件用于为接入所述SDK的目标应用提供热修复功能。
本公开实施例中,在编译过程中,可以通过查找SDK中的需要保持的内容,然后将其内容生成更新的保持规则(或不混淆规则),并将更新的保持规则更新在目标文件中,生成二进制归档文件。
在实际应用中,在Android平台上通知接入方App接入编译后的SDK,目标应用在接入编译后的SDK时,通过查找,确定编译后的SDK中是否存在keep规则,若存在,则直接获取keep规则的内容,然后基于keep规则,对自身App进行二次混淆,这样保证了SDK中经过混淆后的代码不再进行二次混淆,避免接入方App无法使用SDK的热修复功能。其中,这里对接入方App不做限定,无不可混淆要求。
本公开提供的热修复方法,通过对用于热修复的软件开发工具包SDK进行编译,在编译过程中,查找用于存储代码混淆时保持规则的目标文件,并查找所述SDK中的需要保持的内容,并基于所述内容生成更新的保持规则;然后将所述目标文件中的所述保持规则,更新为所述更新的保持规则,生成二进制归档文件,用以为接入所述SDK的目标应用提供热修复功能,因此,当接入方App(即目标应用)需要接入SDK时,目标应用可以直接从目标文件中获取不需要混淆的内容(即保持内容)即可,进而通过SDK的热修复功能对二次混淆后的代码进行热修复,无需目标应用做额外操作即可使用SDK的热修复功能,解决了SDK热修复对目标应用的侵入性问题,同时适用于有无不可混淆要求的热修复,扩大了SDK热修复的适用范围。
在实际应用中,经过混淆是为了不泄露代码,以免造成代码的逻辑泄露。因此,本公开实施例,采用了一种保证App接入SDK并二次混淆后仍可使用SDK的热修复功能的方案,该方案对接入方App无侵入性,无不可混淆要求,无需更新SDK时同步更新SDK热修复相关的keep规则,并且针对SDK无持续维护成本,进而减小了普通App接入热修SDK的接入成本。
在本公开的一个实施例中,通过利用aar的特性,aar中有一个proguard.txt,其中列出了该aar需要的keep规则,在编译SDK的过程中,把需要keep规则的内容更新到这个文件中即可,因此,若要将keep规则的内容添加至该目标文件中,需要先找到SDK在编译过程中产生的中间产物proguard.txt的位置。本公开实施例在上述实施例的基础上,对如何获取位置进行了详细说明。查找用于存储代码混淆时保持规则的目标文件,可以通过以下步骤实现:
在aar中查找用于存储代码混淆时保持规则的目标文件的位置。
相应的,将所述目标文件中的所述保持规则,更新为所述更新的保持规则,可以通过以下步骤实现:
根据查找到的所述目标文件的位置,将所述第一代码和所述依赖代码添加至所述目标文件中。
本公开实施例中,通过在混淆过程中的任务(即hook Merge Consumer ProguardFiles Task),查找到最终生成aar中的proguard.txt文件在编译过程中所在位置,该位置即为用于存储SDK对应的keep规则的内容的目标文件位置即存储代码混淆时保持规则的目标文件的位置。
其中,在找到目标文件位置之后,根据所述目标文件位置,将所述第一代码和所述依赖代码添加至所述目标文件中。
在本公开的一个实施例中,在找到目标文件之后,如何确定并添加需要不混淆的内容,参见图3所示,图3为本公开另一实施例提供的热修复方法的流程示意图,本公开实施例在上述实施例的基础上,对热修复方法进行了详细说明。在生成二进制归档文件之前,所述方法还包括:
S201、响应于用于指示执行编译SDK的指令,对所述SDK进行编译,生成第一代码,所述第一代码用于表示在执行编译热修复SDK操作时使用混淆后的自身代码。
S202、将所述第一代码和所述依赖代码的类名作为所述更新的保持规则。
其中,所述热修复SDK(这里指用于热修复的软件开发工具包SDK,或者直接用SDK表示即可)包括自身代码和除所述自身代码以外的依赖代码。
本公开实施例中,在编译SDK的过程中,为了保证代码的不泄露,需要对SDK的代码进行混淆,混淆后的代码为简单的代码,不可读。其中,在执行编译SDK操作时,对SDK的自身代码使用混淆后,生成第一代码,在此不限定是否对SDK中的除所述自身代码以外的依赖代码进行混淆,只需要将执行编译SDK操作时使用混淆后的自身代码和SDK中的依赖代码作为所述keep规则的内容即不需要混淆的内容,并将内容生成更新的keep规则即第一代码的类名和所述依赖代码的类名存储在proguard.txt文件中。
其中,该依赖代码可以为其他SDK中的代码,这里其他SDK中的代码可以为其他SDK混淆前的代码和/或所述其他SDK混淆后的代码。
在本公开的一个实施例中,如何将编译SDK时生成的更新的keep规则存储至目标文件中,参见图4所示,图4为本公开再一实施例提供的热修复方法的流程示意图。本公开实施例在上述实施例的基础上,例如图3所述的实施例的基础上,对S104进行了详细说明。所述将所述目标文件中的所述保持规则,更新为所述更新的保持规则,包括:
S301、在执行编译SDK操作时,生成用于存储所述自身代码和所述第一代码之间映射关系的映射表。
S302、获取所述映射表的位置,并根据所述映射关系,从所述映射表中提取所述混淆后的类名。
S303、将所述混淆后的类名更新并存储至所述目标文件中。
本公开实施例中,在编译SDK过程中,会生成一个print Mapping映射表,该映射表是为了存储自身代码和自身代码经过混淆后的代码等。在经过代码混淆后,首先找到printMapping映射表所在位置,然后根据映射表中的映射关系,从print Mapping映射表中取出project_only(即内部代码或自身代码,用于表示SDK自身代码)范围内的混淆后的类名,将该混淆后的类名作为keep规则素材,存储在目标文件中。
S304、从执行编译SDK操作时的热修复任务中,获取所述热修复SDK中的依赖代码。
S305、将所述依赖代码的类名更新并存储至所述目标文件中。
本公开实施例中,通过热修复插桩过程,获取依赖代码的类名。具体地,在编译过程中任务之间的信息传输方式即上一个任务的输出作为下一个任务的输入,将查找到的SDK中project_only范围以外的依赖代码的类名保存到相关文件即proguard.txt文件中,作为keep规则素材。
具体地,通过热修复任务将上述步骤中的素材更新到所找到的文件中,在完成aar或SDK的编译时,其中的proguard.txt已经更新,SDK热修复相关的混淆规则全部更新在aar中的proguard.txt中了,接入方App接入时无需进行额外操作。
在本公开的一个实施例中,如何使得接入方App基于keep规则进行二次混淆,可以包括以下步骤:
指示目标应用接入编译后的热修复SDK,以使所述目标应用对接入编译后的热修复SDK的所有代码中除所述keep规则的内容以外的其他代码进行二次混淆。
本公开实施例中,接入方App接入时利用热修复SDK中生成的proguard.txt产物中的keep规则,即可知道需要keep的自身代码和外部依赖代码(即依赖代码);其中自身代码已混淆过一次,不会造成自身代码的逻辑泄漏。这样接入方App可以在接人时进行二次混淆,且无需为热修SDK添加额外的keep规则。
本公开实施例中,解决了SDK热修复对接入方App的侵入性要求,使接入方App在二次混淆后,无需额外操作就能使用SDK的热修复功能,扩大了SDK热修复的适用范围和易用性。实现了接入方能够在二次混淆的情况下,无感知的使用SDK的热修复功能,不仅扩大了SDK热修复的适用范围和易用性,还保证了接入方App的代码安全。不但对接入方App无侵入性,无不可混淆要求,无需更新SDK同时同步更新SDK热修复相关的keep规则,且SDK侧无持续维护成本。
参见图5所示,图5为本公开另一实施例提供的热修复方法的流程示意图。本公开实施例的方法可以应用在终端设备中,该终端设备安装有目标应用(这里指接入方App)。该热修复方法可以包括:
S401、获取二进制归档文件中编译后的热修复SDK和包含更新的保持规则的目标文件;
S402、接入编译后的热修复SDK,从目标文件中获取所述更新的保持规则,并根据所述更新的保持规则进行二次混淆;
S403、通过所述编译后的热修复SDK的热修复功能对二次混淆后的代码进行热修复,所述编译后的热修复SDK的代码是经过混淆后的代码。
本公开实施例中,目标应用需要接入热修复SDK时,首先从二进制归档文件中获取编译后的热修复SDK和包含更新的保持规则的目标文件,然后在接入编译后的热修复SDK时,需要从目标文件中获取更新的保持规则,并按照更新的保持规则进行代码的二次混淆,得到二次混淆后的代码,然后使用热修复SDK的热修复功能对二次混淆后的代码进行热修复。因此,本公开实施例通过利用aar特性中有的Proguard.txt文件,将生成的keep规则更新在文件中,在接入方App接入时直接从文件中获取不需要混淆的内容即可,进而通过SDK的热修复功能对二次混淆后的代码进行热修复,无需目标应用做额外操作即可使用SDK的热修复功能,解决了SDK热修复对目标应用的侵人性问题,同时适用于有无不可混淆要求的热修复,扩大了SDK热修复的适用范围。
在本公开的一个实施例中,接入编译后的热修复SDK,从目标文件中获取所述更新的保持规则,并根据所述更新的保持规则进行二次混淆,可以通过以下步骤实现:
步骤a1、接入编译后的热修复SDK;
步骤a2、对接入编译后的热修复SDK的所有代码中除所述更新的保持规则以外的其他代码进行二次混淆。
本公开实施例中,通过对keep规则做了更新或优化,使得目标应用在接入编译后的热修复SDK时,能够按照更新的keep规则,对接入编译后的热修复SDK的所有代码中除所述更新的保持规则以外的其他代码进行二次混淆,无需目标应用做额外操作即可使用SDK的热修复功能,解决了SDK热修复对目标应用的侵人性问题,同时适用于有无不可混淆要求的热修复,扩大了SDK热修复的适用范围。
对应于上文公开实施例的热修复方法,图6为本公开实施例提供的热修复装置的结构框图。为了便于说明,仅示出了与本公开实施例相关的部分。参照图6,热修复装置所述热修复装置60包括:编译模块601、第一查找模块602、第二查找模块603和更新模块604;编译模块601,用于对用于热修复的软件开发工具包SDK进行编译;第一查找模块602,用于查找用于存储代码混淆时保持规则的目标文件;第二查找模块603,用于查找热修复SDK中的需要保持的内容,并基于所述内容生成更新的保持规则;更新模块604,用于将所述目标文件中的所述保持规则,更新为所述更新的保持规则,生成二进制归档文件;其中,所述二进制归档文件用于为接入所述热修复SDK的目标应用提供热修复功能。
本公开实施例提供的编译模块601、第一查找模块602、第二查找模块603和更新模块604,用于对用于热修复的软件开发工具包SDK进行编译,在编译过程中,查找用于存储代码混淆时保持规则的目标文件,并查找所述SDK中的需要保持的内容,并基于所述内容生成更新的保持规则;然后将所述目标文件中的所述保持规则,更新为所述更新的保持规则,生成二进制归档文件,用以为接入所述SDK的目标应用提供热修复功能,因此,当接入方App(即目标应用)需要接入SDK时,目标应用可以直接从目标文件中获取不需要混淆的内容(即保持内容)即可,进而通过SDK的热修复功能对二次混淆后的代码进行热修复,无需目标应用做额外操作即可使用SDK的热修复功能,解决了SDK热修复对目标应用的侵入性问题,同时适用于有无不可混淆要求的热修复,扩大了SDK热修复的适用范围。
本公开实施例提供的装置,可用于执行上文第一方面及第一方面各种可能的设计对应的方法实施例的技术方案,其实现原理和技术效果类似,本公开实施例此处不再赘述。
在本公开的一个实施例中,本公开实施例在上述公开实施例的基础上,对热修复装置进行了详细说明。其中,所述热修复SDK包括自身代码和除所述自身代码以外的依赖代码;所述装置还包括:添加内容确定模块;添加内容确定模块,用于生成二进制归档文件之前,响应于用于指示执行编译SDK的指令,对所述SDK进行编译,生成第一代码,所述第一代码用于表示在执行编译SDK操作时使用混淆后的自身代码;将所述第一代码的类名和所述依赖代码的类名作为所述更新的保持规则。
在本公开的一个实施例中,本公开实施例在上述公开实施例的基础上,本公开实施例对更新模块进行了详细说明。更新模块,具体用于:
在执行编译热修复SDK操作时,生成用于存储所述自身代码和所述第一代码之间映射关系的映射表;获取所述映射表的位置,并根据所述映射关系,从所述映射表中提取所述混淆后的类名;将所述混淆后的类名更新并存储至所述目标文件中;从执行编译热修复SDK操作时的热修复任务中,获取所述热修复SDK中的依赖代码;将所述依赖代码的类名更新并存储至所述目标文件中。
在本公开的一个实施例中,本公开实施例在上述公开实施例的基础上,本公开实施例对更新模块进行了详细说明。更新模块,还具体用于:根据查找到的所述目标文件的位置,将所述第一代码和所述依赖代码添加至所述目标文件中。
在本公开的一个实施例中,本公开实施例在上述公开实施例的基础上,本公开实施例对热修复装置进行了详细说明。所述依赖代码为其他热修复SDK中的代码,所述其他热修复SDK中的代码为所述其他热修复SDK混淆前的代码和/或所述其他热修复SDK混淆后的代码。
对应于上文公开实施例的热修复方法,图7为本公开再一实施例提供的热修复装置的结构框图。为了便于说明,仅示出了与本公开实施例相关的部分。参照图7,热修复装置所述热修复装置70包括:获取模块701、处理模块702以及热修复模块703;获取模块701,用于获取二进制归档文件中编译后的热修复SDK和包含更新的保持规则的目标文件;处理模块702,用于接入编译后的热修复SDK,从目标文件中获取所述更新的保持规则的内容,并根据所述更新的保持规则的内容进行二次混淆;热修复模块703,用于通过所述编译后的热修复SDK的热修复功能对二次混淆后的代码进行热修复,所述编译后的热修复SDK的代码是经过混淆后的代码。
本公开实施例提供的获取模块701、处理模块702以及热修复模块703,用于对用于通过利用aar特性中有的Proguard.txt文件,将生成的keep规则更新在文件中,在接入方App接入时直接从文件中获取不需要混淆的内容即可,进而通过SDK的热修复功能对二次混淆后的代码进行热修复,无需目标应用做额外操作即可使用SDK的热修复功能,解决了SDK热修复对目标应用的侵入性问题,同时适用于有无不可混淆要求的热修复,扩大了SDK热修复的适用范围。
本公开实施例提供的装置,可用于执行上文第二方面及第二方面各种可能的设计对应的方法实施例的技术方案,其实现原理和技术效果类似,本公开实施例此处不再赘述。
在本公开的一个实施例中,处理模块,具体用于:接入编译后的热修复SDK;对接入编译后的热修复SDK的所有代码中除所述更新的保持规则以外的其他代码进行二次混淆。
参考图8,其示出了适于用来实现本公开实施例的电子设备的结构示意图,该电子设备可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Personal Digital Assistant,简称PDA)、平板电脑(Portable Android Device,简称PAD)、便携式多媒体播放器(Portable Media Player,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图8示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,电子设备可以包括处理装置(例如中央处理器、图形处理器等)801,其可以根据存储在只读存储器(Read Only Memory,简称ROM)802中的程序或者从存储装置806加载到随机访问存储器(Random Access Memory,简称RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有电子设备操作所需的各种程序和数据。处理装置801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
通常,以下装置可以连接至I/O接口805:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置806;包括例如液晶显示器(Liquid CrystalDisplay,简称LCD)、扬声器、振动器等的输出装置805;包括例如磁带、硬盘等的存储装置806;以及通信装置809。通信装置809可以允许电子设备与其他设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置809从网络上被下载和安装,或者从存储装置806被安装,或者从ROM 802被安装。在该计算机程序被处理装置801执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述公开实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network,简称LAN)或广域网(Wide Area Network,简称WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
本公开实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上述第一方面以及第二方面所述的方法。
第一方面,本公开实施例提供一种热修复方法,所述方法包括:
对用于热修复的软件开发工具包SDK进行编译;
查找用于存储代码混淆时保持规则的目标文件;
查找热修复SDK中的需要保持的内容,并基于所述内容生成更新的保持规则;
将所述目标文件中的所述保持规则,更新为所述更新的保持规则,生成二进制归档文件;
其中,所述二进制归档文件用于为接入所述热修复SDK的目标应用提供热修复功能。
根据本公开的一个或多个实施例,所述热修复SDK包括自身代码和除所述自身代码以外的依赖代码;
在生成二进制归档文件之前,所述方法还包括:
响应于用于指示执行编译热修复SDK的指令,对所述热修复SDK进行编译,生成第一代码,所述第一代码用于表示在执行编译热修复SDK操作时使用混淆后的自身代码;
将所述第一代码的类名和所述依赖代码的类名作为所述更新的保持规则。
根据本公开的一个或多个实施例,所述将所述目标文件中的所述保持规则,更新为所述更新的保持规则,包括:
在执行编译热修复SDK操作时,生成用于存储所述自身代码和所述第一代码之间映射关系的映射表;
获取所述映射表的位置,并根据所述映射关系,从所述映射表中提取所述混淆后的类名;
将所述混淆后的类名更新并存储至所述目标文件中;
从执行编译热修复SDK操作时的热修复任务中,获取所述热修复SDK中的依赖代码;
将所述依赖代码的类名更新并存储至所述目标文件中。
根据本公开的一个或多个实施例,所述将所述目标文件中的所述保持规则,更新为所述更新的保持规则,包括:
根据查找到的所述目标文件的位置,将所述第一代码和所述依赖代码添加至所述目标文件中。
根据本公开的一个或多个实施例,所述依赖代码为其他热修复SDK中的代码,所述其他热修复SDK中的代码为所述其他热修复SDK混淆前的代码和/或所述其他热修复SDK混淆后的代码。
第二方面,本公开实施例提供一种热修复方法,包括:
获取二进制归档文件中编译后的热修复SDK和包含更新的保持规则的目标文件;
接入编译后的热修复SDK,从目标文件中获取所述更新的保持规则,并根据所述更新的保持规则进行二次混淆;
通过所述编译后的热修复SDK的热修复功能对二次混淆后的代码进行热修复,所述编译后的热修复SDK的代码是经过混淆后的代码。
根据本公开的一个或多个实施例,所述接入编译后的热修复SDK,从目标文件中获取所述更新的保持规则,并根据所述更新的保持规则进行二次混淆,包括:
接入编译后的热修复SDK;
对接入编译后的热修复SDK的所有代码中除所述更新的保持规则以外的其他代码进行二次混淆。
第三方面,本公开实施例提供一种热修复装置,包括:
编译模块,用于对用于热修复的软件开发工具包SDK进行编译;
第一查找模块,用于查找用于存储代码混淆时保持规则的目标文件;
第二查找模块,用于查找热修复SDK中的需要保持的内容,并基于所述内容生成更新的保持规则;
更新模块,用于将所述目标文件中的所述保持规则,更新为所述更新的保持规则,生成二进制归档文件;
其中,所述二进制归档文件用于为接入所述热修复SDK的目标应用提供热修复功能。
根据本公开的一个或多个实施例,所述热修复SDK包括自身代码和除所述自身代码以外的依赖代码;所述装置还包括:添加内容确定模块;添加内容确定模块,用于生成二进制归档文件之前,响应于用于指示执行编译SDK的指令,对所述SDK进行编译,生成第一代码,所述第一代码用于表示在执行编译SDK操作时使用混淆后的自身代码;将所述第一代码的类名和所述依赖代码的类名作为所述更新的保持规则。
根据本公开的一个或多个实施例,更新模块,具体用于:在执行编译热修复SDK操作时,生成用于存储所述自身代码和所述第一代码之间映射关系的映射表;获取所述映射表的位置,并根据所述映射关系,从所述映射表中提取所述混淆后的类名;将所述混淆后的类名更新并存储至所述目标文件中;从执行编译热修复SDK操作时的热修复任务中,获取所述热修复SDK中的依赖代码;将所述依赖代码的类名更新并存储至所述目标文件中。
根据本公开的一个或多个实施例,更新模块,还具体用于:根据查找到的所述目标文件的位置,将所述第一代码和所述依赖代码添加至所述目标文件中。
根据本公开的一个或多个实施例,所述依赖代码为其他热修复SDK中的代码,所述其他热修复SDK中的代码为所述其他热修复SDK混淆前的代码和/或所述其他热修复SDK混淆后的代码。
第四方面,本公开实施例提供一种热修复装置,包括:
获取模块,用于获取二进制归档文件中编译后的热修复SDK和包含更新的保持规则的目标文件;
处理模块,用于接入编译后的热修复SDK,从目标文件中获取所述更新的保持规则的内容,并根据所述更新的保持规则的内容进行二次混淆;
热修复模块,用于通过所述编译后的热修复SDK的热修复功能对二次混淆后的代码进行热修复,所述编译后的热修复SDK的代码是经过混淆后的代码。
根据本公开的一个或多个实施例,处理模块,具体用于:接入编译后的热修复SDK;对接入编译后的热修复SDK的所有代码中除所述更新的保持规则以外的其他代码进行二次混淆。
第五方面,本公开实施例提供一种电子设备,包括:至少一个处理器、存储器以及通信接口;
所述通信接口用于与网络设备进行通信;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上述第一方面以及第二方面所述的热修复方法。
第六方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第二方面所述的热修复方法。
第七方面,本公开实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上第一方面以及第二方面所述的热修复方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (12)
1.一种热修复方法,其特征在于,所述方法包括:
对用于热修复的软件开发工具包SDK进行编译;
查找用于存储代码混淆时保持规则的目标文件;
查找热修复SDK中的需要保持的内容,并基于所述内容生成更新的保持规则;
将所述目标文件中的所述保持规则,更新为所述更新的保持规则,生成二进制归档文件;
其中,所述二进制归档文件用于为接入所述热修复SDK的目标应用提供热修复功能。
2.根据权利要求1所述的方法,其特征在于,所述热修复SDK包括自身代码和除所述自身代码以外的依赖代码;
在生成二进制归档文件之前,所述方法还包括:
响应于用于指示执行编译热修复SDK的指令,对所述热修复SDK进行编译,生成第一代码,所述第一代码用于表示在执行编译热修复SDK操作时使用混淆后的自身代码;
将所述第一代码的类名和所述依赖代码的类名作为所述更新的保持规则。
3.根据权利要求2所述的方法,其特征在于,所述将所述目标文件中的所述保持规则,更新为所述更新的保持规则,包括:
在执行编译热修复SDK操作时,生成用于存储所述自身代码和所述第一代码之间映射关系的映射表;
获取所述映射表的位置,并根据所述映射关系,从所述映射表中提取所述混淆后的类名;
将所述混淆后的类名更新并存储至所述目标文件中;
从执行编译热修复SDK操作时的热修复任务中,获取所述热修复SDK中的依赖代码;
将所述依赖代码的类名更新并存储至所述目标文件中。
4.根据权利要求2所述的方法,其特征在于,所述将所述目标文件中的所述保持规则,更新为所述更新的保持规则,包括:
根据查找到的所述目标文件的位置,将所述第一代码和所述依赖代码添加至所述目标文件中。
5.根据权利要求4所述的方法,其特征在于,所述依赖代码为其他热修复SDK中的代码,所述其他热修复SDK中的代码为所述其他热修复SDK混淆前的代码和/或所述其他热修复SDK混淆后的代码。
6.一种热修复方法,其特征在于,所述方法包括:
获取二进制归档文件中编译后的热修复SDK和包含更新的保持规则的目标文件;
接入编译后的热修复SDK,从目标文件中获取所述更新的保持规则,并根据所述更新的保持规则进行二次混淆;
通过所述编译后的热修复SDK的热修复功能对二次混淆后的代码进行热修复,所述编译后的热修复SDK的代码是经过混淆后的代码。
7.根据权利要求6所述的方法,其特征在于,所述接入编译后的热修复SDK,从目标文件中获取所述更新的保持规则,并根据所述更新的保持规则进行二次混淆,包括:
接入编译后的热修复SDK;
对接入编译后的热修复SDK的所有代码中除所述更新的保持规则以外的其他代码进行二次混淆。
8.一种热修复装置,其特征在于,包括:
编译模块,用于对用于热修复的软件开发工具包SDK进行编译;
第一查找模块,用于查找用于存储代码混淆时保持规则的目标文件;
第二查找模块,用于查找热修复SDK中的需要保持的内容,并基于所述内容生成更新的保持规则;
更新模块,用于将所述目标文件中的所述保持规则,更新为所述更新的保持规则,生成二进制归档文件;
其中,所述二进制归档文件用于为接入所述热修复SDK的目标应用提供热修复功能。
9.一种热修复装置,其特征在于,包括:
获取模块,用于获取二进制归档文件中编译后的热修复SDK和包含更新的保持规则的目标文件;
处理模块,用于接入编译后的热修复SDK,从目标文件中获取所述更新的保持规则的内容,并根据所述更新的保持规则的内容进行二次混淆;
热修复模块,用于通过所述编译后的热修复SDK的热修复功能对二次混淆后的代码进行热修复,所述编译后的热修复SDK的代码是经过混淆后的代码。
10.一种电子设备,其特征在于,包括:至少一个处理器、存储器以及通信接口;
所述通信接口用于与网络设备进行通信;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至7任一项所述热修复方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至7任一项所述的热修复方法。
12.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序在被处理器执行时实现根据权利要求1-7任一项所述的热修复方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110282350.1A CN112905220B (zh) | 2021-03-16 | 2021-03-16 | 热修复方法、装置、设备及存储介质 |
US18/263,678 US20240095022A1 (en) | 2021-03-16 | 2022-02-22 | Hotfix method, apparatus, device and storage medium |
PCT/CN2022/077181 WO2022193913A1 (zh) | 2021-03-16 | 2022-02-22 | 热修复方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110282350.1A CN112905220B (zh) | 2021-03-16 | 2021-03-16 | 热修复方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112905220A true CN112905220A (zh) | 2021-06-04 |
CN112905220B CN112905220B (zh) | 2023-12-05 |
Family
ID=76105287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110282350.1A Active CN112905220B (zh) | 2021-03-16 | 2021-03-16 | 热修复方法、装置、设备及存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240095022A1 (zh) |
CN (1) | CN112905220B (zh) |
WO (1) | WO2022193913A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114900424A (zh) * | 2022-05-27 | 2022-08-12 | 网易(杭州)网络有限公司 | 数据热修复方法、装置、电子设备及存储介质 |
WO2022193913A1 (zh) * | 2021-03-16 | 2022-09-22 | 北京字节跳动网络技术有限公司 | 热修复方法、装置、设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150270978A1 (en) * | 2014-03-20 | 2015-09-24 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for data repair in a data communication network |
CN111078262A (zh) * | 2018-10-18 | 2020-04-28 | 百度在线网络技术(北京)有限公司 | 应用的热修复方法和装置 |
CN111078279A (zh) * | 2019-12-20 | 2020-04-28 | 北京字节跳动网络技术有限公司 | 字节码文件的处理方法、装置、设备及存储介质 |
CN111290760A (zh) * | 2020-03-03 | 2020-06-16 | 北京字节跳动网络技术有限公司 | 应用程序编译方法、装置、电子设备及存储介质 |
CN111752735A (zh) * | 2020-05-22 | 2020-10-09 | 网宿科技股份有限公司 | 一种sdk异常排查方法及装置、计算机可读存储介质 |
CN111831316A (zh) * | 2020-07-21 | 2020-10-27 | 北京字节跳动网络技术有限公司 | 一种软件开发包更新方法及装置 |
CN111897711A (zh) * | 2020-06-15 | 2020-11-06 | 中国建设银行股份有限公司 | 代码中bug的定位方法、装置、电子设备及可读存储介质 |
CN112416418A (zh) * | 2020-08-13 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | 应用组件的生成方法、装置、计算机设备和可读存储介质 |
CN112416303A (zh) * | 2020-11-19 | 2021-02-26 | 北京字节跳动网络技术有限公司 | 软件开发工具包热修复方法、装置及电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190205317A1 (en) * | 2012-10-30 | 2019-07-04 | FHOOSH, Inc. | Systems and methods for secure storage and retrieval of data objects |
CN110502222B (zh) * | 2019-07-23 | 2023-03-21 | 北京字节跳动网络技术有限公司 | 外发依赖内部基础库的aar方法、装置、介质和设备 |
CN112905220B (zh) * | 2021-03-16 | 2023-12-05 | 北京字节跳动网络技术有限公司 | 热修复方法、装置、设备及存储介质 |
-
2021
- 2021-03-16 CN CN202110282350.1A patent/CN112905220B/zh active Active
-
2022
- 2022-02-22 US US18/263,678 patent/US20240095022A1/en active Pending
- 2022-02-22 WO PCT/CN2022/077181 patent/WO2022193913A1/zh active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150270978A1 (en) * | 2014-03-20 | 2015-09-24 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for data repair in a data communication network |
CN111078262A (zh) * | 2018-10-18 | 2020-04-28 | 百度在线网络技术(北京)有限公司 | 应用的热修复方法和装置 |
CN111078279A (zh) * | 2019-12-20 | 2020-04-28 | 北京字节跳动网络技术有限公司 | 字节码文件的处理方法、装置、设备及存储介质 |
CN111290760A (zh) * | 2020-03-03 | 2020-06-16 | 北京字节跳动网络技术有限公司 | 应用程序编译方法、装置、电子设备及存储介质 |
CN111752735A (zh) * | 2020-05-22 | 2020-10-09 | 网宿科技股份有限公司 | 一种sdk异常排查方法及装置、计算机可读存储介质 |
CN111897711A (zh) * | 2020-06-15 | 2020-11-06 | 中国建设银行股份有限公司 | 代码中bug的定位方法、装置、电子设备及可读存储介质 |
CN111831316A (zh) * | 2020-07-21 | 2020-10-27 | 北京字节跳动网络技术有限公司 | 一种软件开发包更新方法及装置 |
CN112416418A (zh) * | 2020-08-13 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | 应用组件的生成方法、装置、计算机设备和可读存储介质 |
CN112416303A (zh) * | 2020-11-19 | 2021-02-26 | 北京字节跳动网络技术有限公司 | 软件开发工具包热修复方法、装置及电子设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022193913A1 (zh) * | 2021-03-16 | 2022-09-22 | 北京字节跳动网络技术有限公司 | 热修复方法、装置、设备及存储介质 |
CN114900424A (zh) * | 2022-05-27 | 2022-08-12 | 网易(杭州)网络有限公司 | 数据热修复方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20240095022A1 (en) | 2024-03-21 |
CN112905220B (zh) | 2023-12-05 |
WO2022193913A1 (zh) | 2022-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110851139B (zh) | 用于检查代码的方法、装置和电子设备 | |
CN110851204B (zh) | 应用启动的方法及装置、应用打包的方法及装置 | |
CN112395363B (zh) | 数据同步方法、装置、设备及可读存储介质 | |
CN112965761B (zh) | 一种数据处理方法、系统、电子设备及存储介质 | |
CN111309304B (zh) | 一种生成idl文件的方法、装置、介质和电子设备 | |
CN113407165B (zh) | Sdk的生成和自升级方法、装置、可读介质和设备 | |
CN112905220B (zh) | 热修复方法、装置、设备及存储介质 | |
CN110020231A (zh) | 网页截图方法及其装置 | |
CN111240801A (zh) | 生成堆内存快照文件的方法、装置、介质和电子设备 | |
CN110489162B (zh) | 安装包so文件精简方法、装置、介质和设备 | |
CN112650521B (zh) | 软件开发工具包sdk热修复方法、装置与电子设备 | |
CN112416303B (zh) | 软件开发工具包热修复方法、装置及电子设备 | |
CN111625232B (zh) | 应用程序安装包的生成方法、装置、可读介质和电子设备 | |
CN113391860B (zh) | 服务请求处理方法、装置、电子设备及计算机存储介质 | |
CN110442419B (zh) | Android应用的界面布局方法及装置 | |
CN114153462B (zh) | 客户端源码处理方法、装置、存储介质及电子设备 | |
CN111625326B (zh) | 任务管线执行方法、装置及电子设备 | |
CN111240738B (zh) | 文件处理方法、装置、设备及介质 | |
CN111290812B (zh) | 应用控件的显示方法、装置、终端及存储介质 | |
CN111310175A (zh) | 基于插件化的iOS应用安全监测与防护方法及装置 | |
CN111240657A (zh) | 用于生成sdk的方法、装置和电子设备 | |
CN112068814A (zh) | 可执行文件的生成方法、装置、系统及介质 | |
CN110737637B (zh) | 功能扩展方法、装置、电子设备及计算机可读存储介质 | |
CN118312170A (zh) | 生成应用程序包的方法、装置、可读介质及电子设备 | |
CN116932068A (zh) | 基于idea的插件类加载方法、装置及设备 |
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 |