CN113918235B - 应用加载的方法及装置、存储介质 - Google Patents
应用加载的方法及装置、存储介质 Download PDFInfo
- Publication number
- CN113918235B CN113918235B CN202111093802.8A CN202111093802A CN113918235B CN 113918235 B CN113918235 B CN 113918235B CN 202111093802 A CN202111093802 A CN 202111093802A CN 113918235 B CN113918235 B CN 113918235B
- Authority
- CN
- China
- Prior art keywords
- target
- dependency library
- library
- loading
- data file
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种应用加载的方法及装置、计算机程序产品和存储介质。前述方法包括:在准备加载目标应用的目标内容的情况下,获取方法调用请求,判断方法调用请求对应的目标依赖库是否存在已完成初始化标识;若是,加载目标依赖库,并基于目标依赖库加载目标内容;若否,对目标依赖库进行初始化,加载经初始化的目标依赖库,并基于经初始化的目标依赖库加载目标内容。在本发明中,通过获取方法调用请求,并基于该方法调用请求针对性的加载对应初始化后的依赖库,避免了在目标应用冷启动的过程中,加载并初始化众多依赖库而出现的诸多不良状况,提高了其通用性。
Description
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种应用加载的方法及装置、计算机程序产品和存储介质。
背景技术
启动应用程序(又名“应用”)时,需要加载该应用程序对应的依赖库。具体而言,在开发应用程序的过程中,其对应的依赖库会基于应用程序的内部机制进行存储;因此,多个依赖库会伴随着目标应用的冷启动而进行加载。
常见的对应用程序的目标依赖库进行加载的方法包括:通过人为添加初始化逻辑,实现对目标依赖库的初始化;同时,也可以通过对依赖库进行改造并添加初始化功能,实现对目标依赖库的初始化;或者,通过首页渲染实现对目标依赖库的初始化;待对目标依赖库的初始化完成后,加载该目标依赖库。
然而,利用上述方法对应用程序的目标依赖库进行加载时,存在通用性差的问题。
发明内容
针对现有技术中存在的问题,本发明的实施例提供一种应用加载的方法及装置、计算机程序产品和存储介质。
本发明提供一种应用加载的方法,包括:在准备加载目标应用的目标内容的情况下,获取方法调用请求;
判断所述方法调用请求对应的目标依赖库是否存在已完成初始化标识;
若所述方法调用请求对应的所述目标依赖库存在所述已完成初始化标识,加载所述目标依赖库,并基于所述目标依赖库加载所述目标内容;
若所述方法调用请求对应的所述目标依赖库不存在所述已完成初始化标识,对所述目标依赖库进行初始化,加载经初始化的目标依赖库,并基于所述经初始化的目标依赖库加载所述目标内容。
根据本发明提供的一种应用加载的方法,所述在准备加载目标应用的目标内容前,包括:
获取所述目标应用的基础依赖库;
处理所述基础依赖库,生成所述目标依赖库。
根据本发明提供的一种应用加载的方法,所述处理所述基础依赖库,生成所述目标依赖库,包括:
判断所述基础依赖库对应的任务机制是否为异步任务机制;
若所述基础依赖库对应的任务机制是异步任务机制,对所述基础依赖库进行检查,并基于得到的检查结果生成所述目标依赖库;
若所述基础依赖库对应的任务机制不是异步任务机制,将所述基础依赖库作为所述目标依赖库。
根据本发明提供的一种应用加载的方法,所述对所述基础依赖库进行检查,并基于得到的检查结果生成所述目标依赖库,包括:
判断所述基础依赖库是否发生改变;
若所述基础依赖库已发生改变,下载所述基础依赖库对应的数据文件,对所述数据文件进行处理,得到所述目标依赖库;
若所述基础依赖库未发生改变,将所述基础依赖库作为所述目标依赖库。
根据本发明提供的一种应用加载的方法,所述对所述数据文件进行处理,得到所述目标依赖库,包括:
判断所述数据文件是否包含第一数据包;
若所述数据文件包含所述第一数据包,对所述数据文件中的所述第一数据包进行解压,得到包含所述第一数据包对应的数据项的解压数据文件,对所述解压数据文件进行更新,得到所述目标依赖库;
若所述数据文件不包含所述第一数据包,对所述数据文件进行更新,得到所述目标依赖库。
根据本发明提供的一种应用加载的方法,所述对所述解压数据文件进行更新,得到所述目标依赖库,包括:
查找所述解压数据文件中的第二数据包,对所述第二数据包进行方法插桩生成第三数据包;
替换所述第二数据包为所述第三数据包,并对所述解压数据文件中的所述数据项进行打包,得到更新数据文件,将所述更新数据文件上传至依赖管理组件,生成所述目标依赖库。
根据本发明提供的一种应用加载的方法,所述对所述数据文件进行更新,得到所述目标依赖库,包括:
查找所述数据文件中的第二数据包,对所述第二数据包进行方法插桩生成第四数据包;
替换所述第二数据包为所述第四数据包,得到更新数据文件,将所述更新数据文件上传至依赖管理组件,生成所述目标依赖库。
本发明还提供一种应用加载的装置,包括:获取模块,用于在准备加载目标应用的目标内容的情况下,获取方法调用请求;
判断模块,用于判断所述方法调用请求对应的目标依赖库是否存在已完成初始化标识;
加载模块,用于若所述方法调用请求对应的所述目标依赖库存在所述已完成初始化标识,加载所述目标依赖库,并基于所述目标依赖库加载所述目标内容;
初始化模块,用于若所述方法调用请求对应的所述目标依赖库不存在所述已完成初始化标识,对所述目标依赖库进行初始化,加载经初始化的目标依赖库,并基于所述经初始化的目标依赖库加载所述目标内容。
根据本发明提供的一种应用加载的装置,所述获取模块,还用于:
获取所述目标应用的基础依赖库;
处理所述基础依赖库,生成所述目标依赖库。
根据本发明提供的一种应用加载的装置,所述获取模块,进一步用于:
判断所述基础依赖库对应的任务机制是否为异步任务机制;
若所述基础依赖库对应的任务机制是异步任务机制,对所述基础依赖库进行检查,并基于得到的检查结果生成所述目标依赖库;
若所述基础依赖库对应的任务机制不是异步任务机制,将所述基础依赖库作为所述目标依赖库。
根据本发明提供的一种应用加载的装置,所述获取模块,进一步用于:
判断所述基础依赖库是否发生改变;
若所述基础依赖库已发生改变,下载所述基础依赖库对应的数据文件,对所述数据文件进行处理,得到所述目标依赖库;
若所述基础依赖库未发生改变,将所述基础依赖库作为所述目标依赖库。
根据本发明提供的一种应用加载的装置,所述获取模块,进一步用于:
判断所述数据文件是否包含第一数据包;
若所述数据文件包含所述第一数据包,对所述数据文件中的所述第一数据包进行解压,得到包含所述第一数据包对应的数据项的解压数据文件,对所述解压数据文件进行更新,得到所述目标依赖库;
若所述数据文件不包含所述第一数据包,对所述数据文件进行更新,得到所述目标依赖库。
根据本发明提供的一种应用加载的装置,所述获取模块,进一步用于:
查找所述解压数据文件中的第二数据包,对所述第二数据包进行方法插桩生成第三数据包;
替换所述第二数据包为所述第三数据包,并对所述解压数据文件中的所述数据项进行打包,得到更新数据文件,将所述更新数据文件上传至依赖管理组件,生成所述目标依赖库。
根据本发明提供的一种应用加载的装置,所述获取模块,进一步用于:
查找所述数据文件中的第二数据包,对所述第二数据包进行方法插桩生成第四数据包;
替换所述第二数据包为所述第四数据包,得到更新数据文件,将所述更新数据文件上传至依赖管理组件,生成所述目标依赖库。
本发明还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如上述任一种所述应用加载的方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述应用加载的方法的步骤。
本发明提供的一种应用加载的方法及装置、计算机程序产品和存储介质,通过在准备加载目标应用的目标内容的情况下,获取方法调用请求,判断方法调用请求对应的目标依赖库是否存在已完成初始化标识;若方法调用请求对应的目标依赖库存在已完成初始化标识,加载目标依赖库,并基于所述目标依赖库加载所述目标内容;若方法调用请求对应的目标依赖库不存在已完成初始化标识,对目标依赖库进行初始化,加载经初始化的目标依赖库,并基于所述经初始化的目标依赖库加载所述目标内容。在本发明中,通过获取方法调用请求,基于该方法调用请求针对性的加载对应初始化后的依赖库,避免了在目标应用冷启动的过程中,加载并初始化众多依赖库而出现的诸多不良状况,提高了其通用性。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的应用加载的方法的流程示意图;
图2是本发明实施例提供的应用加载的方法中生成目标依赖库的第一流程示意图;
图3是本发明实施例提供的应用加载的方法中生成目标依赖库的第二流程示意图;
图4是本发明实施例提供的应用加载的方法中生成目标依赖库的第三流程示意图;
图5是本发明实施例提供的应用加载的方法的细化流程示意图;
图6是本发明实施例提供的应用加载的装置的结构示意图;
图7是本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
附图仅为示例而并非严格按比例绘制。如在本文中使用的,用语“优选”以及类似的用语,用作表近似,而不用作表程度,并且旨在说明将由本领域普通技术人员认识到的、测量值或计算值中的固有偏差。应注意,在本说明书中,“第一”、“第二”、“第三”等的表述仅用于将一个特征与另一个特征区分开来,而不表示对特征的任何限制,尤其不表示任何的先后顺序。
还应理解的是,诸如“包括”、“包括有”、“包含”和/或“包含有”等表述在本说明书中是开放性而非封闭性的表述,其表示存在所陈述的特征、元件和/或部件,但不排除一个或多个其它特征、元件、部件和/或它们的组合的存在。此外,当描述本申请的实施方式时,使用“可”表示“本申请的一个或多个实施方式”。并且,用语“示例性的”旨在指代示例或举例说明。
除非另外限定,否则本文中使用的所有措辞(包括工程术语和科技术语)均具有与本申请所属领域普通技术人员的通常理解相同的含义。还应理解的是,除非本申请中有明确的说明,否则在常用词典中定义的词语应被解释为具有与它们在相关技术的上下文中的含义一致的含义,而不应以理想化或过于形式化的意义解释。
为了解决现有技术中存在的问题,本发明的实施例提供一种应用加载的方法及装置、计算机程序产品和存储介质。
图1是根据本发明的一个实施例提供的应用加载的方法的流程示意图。如图1所示,该方法包括:
步骤101,在准备加载目标应用的目标内容的情况下,获取方法调用请求。
具体地,方法调用请求可以为接收用户对目标应用的点选操作,目标应用请求加载首页内容而生成。
示例性地,目标应用可以为应用A,目标内容a可以为应用A的首页内容。在准备加载应用A的首页内容a的情况下,获取对应的方法调用请求。
步骤102,判断方法调用请求对应的目标依赖库是否存在已完成初始化标识;若方法调用请求对应的目标依赖库存在已完成初始化标识,执行步骤103,若方法调用请求对应的目标依赖库不存在已完成初始化标识,执行步骤104。
具体地,若存在两个不同的动态库B和C,则依赖库是指若在调用其中动态库B时,动态库B又需要调用另一个动态库C,则C是B的依赖库。
示例性地,若在加载应用A的首页内容a的情况下,获取对应的方法调用请求为m,且m对应的目标依赖库为C,判断C中是否存在已完成初始化标识。
需要说明的是,依赖库可以包括多种,本发明不对其进行具体限定。已完成初始化标识同样可以包括多种,本发明不对其进行具体限定。
步骤103,加载目标依赖库,并基于目标依赖库加载目标内容。
需要说明的是,加载的目标依赖库已经完成了初始化。
示例性地,若方法调用请求对应的目标依赖库为C,且C中存在已完成初始化标识,加载C,并基于C加载目标内容。
步骤104,对目标依赖库进行初始化,加载经初始化的目标依赖库,并基于经初始化的目标依赖库加载目标内容。
示例性地,若方法调用请求对应的目标依赖库为C,且C中不存在已完成初始化标识,对C进行初始化,加载经初始化的C,并基于经初始化的C加载目标内容。
需要说明的是,对目标依赖库进行初始化的方式可以包括多种,本发明不对其进行具体限定。
综上所述,通过获取方法调用请求,基于该方法调用请求针对性的加载对应初始化后的依赖库,避免了在目标应用冷启动的过程中,加载并初始化众多依赖库而出现的诸多不良状况,提高了其通用性。
基于以上实施例,在准备加载目标应用的目标内容前,还执行的步骤包括:
步骤S1,获取目标应用的基础依赖库。
具体地,步骤S1包括:定义目标应用的插件,在该插件中配置入口,进而,通过该插件获取目标应用的基础依赖库。
示例性地,为目标应用定义Gradle插件,在该插件中配置入口,进而,通过Gradle插件获取目标应用的基础依赖库。
需要说明的是,插件可以封装一系列如:编译、测试和打包等的任务,以及配置。
步骤S2,处理基础依赖库,生成目标依赖库。
综上所述,通过获取并处理基础依赖库,生成目标依赖库,可以实现目标依赖库与方法调用请求的一一对应。
优选地,可以结合具体的实施例对通过处理基础依赖库,生成目标依赖库进行进一步细化说明。
基于以上实施例,图2是根据本发明的一个实施例提供的应用加载的方法中生成目标依赖库的第一流程示意图。如图2所示,生成目标依赖库的第一流程,包括:
步骤201,判断基础依赖库对应的任务机制是否为异步任务机制;若基础依赖库对应的任务机制是异步任务机制,执行步骤202,若基础依赖库对应的任务机制不是异步任务机制,执行步骤203。
示例性地,对基础依赖库进行任务机制判断,判断其对应的任务机制是否为Gradle sync task。
步骤202,对基础依赖库进行检查,并基于得到的检查结果生成目标依赖库。
步骤203,将基础依赖库作为目标依赖库。
综上所述,通过进行异步任务机制判断,并根据得到的判断结果分别对应生成目标依赖库,提升了生成目标依赖库的针对性。
优选地,可以结合具体的实施例将对基础依赖库进行检查,并基于得到的检查结果生成目标依赖库进行进一步细化说明。
基于以上实施例,图3是根据本发明的一个实施例提供的应用加载的方法中生成目标依赖库的第二流程示意图。如图3所示,生成目标依赖库的第二流程,包括:
步骤301,判断基础依赖库是否发生改变;若基础依赖库已发生改变,执行步骤302,若基础依赖库未发生改变,执行步骤303。
优选地,对于release版本的依赖库可以通过检查其是否存在于maven中,判断其是否发生了改变,而对于snapshot版本的依赖库可以通过对比maven-metadata.xm中的信息,判断其是否发生了改变。
步骤302,下载基础依赖库对应的数据文件,对数据文件进行处理,得到目标依赖库。
示例性地,若基础依赖库对应的任务机制是Gradle sync task,且该基础依赖库对应的数据文件相较原始状态发生了改变,下载基础依赖库对应的数据文件。
步骤303,将基础依赖库作为目标依赖库。
示例性地,若基础依赖库对应的任务机制不是Gradle sync task,将基础依赖库作为目标依赖库;或者,若基础依赖库对应的任务机制是Gradle sync task,但该基础依赖库对应的数据文件相较原始状态未发生改变,将基础依赖库作为目标依赖库。
综上所述,通过对基础依赖库的原始状态是否发生改变进行判断,并根据得到的判断结果分别对应生成目标依赖库,提升了生成目标依赖库的针对性。
优选地,可以结合具体的实施例将对数据文件进行处理,得到目标依赖库进行进一步细化说明。
基于以上实施例,图4是根据本发明的一个实施例提供的应用加载的方法中生成目标依赖库的第三流程示意图。如图4所示,生成目标依赖库的第三流程,包括:
步骤401,判断数据文件是否包含第一数据包;若数据文件包含第一数据包,执行步骤402,若数据文件不包含第一数据包,执行步骤403。
示例性地,在本发明中第一数据包是指.aar数据包,判断数据文件是否包含第一数据包是指,判断数据文件是否包含.aar数据包。
需要说明的是,.aar是android项目文件中的一种数据类型。
步骤402,对数据文件中的第一数据包进行解压,得到包含第一数据包对应的数据项的解压数据文件,对解压数据文件进行更新,得到目标依赖库。
示例性地,若确认数据文件中包含.aar数据包,对数据文件中的.aar数据包进行解压,进而,原数据文件被更新为包含.aar数据包对应数据项的解压数据文件。
步骤403,对数据文件进行更新,得到目标依赖库。
综上所述,通过对数据文件是否包含第一数据包进行判断,并根据判断结果分别对应得到目标依赖库,提升了生成目标依赖库的针对性。
优选地,基于以上实施例,若数据文件包含第一数据包,对所述解压数据文件进行更新,得到所述目标依赖库,包括下述步骤S1~S2:
步骤S1,查找解压数据文件中的第二数据包,对第二数据包进行方法插桩生成第三数据包。
示例性地,在本发明中第二数据包指.jar数据包,第三数据包指.jar更新数据包;查找解压数据文中的.jar数据包,对.jar数据包进行方法插桩生成.jar更新数据包。
步骤S2,替换第二数据包为第三数据包,并对解压数据文件中的数据项进行打包,得到更新数据文件,将更新数据文件上传至依赖管理组件,生成目标依赖库。
示例性地,利用.jar更新数据包覆盖.jar数据包,并对解压数据文中包含的通过解压.aar数据包得到的数据项进行打包,得到更新数据文件。并将更新数据文件上传至依赖管理组件maven中,生成目标依赖库。
优选地,基于以上实施例,若数据文件不包含第一数据包,对所述数据文件进行更新,得到所述目标依赖库,包括下述步骤S3~S4:
步骤S3,查找数据文件中的第二数据包,对第二数据包进行方法插桩生成第四数据包。
示例性地,在本发明中第二数据包指.jar数据包,第四数据包指.jar更新数据包;若确认数据文件中不包含.aar数据包,查找数据文件中的.jar数据包,对.jar数据包进行方法插桩生成.jar更新数据包。
需要说明的是,插桩是实现程序插件化的方式。方法插桩是插桩的其中一种。
另外,.jar是android项目文件中的一种数据类型。
步骤S4,替换第二数据包为第四数据包,得到更新数据文件,将更新数据文件上传至依赖管理组件,生成目标依赖库。
示例性地,利用.jar更新数据包覆盖.jar数据包,将数据文件更新为更新数据文件。并将更新数据文件上传至依赖管理组件maven中,生成目标依赖库。
概括而言,上述实施例,通过获取方法调用请求,基于该方法调用请求针对性的加载对应初始化后的依赖库,避免了在目标应用冷启动的过程中,加载并初始化众多依赖库而出现的诸多不良状况,提高了其通用性。基于以上实施例,图5是根据本发明的一个实施例提供的应用加载的方法的细化流程示意图。如图5所示,应用加载的方法的细化步骤包括:
步骤501,获取目标应用的基础依赖库。
示例性地,若目标应用为A,获取A的基础依赖库y。
步骤502,处理基础依赖库,生成目标依赖库。
示例性地,若基础依赖库为y,处理y,生成目标依赖库Mby。
步骤503,在准备加载目标应用的目标内容的情况下,获取方法调用请求。
示例性地,若目标应用的目标内容为B,则在准备加载B的情况下,获取方法调用请求Y。
步骤504,判断方法调用请求对应的目标依赖库是否存在已完成初始化标识,若是,执行步骤505,若否,执行步骤506。
示例性地,若方法调用请求Y对应的目标依赖库为Mby,且已完成初始化标识为q,判断Mby中是否存在q。
步骤505,加载目标依赖库,并基于目标依赖库加载目标内容。
示例性地,若方法调用请求Y对应的目标依赖库为Mby,且已完成初始化标识为q,若Mby中存在q,加载Mby,并基于Mby加载其对应的目标内容。
步骤506,对目标依赖库进行初始化,加载经初始化的目标依赖库,并基于经初始化的目标依赖库加载目标内容。
示例性地,若方法调用请求Y对应的目标依赖库为Mby,且已完成初始化标识为q,若Mby中不存在q,对Mby进行初始化,加载经初始化的Mby,并基于经初始化的Mby加载其对应的目标内容。
综上所述,在本发明记载的应用加载的方法中,通过获取方法调用请求,基于该方法调用请求针对性的加载对应初始化后的依赖库,避免了在目标应用冷启动的过程中,加载并初始化众多依赖库而出现的诸多不良状况,提高了其通用性。
图6是根据本发明的另一个实施例提供的应用加载的装置的结构示意图。如图6所示,应用加载的装置包括:获取模块610、判断模块620、加载模块630和初始化模块640。
获取模块610,用于在准备加载目标应用的目标内容的情况下,获取方法调用请求。
获取模块610,还用于:获取目标应用的基础依赖库;处理基础依赖库,生成目标依赖库。
获取模块610,进一步用于:判断基础依赖库对应的任务机制是否为异步任务机制;若基础依赖库对应的任务机制是异步任务机制,对基础依赖库进行检查,并基于得到的检查结果生成目标依赖库;若基础依赖库对应的任务机制不是异步任务机制,将基础依赖库作为目标依赖库。
获取模块610,进一步用于:判断基础依赖库是否发生改变;若基础依赖库已发生改变,下载基础依赖库对应的数据文件,对数据文件进行处理,得到目标依赖库;若基础依赖库未发生改变,将基础依赖库作为目标依赖库。
获取模块610,进一步用于:判断数据文件是否包含第一数据包;若数据文件包含第一数据包,对数据文件中的第一数据包进行解压,得到包含第一数据包对应的数据项的解压数据文件,对解压数据文件进行处理,得到目标依赖库;若数据文件不包含第一数据包,对数据文件进行处理,得到目标依赖库。
获取模块610,进一步用于:查找解压数据文件中的第二数据包,对第二数据包进行方法插桩生成第三数据包;替换第二数据包为第三数据包,并对解压数据文件中的数据项进行打包,得到更新数据文件,将更新数据文件上传至依赖管理组件,生成目标依赖库。
获取模块610,进一步用于:查找数据文件中的第二数据包,对第二数据包进行方法插桩生成第四数据包;替换第二数据包为第四数据包,得到更新数据文件,将更新数据文件上传至依赖管理组件,生成目标依赖库。
判断模块620,用于判断方法调用请求对应的目标依赖库是否存在已完成初始化标识。
加载模块630,用于若方法调用请求对应的目标依赖库存在已完成初始化标识,加载目标依赖库,并基于目标依赖库加载目标内容。
初始化模块640,用于若方法调用请求对应的目标依赖库不存在已完成初始化标识,对目标依赖库进行初始化,加载经初始化的目标依赖库,并基于经初始化的目标依赖库加载目标内容。
综上所述,在本发明记载的应用加载的装置中,通过获取方法调用请求,基于该方法调用请求针对性的加载对应初始化后的依赖库,避免了在目标应用冷启动的过程中,加载并初始化众多依赖库而出现的诸多不良状况,提高了其通用性。
图7是根据本发明的一个实施例提供的电子设备的硬件结构示意图。如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730和通信总线740;其中,处理器710,通信接口720,存储器730相互间通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行提供的应用加载的方法,该方法包括:在准备加载目标应用的目标内容的情况下,获取方法调用请求;判断所述方法调用请求对应的目标依赖库是否存在已完成初始化标识;若所述方法调用请求对应的所述目标依赖库存在所述已完成初始化标识,加载所述目标依赖库,并基于所述目标依赖库加载所述目标内容;若所述方法调用请求对应的所述目标依赖库不存在所述已完成初始化标识,对所述目标依赖库进行初始化,加载经初始化的目标依赖库,并基于所述经初始化的目标依赖库加载所述目标内容。
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的应用加载的方法,该方法包括:在准备加载目标应用的目标内容的情况下,获取方法调用请求;判断所述方法调用请求对应的目标依赖库是否存在已完成初始化标识;若所述方法调用请求对应的所述目标依赖库存在所述已完成初始化标识,加载所述目标依赖库,并基于所述目标依赖库加载所述目标内容;若所述方法调用请求对应的所述目标依赖库不存在所述已完成初始化标识,对所述目标依赖库进行初始化,加载经初始化的目标依赖库,并基于所述经初始化的目标依赖库加载所述目标内容。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各步骤提供的应用加载的方法,该方法包括:在准备加载目标应用的目标内容的情况下,获取方法调用请求;判断所述方法调用请求对应的目标依赖库是否存在已完成初始化标识;若所述方法调用请求对应的所述目标依赖库存在所述已完成初始化标识,加载所述目标依赖库,并基于所述目标依赖库加载所述目标内容;若所述方法调用请求对应的所述目标依赖库不存在所述已完成初始化标识,对所述目标依赖库进行初始化,加载经初始化的目标依赖库,并基于所述经初始化的目标依赖库加载所述目标内容。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种应用加载的方法,其特征在于,包括:
在准备加载目标应用的目标内容的情况下,获取方法调用请求;
判断所述方法调用请求对应的目标依赖库是否存在已完成初始化标识;
若所述方法调用请求对应的所述目标依赖库存在所述已完成初始化标识,加载所述目标依赖库,并基于所述目标依赖库加载所述目标内容;
若所述方法调用请求对应的所述目标依赖库不存在所述已完成初始化标识,对所述目标依赖库进行初始化,加载经初始化的目标依赖库,并基于所述经初始化的目标依赖库加载所述目标内容。
2.根据权利要求1所述的应用加载的方法,其特征在于,所述在准备加载目标应用的目标内容前,包括:
获取所述目标应用的基础依赖库;
处理所述基础依赖库,生成所述目标依赖库。
3.根据权利要求2所述的应用加载的方法,其特征在于,所述处理所述基础依赖库,生成所述目标依赖库,包括:
判断所述基础依赖库对应的任务机制是否为异步任务机制;
若所述基础依赖库对应的任务机制是异步任务机制,对所述基础依赖库进行检查,并基于得到的检查结果生成所述目标依赖库;
若所述基础依赖库对应的任务机制不是异步任务机制,将所述基础依赖库作为所述目标依赖库。
4.根据权利要求3所述的应用加载的方法,其特征在于,所述对所述基础依赖库进行检查,并基于得到的检查结果生成所述目标依赖库,包括:
判断所述基础依赖库是否发生改变;
若所述基础依赖库已发生改变,下载所述基础依赖库对应的数据文件,对所述数据文件进行处理,得到所述目标依赖库;
若所述基础依赖库未发生改变,将所述基础依赖库作为所述目标依赖库。
5.根据权利要求4所述的应用加载的方法,其特征在于,对所述数据文件进行处理,得到所述目标依赖库,包括:
判断所述数据文件是否包含第一数据包;
若所述数据文件包含所述第一数据包,对所述数据文件中的所述第一数据包进行解压,得到包含所述第一数据包对应的数据项的解压数据文件,对所述解压数据文件进行更新,得到所述目标依赖库;
若所述数据文件不包含所述第一数据包,对所述数据文件进行更新,得到所述目标依赖库。
6.根据权利要求5所述的应用加载的方法,其特征在于,所述对所述解压数据文件进行更新,得到所述目标依赖库,包括:
查找所述解压数据文件中的第二数据包,对所述第二数据包进行方法插桩生成第三数据包;
替换所述第二数据包为所述第三数据包,并对所述解压数据文件中的所述数据项进行打包,得到更新数据文件,将所述更新数据文件上传至依赖管理组件,生成所述目标依赖库。
7.根据权利要求5所述的应用加载的方法,其特征在于,所述对所述数据文件进行更新,得到所述目标依赖库,包括:
查找所述数据文件中的第二数据包,对所述第二数据包进行方法插桩生成第四数据包;
替换所述第二数据包为所述第四数据包,得到更新数据文件,将所述更新数据文件上传至依赖管理组件,生成所述目标依赖库。
8.一种应用加载的装置,其特征在于,包括:
获取模块,用于在准备加载目标应用的目标内容的情况下,获取方法调用请求;
判断模块,用于判断所述方法调用请求对应的目标依赖库是否存在已完成初始化标识;
加载模块,用于若所述方法调用请求对应的所述目标依赖库存在所述已完成初始化标识,加载所述目标依赖库,并基于所述目标依赖库加载所述目标内容;
初始化模块,用于若所述方法调用请求对应的所述目标依赖库不存在所述已完成初始化标识,对所述目标依赖库进行初始化,加载经初始化的目标依赖库,并基于所述经初始化的目标依赖库加载所述目标内容。
9.一种非暂态计算机可读存储介质,所述存储介质中存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的应用加载的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111093802.8A CN113918235B (zh) | 2021-09-17 | 2021-09-17 | 应用加载的方法及装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111093802.8A CN113918235B (zh) | 2021-09-17 | 2021-09-17 | 应用加载的方法及装置、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113918235A CN113918235A (zh) | 2022-01-11 |
CN113918235B true CN113918235B (zh) | 2023-11-17 |
Family
ID=79235238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111093802.8A Active CN113918235B (zh) | 2021-09-17 | 2021-09-17 | 应用加载的方法及装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113918235B (zh) |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101222709A (zh) * | 2008-01-22 | 2008-07-16 | 中兴通讯股份有限公司 | 一种手机应用程序快速启动的方法 |
CN102999354A (zh) * | 2012-11-15 | 2013-03-27 | 北京奇虎科技有限公司 | 文件加载方法和装置 |
CN106557424A (zh) * | 2016-11-18 | 2017-04-05 | 腾讯科技(深圳)有限公司 | 内存测试方法、被测终端、测试客户端及系统 |
CN107193610A (zh) * | 2017-05-31 | 2017-09-22 | 广东欧珀移动通信有限公司 | 一种动态库的加载方法、装置、终端设备及存储介质 |
CN107357553A (zh) * | 2017-07-11 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种数据采集管理方法及装置 |
CN109840117A (zh) * | 2018-06-20 | 2019-06-04 | 中兴通讯股份有限公司 | 训练模型的实现方法、设备以及存储介质 |
CN110045998A (zh) * | 2019-04-22 | 2019-07-23 | 腾讯科技(深圳)有限公司 | 加载动态库的方法及装置 |
CN110134457A (zh) * | 2019-04-17 | 2019-08-16 | 深圳壹账通智能科技有限公司 | 插件加载方法和装置 |
CN110531985A (zh) * | 2019-08-09 | 2019-12-03 | 浙江大搜车软件技术有限公司 | Sdk初始化方法及系统、电子设备、存储介质 |
CN110597570A (zh) * | 2019-09-26 | 2019-12-20 | 深圳市元征科技股份有限公司 | 一种通信模式适配方法及相关装置 |
CN111427630A (zh) * | 2020-03-31 | 2020-07-17 | 北京金堤科技有限公司 | 冷启动优化方法和装置、电子设备和存储介质 |
CN112546622A (zh) * | 2020-12-09 | 2021-03-26 | 广州博冠信息科技有限公司 | 应用中实现游戏直播的方法、装置、存储介质及计算机设备 |
CN112698930A (zh) * | 2020-12-31 | 2021-04-23 | 中国农业银行股份有限公司 | 一种获取服务器标识的方法、装置、设备及介质 |
CN112783761A (zh) * | 2020-12-25 | 2021-05-11 | 广州品唯软件有限公司 | 一种应用程序的冷启动时长测试方法、装置及系统 |
CN113342660A (zh) * | 2021-06-11 | 2021-09-03 | 北京奇艺世纪科技有限公司 | 文件测试方法、装置、系统、电子设备及可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008116731A1 (en) * | 2007-03-27 | 2008-10-02 | International Business Machines Corporation | Dynamic allocation of program libraries |
US20160085513A1 (en) * | 2014-09-19 | 2016-03-24 | Microsoft Corporation | Loading Code in Self-Contained Applications |
KR101688632B1 (ko) * | 2015-07-31 | 2016-12-22 | 한국전자통신연구원 | 라이브러리 적재 탐지를 위한 방법 및 장치 |
-
2021
- 2021-09-17 CN CN202111093802.8A patent/CN113918235B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101222709A (zh) * | 2008-01-22 | 2008-07-16 | 中兴通讯股份有限公司 | 一种手机应用程序快速启动的方法 |
CN102999354A (zh) * | 2012-11-15 | 2013-03-27 | 北京奇虎科技有限公司 | 文件加载方法和装置 |
CN106557424A (zh) * | 2016-11-18 | 2017-04-05 | 腾讯科技(深圳)有限公司 | 内存测试方法、被测终端、测试客户端及系统 |
CN107193610A (zh) * | 2017-05-31 | 2017-09-22 | 广东欧珀移动通信有限公司 | 一种动态库的加载方法、装置、终端设备及存储介质 |
CN107357553A (zh) * | 2017-07-11 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种数据采集管理方法及装置 |
CN109840117A (zh) * | 2018-06-20 | 2019-06-04 | 中兴通讯股份有限公司 | 训练模型的实现方法、设备以及存储介质 |
CN110134457A (zh) * | 2019-04-17 | 2019-08-16 | 深圳壹账通智能科技有限公司 | 插件加载方法和装置 |
CN110045998A (zh) * | 2019-04-22 | 2019-07-23 | 腾讯科技(深圳)有限公司 | 加载动态库的方法及装置 |
CN110531985A (zh) * | 2019-08-09 | 2019-12-03 | 浙江大搜车软件技术有限公司 | Sdk初始化方法及系统、电子设备、存储介质 |
CN110597570A (zh) * | 2019-09-26 | 2019-12-20 | 深圳市元征科技股份有限公司 | 一种通信模式适配方法及相关装置 |
CN111427630A (zh) * | 2020-03-31 | 2020-07-17 | 北京金堤科技有限公司 | 冷启动优化方法和装置、电子设备和存储介质 |
CN112546622A (zh) * | 2020-12-09 | 2021-03-26 | 广州博冠信息科技有限公司 | 应用中实现游戏直播的方法、装置、存储介质及计算机设备 |
CN112783761A (zh) * | 2020-12-25 | 2021-05-11 | 广州品唯软件有限公司 | 一种应用程序的冷启动时长测试方法、装置及系统 |
CN112698930A (zh) * | 2020-12-31 | 2021-04-23 | 中国农业银行股份有限公司 | 一种获取服务器标识的方法、装置、设备及介质 |
CN113342660A (zh) * | 2021-06-11 | 2021-09-03 | 北京奇艺世纪科技有限公司 | 文件测试方法、装置、系统、电子设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
基于Wine的Windows安全机制模拟及沙箱系统实现;刁铭智;计算机科学;第44卷(第11期);246-252+267 * |
Also Published As
Publication number | Publication date |
---|---|
CN113918235A (zh) | 2022-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9465724B2 (en) | Method, program, and system for generating test cases | |
CN109558320B (zh) | 系统测试方法、装置、系统、设备及计算机可读存储介质 | |
AU2018310287A1 (en) | Smart contract processing method and apparatus | |
CN108229148B (zh) | 一种基于Android虚拟机的沙箱脱壳方法及系统 | |
CN110543324B (zh) | 一种应用程序的插件增量更新方法及装置 | |
CN110532182B (zh) | 一种虚拟化平台的自动化测试方法及装置 | |
CN107341106B (zh) | 应用程序兼容性检测方法、开发终端及存储介质 | |
CN111625225A (zh) | 一种程序指定数据输出方法和装置 | |
CN112882732A (zh) | 一种软件开发工具包sdk中功能代码的更新方法和装置 | |
CN113391874A (zh) | 一种虚拟机检测对抗方法、装置、电子设备及存储介质 | |
CN109976751B (zh) | 模型操作方法、相关装置及计算机可读存储介质 | |
CN109766123B (zh) | 应用程序封装方法及装置 | |
CN113918235B (zh) | 应用加载的方法及装置、存储介质 | |
CN117931374A (zh) | 基于容器隔离的应用处理方法、装置、设备及存储介质 | |
CN117270864A (zh) | 代码编译方法、装置、设备及存储介质 | |
CN110059485A (zh) | Ios应用的私有api检测方法、终端及存储介质 | |
CN115629976A (zh) | 一种内核测试方法、装置和存储介质 | |
CN111078571B (zh) | 模拟响应的测试方法、终端设备及计算机可读存储介质 | |
CN110286936B (zh) | 热修复方法、装置、电子设备以及存储介质 | |
CN113656009A (zh) | 一种宏处理方法、装置、电子设备及存储介质 | |
CN113900959B (zh) | 软件测试方法、装置、设备及存储介质 | |
CN113032045A (zh) | 应用程序的启动方法以及相关装置、设备 | |
CN116700840B (zh) | 文件执行方法、装置、电子设备及可读存储介质 | |
CN117883789B (zh) | 数据获取方法、装置、设备、可读存储介质及程序产品 | |
CN112612754A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20231022 Address after: Room 102, 1st Floor, Building 1, No. 2 Chuangye Road, Haidian District, Beijing, 100080 Applicant after: Seashell Housing (Beijing) Technology Co.,Ltd. Address before: 101309 room 24, 62 Farm Road, Erjie village, Yangzhen, Shunyi District, Beijing Applicant before: Beijing fangjianghu Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |