CN112148300A - 一种Dex文件的构建方法、目标应用的运行方法及装置 - Google Patents
一种Dex文件的构建方法、目标应用的运行方法及装置 Download PDFInfo
- Publication number
- CN112148300A CN112148300A CN202011004872.7A CN202011004872A CN112148300A CN 112148300 A CN112148300 A CN 112148300A CN 202011004872 A CN202011004872 A CN 202011004872A CN 112148300 A CN112148300 A CN 112148300A
- Authority
- CN
- China
- Prior art keywords
- resource
- dex file
- dex
- resource list
- resources
- 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
Links
Images
Classifications
-
- 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
- G06F8/44—Encoding
- G06F8/443—Optimisation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种Dex文件的构建方法、目标应用的运行方法及装置,该构建方法包括:获取目标应用对应的代码资源;根据代码资源中的项目代码资源以及项目代码资源关联的依赖代码资源,生成主Dex文件对应的第一资源清单;复制第一资源清单,得到备份第一资源清单;判断备份第一资源清单中的资源数量是否大于单个Dex文件对应的限制资源数量,若是,则对备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,并基于第二资源清单替换第一资源清单;将替换后的第二资源清单中的目标资源写入主Dex文件中。这样,在保证目标应用正常启动的前提下,避免了应用构建失败的问题,且提高了目标应用的构建效率。
Description
技术领域
本申请涉及游戏技术领域,具体而言,涉及一种Dex文件的构建方法、目标应用的运行方法及装置。
背景技术
在Android应用构建流程中,应用的原始资源经过编译构建之后生成Dex文件,Dex文件包含了用来运行应用的已编译代码,供运行应用的设备(具体为虚拟机)加载使用。其中,虚拟机指令中采用16位二进制来记录一个Dex文件所引用的方法个数,所以,单个Dex文件包含的代码资源所引用的方法数目不能超过65536,这便是“64K引用限制”。
随着应用功能的增多,应用的代码所引用的方法个数不可避免会超过65536,相应的,单个Dex文件已经无法放下所有方法。为了解决这个问题,目前采用分包的方式,即拆分这些方法,拆分之后的方法存放在多个Dex文件中。在基于低版本虚拟机运行Dex文件的场景下,需要将大量的方法写入主Dex文件中,以保证应用的正常启动,但是,该种方式中,要写入主Dex文件中的方法数量还是可能会超过限制数量65536,当要写入主Dex文件中的方法数量超过限制数量时,就导致这些方法无法被打包到主Dex中,进而导致应用构建失败,且应用的构建效率低。
发明内容
有鉴于此,本申请的目的在于提供一种Dex文件的构建方法、目标应用的运行方法及装置,在特定的时机,通过拦截主Dex文件对应的第一资源清单实现自主干预分包,并在分包时至少保留主Dex文件对应的第一资源清单中的目标资源,这样,在保证目标应用正常启动的前提下,避免了目标应用构建失败的问题,且提高了目标应用的构建效率。
第一方面,本申请实施例提供了一种Dex文件的构建方法,所述构建方法包括:
获取目标应用对应的代码资源;
根据所述代码资源中的项目代码资源以及所述项目代码资源关联的依赖代码资源,生成主Dex文件对应的第一资源清单;
复制所述第一资源清单,得到备份第一资源清单;判断所述备份第一资源清单中的资源数量是否大于单个Dex文件对应的限制资源数量,若是,则对所述备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,并基于所述第二资源清单替换所述第一资源清单;其中,所述目标资源中至少包括启动所述目标应用的应用入口资源和加载其他Dex文件前引用的资源;
将替换后的所述第二资源清单中的目标资源写入所述主Dex文件中。
在一种实施方式中,所述复制所述第一资源清单,得到备份第一资源清单,包括:
监听目标任务的运行状态,所述目标任务在运行时用于生成所述主Dex文件对应的第一资源清单;
在监听到所述目标任务运行结束时,复制所述第一资源清单,得到备份第一资源清单。
在一种实施方式中,通过如下方式构建所述目标任务,包括:
根据所述目标应用对应的构建类型和标识信息,构建所述目标任务。
在一种实施方式中,所述对所述备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,包括:
确定备份第一资源清单中启动所述目标应用的应用入口资源和加载其他Dex文件前引用的资源,得到第一资源;
从所述备份第一资源清单中删除除所述第一资源之外的其他资源,得到包括所述第一资源的第二资源清单。
在一种实施方式中,所述从所述备份第一资源清单中删除除所述第一资源之外的其他资源,得到包括所述第一资源的第二资源清单,包括:
根据所述第一资源的数量以及单个Dex文件对应的限制资源数量,从所述备份第一资源清单中选取第二资源;
从所述第一资源清单中删除除所述第一资源和所述第二资源之外的其他资源,得到包括所述第一资源和所述第二资源的第二资源清单。
在一种实施方式中,在生成主Dex文件对应的第一资源清单同时,所述构建方法还包括:
生成其他Dex文件分别对应的第三资源清单;
在基于所述第二资源清单替换所述第一资源清单之后,所述构建方法还包括:
根据所述第二资源清单、所述代码资源中的项目代码资源以及所述项目代码资源关联的依赖代码资源,更新所述其他Dex文件分别对应的第三资源清单;
将更新后的第三资源清单中的第三资源写入匹配的其他Dex文件中。
在一种实施方式中,通过如下方法确定主Dex文件和其他Dex文件,包括:
在检测到所述目标应用对应的代码资源的数量大于单个Dex文件对应的限制资源数量时,根据所述代码资源的总数量和所述单个Dex文件对应的限制资源数量,确定多个Dex文件;
从所述多个Dex文件中,确定主Dex文件和其他Dex文件。
第二方面,本申请实施例还提供了一种目标应用的运行方法,所述目标应用中包括多个Dex文件,其中,所述多个Dex文件是基于第一方面任一项所述的Dex文件的构建方法得到的;所述多个Dex文件包括主Dex文件和至少一个其他Dex文件;所述运行方法包括:
响应第一操作指令,获取所述目标应用对应的多个Dex文件,并对所述多个Dex文件中的主Dex文件进行优化处理,得到优化主Dex文件;
响应第二操作指令,加载所述优化主Dex文件,并基于所述优化主Dex文件启动所述目标应用;
在启动所述目标应用后,对所述至少一个其他Dex文件进行优化处理,得到至少一个优化其他Dex文件,并加载所述优化其他Dex文件,运行所述目标应用。
第三方面,本申请实施例还提供了一种Dex文件的构建装置,所述构建装置包括:
获取模块,用于获取目标应用对应的代码资源;
生成模块,用于根据所述代码资源中的项目代码资源以及所述项目代码资源关联的依赖代码资源,生成主Dex文件对应的第一资源清单;
处理模块,用于复制所述第一资源清单,得到备份第一资源清单;判断所述备份第一资源清单中的资源数量是否大于单个Dex文件对应的限制资源数量,若是,则对所述备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,并基于所述第二资源清单替换所述第一资源清单;其中,所述目标资源中至少包括启动所述目标应用的应用入口资源和加载其他Dex文件前引用的资源;
写入模块,用于将替换后的所述第二资源清单中的目标资源写入所述主Dex文件中。
第四方面,本申请实施例还提供了一种目标应用的运行装置,所述目标应用中包括多个Dex文件,其中,所述多个Dex文件是基于第一方面任一项所述的Dex文件的构建方法得到的;所述多个Dex文件包括主Dex文件和至少一个其他Dex文件;所述运行装置包括:
处理模块,用于响应第一操作指令,获取所述目标应用对应的多个Dex文件,并对所述多个Dex文件中的主Dex文件进行优化处理,得到优化主Dex文件;
启动模块,用于响应第二操作指令,加载所述优化主Dex文件,并基于所述优化主Dex文件启动所述目标应用;
运行模块,用于在启动所述目标应用后,对所述至少一个其他Dex文件进行优化处理,得到至少一个优化其他Dex文件,并加载所述优化其他Dex文件,运行所述目标应用。
第五方面,本申请实施例还提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如第一方面任一项所述的Dex文件的构建方法的步骤。
第六方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面任一项所述的Dex文件的构建方法的步骤。
第七方面,本申请实施例还提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如第二方面的目标应用的运行方法的步骤。
第八方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第二方面的目标应用的运行方法的步骤。
本申请实施例提供的一种Dex文件的构建方法、目标应用的运行方法及装置,该构建方法包括:获取目标应用对应的代码资源;根据代码资源中的项目代码资源以及项目代码资源关联的依赖代码资源,生成主Dex文件对应的第一资源清单;复制第一资源清单,得到备份第一资源清单;判断备份第一资源清单中的资源数量是否大于单个Dex文件对应的限制资源数量,若是,则对备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,并基于第二资源清单替换第一资源清单;将替换后的第二资源清单中的目标资源写入主Dex文件中。通过上述方式,能够在保证目标应用正常启动的前提下,避免了应用构建失败的问题,且整个过程无需更改编译环境,提高了目标应用的构建效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1a示出了本申请实施例提供的一种Dex文件的构建方法的流程图;
图1b示出了将目标应用对应的多个项目转换成Android应用程序包APK的流程图;
图2示出了本申请实施例提供的另一种Dex文件的构建方法的流程图;
图3示出了本申请实施例提供的另一种Dex文件的构建方法的流程图;
图4示出了本申请实施例提供的另一种Dex文件的构建方法的流程图;
图5示出了本申请实施例提供的另一种Dex文件的构建方法的流程图;
图6示出了本申请实施例提供的另一种Dex文件的构建方法的流程图;
图7示出了本申请实施例提供的一种Dex文件的构建装置的结构示意图;
图8示出了本申请实施例提供的另一种Dex文件的构建装置的结构示意图;
图9示出了本申请实施例提供的一种电子设备的结构示意图;
图10示出了本申请实施例提供的另一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。另外,本申请实施例中的“应用”和“应用程序”可以互换。
在构建应用时,应用的代码所引用的方法个数不可避免会超过65536,即会超过单个Dex文件对应的资源限制数量。基于此,目前采用分包的方式解决该问题,即拆分应用的代码所引用的方法,并将拆分之后的方法存放在多个Dex文件中。在Android(安卓)中基于低版本虚拟机运行Dex文件的场景下,需要将大量的方法写入主Dex文件中,以使应用正常启动,但是,该种方式中,要写入主Dex文件中的方法数量还可能会超过限制数量65536,在该种情况下,就会使得这些方法无法被打包到主Dex中,进而导致应用构建失败,且应用的构建效率低。
基于此,本申请实施例提供了一种Dex文件的构建方法、目标应用的运行方法及装置,在特定的时机(即在生成主Dex文件对应的第一资源清单之后,在基于该第一资源清单进行分包之前),通过拦截主Dex文件对应的第一资源清单实现自主干预分包;当拦截第一资源清单后,若检测到第一资源清单中的资源数量大于单个Dex文件对应的限制资源数量时,则自主对第一资源清单进行删减处理,并至少保留特定的目标资源,这样,在保证目标应用正常启动的前提下,避免了目标应用构建失败的问题,且提高了目标应用的构建效率。
为便于对本申请实施例进行理解,下面对本申请实施例提供的一种Dex文件的构建方法、目标应用的运行方法及装置进行详细介绍。
如图1a所示,为本申请第一实施例提供的一种Dex文件的构建方法,所述构建方法包括:
S101、获取目标应用对应的代码资源。
S102、根据所述代码资源中的项目代码资源以及所述项目代码资源关联的依赖代码资源,生成主Dex文件对应的第一资源清单。
S103、复制所述第一资源清单,得到备份第一资源清单;判断所述备份第一资源清单中的资源数量是否大于单个Dex文件对应的限制资源数量,若是,则对所述备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,并基于所述第二资源清单替换所述第一资源清单;其中,所述目标资源中至少包括启动所述目标应用的应用入口资源和加载其他Dex文件前引用的资源。
S104、将替换后的所述第二资源清单中的目标资源写入所述主Dex文件中。
本申请实施例提供的上述Dex文件的构建方法,在特定的时机(即在生成主Dex文件对应的第一资源清单之后,在基于该第一资源清单进行分包之前),通过拦截主Dex文件对应的第一资源清单实现自主干预分包;当拦截第一资源清单后,若检测到第一资源清单中的资源数量大于单个Dex文件对应的限制资源数量时,则自主对第一资源清单进行删减处理,并至少保留特定的目标资源,这样,在保证目标应用正常启动的前提下,避免了目标应用构建失败的问题,且提高了目标应用的构建效率。
其中,上述构建方法可以应用于服务器,也可以应用于终端设备。本申请实施例主要应用于Android中基于低版本虚拟机运行Dex文件的场景,下面以上述方法应用于服务器并结合上述场景对本申请实施例提供的上述示例性的各个步骤分别进行说明:
S101、获取目标应用对应的代码资源。
本申请实施例中,终端设备中预先安装有Android(安卓)操作系统,在Android操作系统中可以运行预先构建好的应用(也即应用程序)。其中,每个应用对应有多个项目,在应用构建流程中,需要将应用对应的多个项目转换成Android应用程序包(Androidapplication package,APK)。可选的,应用对应的多个项目可以为:聊天项目、支付项目、游戏项目、界面展示项目等。如图1b所示,具体的转换流程如下:
获取Application Module(即应用模块)和该Application Module(即应用模块)关联的Dependencies(即依赖项);其中,上述Application Module(即应用模块)中包括:Source Code(即源代码)、Resource Files(即资源文件)和Android接口定义语言(AndroidInterface Definition Language,AIDL)Files(AIDL文件);Dependencies(即依赖项)中包括:Library Modules(即库模块)、AAR Libraries(AAR库)和Libraries(JAR库);上述Application Module和Dependencies中的资源为代码资源,通过Compilers(即编译器)对上述代码资源进行编译,得到Dex Files(即Dex文件)。通过APK Package(APK打包器)对Compiled Resources(编译资源)以及Debug or Release keystore(调试或者发布模式下的密钥库)进行打包,得到Debug or Release APK(即调试或者发布模式下的APK)。
本申请实施例中,获取的代码资源包括:项目代码资源以及项目代码资源关联的依赖代码资源。这里,项目代码资源即上述Application Module中的代码资源,依赖代码资源即上述Dependencies中的代码资源。
S102、根据所述代码资源中的项目代码资源以及所述项目代码资源关联的依赖代码资源,生成主Dex文件对应的第一资源清单。
本申请实施例中主要应用在“Compilers(编译器)—>Dex Files(Dex文件)”阶段。本申请实施例在获得了目标应用对应的代码资源后,通过Compilers(编译器)对目标应用对应的代码资源进行编译处理,得到目标应用对应的Dex文件。
在编译过程中,当目标应用对应的代码资源的数量大于单个Dex文件对应的限制资源数量时,需要对该代码资源进行分包处理。具体分包过程如下,先确定主Dex文件(即主分包文件)和其他Dex文件(即其他分包文件,也即次分包文件),之后,将相应的资源写入主Dex文件和其他Dex文件中。通常情况下,其他Dex文件为多个,多个其他Dex文件依次编号。
本申请实施例中,确定写入主Dex文件中的资源的方法包括:从代码资源包括的项目代码资源以及项目代码资源关联的依赖代码资源中,选取用于写入主Dex文件的特定资源,其中,基于选取的该特定资源能够启用目标应用以及实现加载其他Dex文件。相应的,目标应用对应的代码资源中除上述特定资源外的其他资源分别写入其他Dex文件中。
在一种实施方式中,使用Gradle(即自动化构建开源工具)构建Android中目标应用对应的Dex文件,在“Compilers(编译器)->Dex Files(DEX文件)”阶段中,Gradle定义了一系列的任务(也即Task),这些任务会在目标应用构建的期间有序的执行。其中,Gradle具体包括三个Task,分别为Task1(即第一任务)、Task2(即第二任务)和Task3(即第三任务);其中,Task1在代码资源被编译之后的某个适合时机被执行,其在执行过程中,用于计算每一个Dex所需要的编译后的资源,得到各个Dex文件分别对应的资源清单,可选的,该资源清单为包含所得到的计算方法的类清单。其中,上述资源清单包括:主Dex文件对应的第一资源清单以及其他Dex文件分别对应的第三资源清单。之后,Task1则将生成的各个Dex文件分别对应的资源清单发送给Task2,Task2则用于进行真正的分包处理,即将各个资源清单中资源写入对应的Dex文件中。
S103、复制所述第一资源清单,得到备份第一资源清单;判断所述备份第一资源清单中的资源数量是否大于单个Dex文件对应的限制资源数量,若是,则对所述备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,并基于所述第二资源清单替换所述第一资源清单;其中,所述目标资源中至少包括启动所述目标应用的应用入口资源和加载其他Dex文件前引用的资源。
本申请实施例中,在基于Task1生成的各个Dex文件分别对应的资源清单后,若主Dex文件对应的第一资源清单中的资源数量大于单个Dex文件对应的限制资源数量,则需要对该第一资源清单中的资源进行删减处理,得到删减后的第一资源清单,并重新计算其他Dex文件对应的第三资源清单。这样,删减后的第一资源清单中的资源数量小于单个Dex文件对应的限制资源数量,即能够保证将删减后的第一资源清单中的资源写入主Dex文件,避免了应用构建失败的问题。
在本申请实施例中,通过Gradle定义的Task3在Task1生成第一资源清单后并发送给Task2之前的特定时机,拦截Task1生成的第一资源清单,并复制该第一资源清单,得到备份第一资源清单,并判断该备份第一资源清单中的资源数量是否大于单个Dex文件对应的限制资源数量,若是,则对备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,并基于第二资源清单替换Task1中的第一资源清单;其中,目标资源中至少包括启动目标应用的应用入口资源和加载其他Dex文件前引用的资源,且目标资源的资源数量小于等于单个Dex文件对应的限制资源数量,这样,能够保证后续Task2成功将第二资源清单中的目标资源写入主Dex文件中;Task1则将替换后的第二资源清单发送给Task2,Task2在接收到第二资源清单后,执行具体的分包操作,将第二资源清单中的目标资源写入主Dex文件中。
S104、将替换后的所述第二资源清单中的目标资源写入所述主Dex文件中。
本申请实施例中,Task1将替换后的第二资源清单发送给Task2后,Task2则将第二资源清单中的目标资源写入主Dex文件中,保证了第二资源清单中的目标资源成功写入主Dex文件中。
另外,本申请实施例中,通过创建独立的Task3(即第三任务),Task3在Task1生成第一资源清单后并发送给Task2之前的特定时机,拦截Task1生成的第一资源清单,复制第一资源清单,得到备份第一资源清单,并设置对该备份第一资源清单的检测机制,当判断到该备份第一资源清单中的资源数量大于单个Dex文件对应的限制资源数量,则对该备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,并基于第二资源清单替换Task1中的第一资源清单,之后,Task1将替换后的第二资源清单发送给Task2,这样,Task2即可将第二资源清单中的目标资源写入所述主Dex文件中。通过这种方式,能够在保证目标应用正常启动的前提下,避免了目标应用构建失败的问题,并且,整个删减过程无需更改编译环境,提高了目标应用的构建效率。
进一步的,如图2所示,本申请实施例提供的Dex文件的构建方法,所述复制所述第一资源清单,得到备份第一资源清单,包括:
S201、监听目标任务的运行状态,所述目标任务在运行时用于生成所述主Dex文件对应的第一资源清单。
S202、在监听到所述目标任务运行结束时,复制所述第一资源清单,得到备份第一资源清单。
结合步骤201和步骤202,Gradle中包括应用程序接口(Application ProgrammingInterface,API),该API用于监听各个任务(也即各个Task)的生命周期。具体的,API通过finalizedBy方法监听目标任务Task1(也即第一任务)的运行状态,Task1在运行时用于根据代码资源中的项目代码资源以及项目代码资源关联的依赖代码资源,生成主Dex文件对应的第一资源清单和其他Dex文件分别对应的第三资源清单;API在监测到目标任务Task1运行结束时,注入“干预类清单”的Task(即Task3,也可以称为第三任务),注入的Task3会在目标任务Task1(即第一任务)结束时运行,在Task1的后置任务Task2(也即第二任务)执行前结束。
Task3在监测到Task1运行结束时,具体执行内容如下:复制Task1生成的第一资源清单,得到备份第一资源清单。之后,判断备份第一资源清单中的资源数量是否大于单个Dex文件对应的限制资源数量,若是,则对备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,并基于第二资源清单替换所述第一资源清单。可选的,Task3通过python脚本并基于特定规则,对拦截的类清单(即第一资源清单)做删减,至少保留启动目标应用的应用入口资源(即应用入口Application类)和加载其他Dex文件前引用的资源(即官方分包库MutilDex#install()调用前引用的类)。
另外,本申请实施例中,通过如下方式构建所述目标任务,包括:根据所述目标应用对应的构建类型和标识信息,构建所述目标任务。
其中,目标应用对应的构建类型包括Debug模式或者Release模式。举例来讲,计算主Dex文件分包类清单的目标任务(即上述Task1,也即第一任务)。在d8(其中,d8为Gradle插件使用的用来将代码编译为Dex文件的工具)构建流程中,该Task1为“transformClassesWithMultidexlistFor{variantName}”,variantName为项目选择构建的类型。比如,在Debug模式下,Task1为transformClassesWithMultidexlistForDebug;在Release模式下,Task1为transformClassesWithMultidexlistForRelease。
如图3所示,本申请实施例提供的Dex文件的构建方法,所述对所述备份第一资源清单进行删减处理,得到包括目标资源的所述第二资源清单,包括:
S301、确定备份第一资源清单中启动所述目标应用的应用入口资源和加载其他Dex文件前引用的资源,得到第一资源。
本申请实施例中,预先在清单模板上预先配置第一资源,该第一资源包括启动目标应用的应用入口资源(即应用入口Application类)和加载其他Dex文件前引用的资源(即官方分包库MutilDex#install()调用前引用的类);通过该第一资源能够保证正常启动目标应用以及能够正常加载其他Dex文件。之后,基于清单模板配置的第一资源,确定备份第一资源清单中的上述第一资源。
本申请实施例中,由于task1生成的主Dex文件对应的第一资源清单(即删减前类清单)是构建系统(即task1)计算的,所以,删减的内容要经过严格的计算。本申请实施例中,清单模板上预先配置第一资源,该第一资源是必须保留的资源,相应的,除第一资源外的其他资源均可删除。通过预先配置的第一资源,提高了删减效率,同样避免了应用构建失败的问题;相应的,task3基于清单模板配置的第一资源,确定备份第一资源清单中的上述第一资源,这样,第一资源清单中除上述第一资源外的其他资源(即原来被构建系统认为需要打包到主Dex的类)均可以被剔除。
S302、从所述备份第一资源清单中删除除所述第一资源之外的其他资源,得到包括所述第一资源的第二资源清单。
本申请实施例中,对备份第一资源清单的资源删减可视应用场景而定,除“应用入口Application类及官方分包库MutilDex#install()调用前引用的类”外全部做剔除处理,为最大化删减,各应用可酌情保留其他类。下面分别进行说明:
在一种实施方式下,上述目标资源只包括第一资源。该种实施方式下,task3从备份第一资源清单中删除除上述第一资源之外的其他资源,得到包括该第一资源的第二资源清单。其中,第一资源的资源数量小于等于单个Dex文件对应的限制资源数量。
在一种实施方式下,上述目标资源除了包括第一资源,还包括第二资源;在该种实施方式下,task3首先根据所述第一资源的数量以及单个Dex文件对应的限制资源数量,从所述备份第一资源清单中选取第二资源;之后,从所述第一资源清单中删除除所述第一资源和所述第二资源之外的其他资源,得到包括所述第一资源和所述第二资源的第二资源清单。其中,包括第一资源和第二资源的目标资源中的资源数量小于等于单个Dex文件对应的限制资源数量。
进一步的,本申请实施例提供的Dex文件的构建方法中,在生成主Dex文件对应的第一资源清单同时,所述构建方法还包括:
生成其他Dex文件分别对应的第三资源清单;
本申请实施例中,Gradle具体包括三个Task,其中,Task1在代码资源被编译之后的某个适合时机被执行,其在执行过程中,用于计算每一个Dex所需要的编译后的资源,得到各个Dex文件分别对应的资源清单,可选的,该资源清单为包含所得到的计算方法的类清单。其中,上述资源清单既包括主Dex文件对应的第一资源清单,还包括其他Dex文件分别对应的第三资源清单。
如图4所示,在基于所述第二资源清单替换所述第一资源清单之后,所述构建方法还包括:
S401、根据所述第二资源清单、所述代码资源中的项目代码资源以及所述项目代码资源关联的依赖代码资源,更新所述其他Dex文件分别对应的第三资源清单。
本申请实施例中,当利用删减后的第二资源清单替换了第一资源清单以后,第一资源清单中被删减的资源要写入其他Dex文件中,因此,还需要根据该第二资源清单、代码资源中的项目代码资源以及项目代码资源关联的依赖代码资源,更新其他Dex文件分别对应的第三资源清单。
S402、将更新后的第三资源清单中的第三资源写入匹配的其他Dex文件中。
本申请实施例中,在更新其他Dex文件分别对应的第三资源清单以后,得到更新后的第三资源清单,之后,将更新后的第三资源清单中的第三资源写入匹配的其他Dex文件中。
进一步的,如图5所示,本申请实施例提供的Dex文件的构建方法,通过如下方法确定主Dex文件和其他Dex文件,包括:
S501、在检测到所述目标应用对应的代码资源的数量大于单个Dex文件对应的限制资源数量时,根据所述代码资源的总数量和所述单个Dex文件对应的限制资源数量,确定多个Dex文件。
S502、从所述多个Dex文件中,确定主Dex文件和其他Dex文件。
结合步骤501和步骤502,通常来讲,目标应用对应的代码资源的数量均是大于单个Dex文件对应的限制资源数量,该种情况下,根据代码资源的总数量和单个Dex文件对应的限制资源数量,确定多个Dex文件,并从多个Dex文件中确定主Dex文件和其他Dex文件。
举例来讲,代码资源的总数量为524080,单个Dex文件对应的限制资源数量为65536,相应的,确定Dex文件为8个,这样,每个Dex文件可以存放小于等于65536的资源,且能够全部容纳总数量为524080的代码资源。
本申请实施例中,通过研究现有构建流程的原理及实现,找到一个可拦截处理主dex类清单的特定时机,通过在该特定时机拦截主dex类清单实现自主干预分包流程,解决了现有技术在面向Davilk运行环境构建时无法处理方法数超过限制导致的分包异常的问题;另外,无需修改编译环境,提高了目标应用的构建效率;同时,基于清单模板中的第一资源对主dex类清单进行删减处理,可精准有效控制主dex的方法个数。
如图6所示,为本申请第二实施例提供的一种目标应用的运行方法,所述目标应用中包括多个Dex文件,其中,所述多个Dex文件是基于第一实施例中的Dex文件的构建方法得到的;所述多个Dex文件包括主Dex文件和至少一个其他Dex文件;所述运行方法包括:
S601、响应第一操作指令,获取所述目标应用对应的多个Dex文件,并对所述多个Dex文件中的主Dex文件进行优化处理,得到优化主Dex文件。
S602、响应第二操作指令,加载所述优化主Dex文件,并基于所述优化主Dex文件启动所述目标应用。
S603、在启动所述目标应用后,对所述至少一个其他Dex文件进行优化处理,得到至少一个优化其他Dex文件,并加载所述优化其他Dex文件,运行所述目标应用。
下面该运行方法应用于终端设备对本申请实施例提供的上述示例性的个步骤进行说明:
S601、响应第一操作指令,获取所述目标应用对应的多个Dex文件,并对所述多个Dex文件中的主Dex文件进行优化处理,得到优化主Dex文件。
本申请实施例中,第一操作指令为安装目标应用的安装指令,当用户安装目标应用对应的APK时,终端设备获取该目标应用对应的多个Dex文件,该多个Dex文件中包括主Dex文件和其他Dex文件,之后,对多个Dex文件中的主Dex文件进行优化处理,得到优化主Dex文件。
S602、响应第二操作指令,加载所述优化主Dex文件,并基于所述优化主Dex文件启动所述目标应用。
本申请实施例中,第二操作指令针对安装好的目标应用的启用指令,用户通过第二操作指令启动目标应用后,终端设备加载优化主Dex文件,并基于该优化主Dex文件启动目标应用。
S603、在启动所述目标应用后,对所述至少一个其他Dex文件进行优化处理,得到至少一个优化其他Dex文件,并加载所述优化其他Dex文件,运行所述目标应用。
这里,终端设备可以在优化主Dex文件的同时,对至少一个其他Dex文件进行优化处理,得到至少一个优化其他Dex文件并进行存储,在需要调用优化其他Dex文件时直接进行调用;或者,在目标应用启用后,需要使用其他Dex文件时,在优化相应的其他Dex文件,得到优化其他Dex文件,并通过加载优化其他Dex文件,运行该目标应用。
通过本申请实施例提供的上述目标应用的运行方法,能够快速运行目标应用,保证了目标应用不中断。
基于同一发明构思,本申请第三实施例还提供了与第一实施例提供的Dex文件的构建方法对应的Dex文件的构建装置,由于本申请第三实施例中的装置解决问题的原理与本申请第一实施例中上述Dex文件的构建方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图7所示,为本申请第三实施例提供的一种Dex文件的构建装置,所述构建装置包括:
获取模块701,用于获取目标应用对应的代码资源;
生成模块702,用于根据所述代码资源中的项目代码资源以及所述项目代码资源关联的依赖代码资源,生成主Dex文件对应的第一资源清单;
处理模块703,用于复制所述第一资源清单,得到备份第一资源清单;判断所述备份第一资源清单中的资源数量是否大于单个Dex文件对应的限制资源数量,若是,则对所述备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,并基于所述第二资源清单替换所述第一资源清单;其中,所述目标资源中至少包括启动所述目标应用的应用入口资源和加载其他Dex文件前引用的资源;
写入模块704,用于将替换后的所述第二资源清单中的目标资源写入所述主Dex文件中。
在一种可能的实施方式中,处理模块703复制所述第一资源清单,得到备份第一资源清单,包括:
监听目标任务的运行状态,所述目标任务在运行时用于生成所述主Dex文件对应的第一资源清单;
在监听到所述目标任务运行结束时,复制所述第一资源清单,得到备份第一资源清单。
在一种可能的实施方式中,所述Dex文件的构建装置,还包括:
构建模块,用于根据所述目标应用对应的构建类型和标识信息,构建所述目标任务。
在一种可能的实施方式中,处理模块703对所述备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,包括:
确定备份第一资源清单中启动所述目标应用的应用入口资源和加载其他Dex文件前引用的资源,得到第一资源;
从所述备份第一资源清单中删除除所述第一资源之外的其他资源,得到包括所述第一资源的第二资源清单。
在一种可能的实施方式中,处理模块703从所述备份第一资源清单中删除除所述第一资源之外的其他资源,得到包括所述第一资源的第二资源清单,包括:
根据所述第一资源的数量以及单个Dex文件对应的限制资源数量,从所述备份第一资源清单中选取第二资源;
从所述第一资源清单中删除除所述第一资源和所述第二资源之外的其他资源,得到包括所述第一资源和所述第二资源的第二资源清单。
在一种可能的实施方式中,所述构建装置还包括:
生成模块,还用于在生成主Dex文件对应的第一资源清单同时,生成其他Dex文件分别对应的第三资源清单;
更新模块,用于在基于所述第二资源清单替换所述第一资源清单之后,根据所述第二资源清单、所述代码资源中的项目代码资源以及所述项目代码资源关联的依赖代码资源,更新所述其他Dex文件分别对应的第三资源清单;
写入模块704,还用于将更新后的第三资源清单中的第三资源写入匹配的其他Dex文件中。
在一种可能的实施方式中,所述构建装置还包括:
第一确定模块,用于在检测到所述目标应用对应的代码资源的数量大于单个Dex文件对应的限制资源数量时,根据所述代码资源的总数量和所述单个Dex文件对应的限制资源数量,确定多个Dex文件;
第二确定模块,用于从所述多个Dex文件中,确定主Dex文件和其他Dex文件。
本申请实施例提供了一种Dex文件的构建方法,在特定的时机(即在生成主Dex文件对应的第一资源清单之后,在基于该第一资源清单进行分包之前),通过拦截主Dex文件对应的第一资源清单实现自主干预分包;当拦截第一资源清单后,若检测到第一资源清单中的资源数量大于单个Dex文件对应的限制资源数量时,则自主对第一资源清单进行删减处理,并至少保留特定的目标资源,这样,在保证目标应用正常启动的前提下,避免了目标应用构建失败的问题,且提高了目标应用的构建效率。
基于同一发明构思,本申请第四实施例还提供了第二实施例提供的目标应用的运行方法对应的目标应用的运行装置,由于本申请第四实施例中的装置解决问题的原理与本申请第二实施例中上述目标应用的运行方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图8所示,为本申请第四实施例提供的一种目标应用的运行装置,所述目标应用中包括多个Dex文件,其中,所述多个Dex文件是基于第一实施例所述的Dex文件的构建方法得到的;所述多个Dex文件包括主Dex文件和至少一个其他Dex文件;所述运行装置包括:
处理模块801,用于响应第一操作指令,获取所述目标应用对应的多个Dex文件,并对所述多个Dex文件中的主Dex文件进行优化处理,得到优化主Dex文件;
启动模块802,用于响应第二操作指令,加载所述优化主Dex文件,并基于所述优化主Dex文件启动所述目标应用;
运行模块803,用于在启动所述目标应用后,对所述至少一个其他Dex文件进行优化处理,得到至少一个优化其他Dex文件,并加载所述优化其他Dex文件,运行所述目标应用。
通过本申请实施例提供的上述目标应用的运行方法,能够快速运行目标应用,保证了目标应用不中断。
如图9所示,本申请第五实施例提供的一种电子设备900,包括:处理器901、存储器902和总线,所述存储器902存储有所述处理器901可执行的机器可读指令,当电子设备运行时,所述处理器901与所述存储器902之间通过总线通信,所述处理器901执行所述机器可读指令,以执行如上述第一实施例中的Dex文件的构建方法的步骤。
具体地,上述存储器902和处理器901能够为通用的存储器和处理器,这里不做具体限定,当处理器901运行存储器902存储的计算机程序时,能够执行上述第一实施例中的Dex文件的构建方法。
对应于上述第一实施例中的Dex文件的构建方法,本申请第六实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一实施例中的Dex文件的构建方法的步骤。
如图10所示,本申请第七实施例提供的一种电子设备1000,包括:处理器1001、存储器1002和总线,所述存储器1002存储有所述处理器1001可执行的机器可读指令,当电子设备运行时,所述处理器1001与所述存储器1002之间通过总线通信,所述处理器1001执行所述机器可读指令,以执行如上述第二实施例中的目标应用的运行方法的步骤。
具体地,上述存储器1002和处理器1001能够为通用的存储器和处理器,这里不做具体限定,当处理器1001运行存储器1002存储的计算机程序时,能够执行上述第二实施例中的目标应用的运行方法。
对应于上述第二实施例中的目标应用的运行方法,本申请第八实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第二实施例中的目标应用的运行方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (14)
1.一种Dex文件的构建方法,其特征在于,所述构建方法包括:
获取目标应用对应的代码资源;
根据所述代码资源中的项目代码资源以及所述项目代码资源关联的依赖代码资源,生成主Dex文件对应的第一资源清单;
复制所述第一资源清单,得到备份第一资源清单;判断所述备份第一资源清单中的资源数量是否大于单个Dex文件对应的限制资源数量,若是,则对所述备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,并基于所述第二资源清单替换所述第一资源清单;其中,所述目标资源中至少包括启动所述目标应用的应用入口资源和加载其他Dex文件前引用的资源;
将替换后的所述第二资源清单中的目标资源写入所述主Dex文件中。
2.根据权利要求1所述的Dex文件的构建方法,其特征在于,所述复制所述第一资源清单,得到备份第一资源清单,包括:
监听目标任务的运行状态,所述目标任务在运行时用于生成所述主Dex文件对应的第一资源清单;
在监听到所述目标任务运行结束时,复制所述第一资源清单,得到备份第一资源清单。
3.根据权利要求2所述的Dex文件的构建方法,其特征在于,通过如下方式构建所述目标任务,包括:
根据所述目标应用对应的构建类型和标识信息,构建所述目标任务。
4.根据权利要求1所述的Dex文件的构建方法,其特征在于,所述对所述备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,包括:
确定备份第一资源清单中启动所述目标应用的应用入口资源和加载其他Dex文件前引用的资源,得到第一资源;
从所述备份第一资源清单中删除除所述第一资源之外的其他资源,得到包括所述第一资源的第二资源清单。
5.根据权利要求4所述的Dex文件的构建方法,其特征在于,所述从所述备份第一资源清单中删除除所述第一资源之外的其他资源,得到包括所述第一资源的第二资源清单,包括:
根据所述第一资源的数量以及单个Dex文件对应的限制资源数量,从所述备份第一资源清单中选取第二资源;
从所述第一资源清单中删除除所述第一资源和所述第二资源之外的其他资源,得到包括所述第一资源和所述第二资源的第二资源清单。
6.根据权利要求1所述的Dex文件的构建方法,其特征在于,在生成主Dex文件对应的第一资源清单同时,所述构建方法还包括:
生成其他Dex文件分别对应的第三资源清单;
在基于所述第二资源清单替换所述第一资源清单之后,所述构建方法还包括:
根据所述第二资源清单、所述代码资源中的项目代码资源以及所述项目代码资源关联的依赖代码资源,更新所述其他Dex文件分别对应的第三资源清单;
将更新后的第三资源清单中的第三资源写入匹配的其他Dex文件中。
7.根据权利要求6所述的Dex文件的构建方法,其特征在于,通过如下方法确定主Dex文件和其他Dex文件,包括:
在检测到所述目标应用对应的代码资源的数量大于单个Dex文件对应的限制资源数量时,根据所述代码资源的总数量和所述单个Dex文件对应的限制资源数量,确定多个Dex文件;
从所述多个Dex文件中,确定主Dex文件和其他Dex文件。
8.一种目标应用的运行方法,其特征在于,所述目标应用中包括多个Dex文件,其中,所述多个Dex文件是基于权利要求1~7任一项所述的Dex文件的构建方法得到的;所述多个Dex文件包括主Dex文件和至少一个其他Dex文件;所述运行方法包括:
响应第一操作指令,获取所述目标应用对应的多个Dex文件,并对所述多个Dex文件中的主Dex文件进行优化处理,得到优化主Dex文件;
响应第二操作指令,加载所述优化主Dex文件,并基于所述优化主Dex文件启动所述目标应用;
在启动所述目标应用后,对所述至少一个其他Dex文件进行优化处理,得到至少一个优化其他Dex文件,并加载所述优化其他Dex文件,运行所述目标应用。
9.一种Dex文件的构建装置,其特征在于,所述构建装置包括:
获取模块,用于获取目标应用对应的代码资源;
生成模块,用于根据所述代码资源中的项目代码资源以及所述项目代码资源关联的依赖代码资源,生成主Dex文件对应的第一资源清单;
处理模块,用于复制所述第一资源清单,得到备份第一资源清单;判断所述备份第一资源清单中的资源数量是否大于单个Dex文件对应的限制资源数量,若是,则对所述备份第一资源清单进行删减处理,得到包括目标资源的第二资源清单,并基于所述第二资源清单替换所述第一资源清单;其中,所述目标资源中至少包括启动所述目标应用的应用入口资源和加载其他Dex文件前引用的资源;
写入模块,用于将替换后的所述第二资源清单中的目标资源写入所述主Dex文件中。
10.一种目标应用的运行装置,其特征在于,所述目标应用中包括多个Dex文件,其中,所述多个Dex文件是基于权利要求1~7任一项所述的Dex文件的构建方法得到的;所述多个Dex文件包括主Dex文件和至少一个其他Dex文件;所述运行装置包括:
处理模块,用于响应第一操作指令,获取所述目标应用对应的多个Dex文件,并对所述多个Dex文件中的主Dex文件进行优化处理,得到优化主Dex文件;
启动模块,用于响应第二操作指令,加载所述优化主Dex文件,并基于所述优化主Dex文件启动所述目标应用;
运行模块,用于在启动所述目标应用后,对所述至少一个其他Dex文件进行优化处理,得到至少一个优化其他Dex文件,并加载所述优化其他Dex文件,运行所述目标应用。
11.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至7任一项所述的Dex文件的构建方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至7任一项所述的Dex文件的构建方法的步骤。
13.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求8所述的目标应用的运行方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求8所述的目标应用的运行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011004872.7A CN112148300A (zh) | 2020-09-22 | 2020-09-22 | 一种Dex文件的构建方法、目标应用的运行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011004872.7A CN112148300A (zh) | 2020-09-22 | 2020-09-22 | 一种Dex文件的构建方法、目标应用的运行方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112148300A true CN112148300A (zh) | 2020-12-29 |
Family
ID=73897718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011004872.7A Pending CN112148300A (zh) | 2020-09-22 | 2020-09-22 | 一种Dex文件的构建方法、目标应用的运行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112148300A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113608725A (zh) * | 2021-07-16 | 2021-11-05 | 济南浪潮数据技术有限公司 | 一种对内存数据进行操作的方法、系统、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984158A (zh) * | 2017-05-31 | 2018-12-11 | 三星Sds株式会社 | 计算装置及在该计算装置中执行的方法 |
CN109947493A (zh) * | 2017-12-19 | 2019-06-28 | 珠海市君天电子科技有限公司 | 应用程序启动方法、装置、电子设备及存储介质 |
CN111552518A (zh) * | 2019-01-24 | 2020-08-18 | 阿里巴巴集团控股有限公司 | 一种启动应用的控件加载方法及装置 |
-
2020
- 2020-09-22 CN CN202011004872.7A patent/CN112148300A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984158A (zh) * | 2017-05-31 | 2018-12-11 | 三星Sds株式会社 | 计算装置及在该计算装置中执行的方法 |
CN109947493A (zh) * | 2017-12-19 | 2019-06-28 | 珠海市君天电子科技有限公司 | 应用程序启动方法、装置、电子设备及存储介质 |
CN111552518A (zh) * | 2019-01-24 | 2020-08-18 | 阿里巴巴集团控股有限公司 | 一种启动应用的控件加载方法及装置 |
Non-Patent Citations (2)
Title |
---|
清浊决: "Android性能优化:让App启动更加快速", pages 1 - 5, Retrieved from the Internet <URL:《https://blog.csdn.net/zzp_szu/article/details/104916772》> * |
编码博客控: "我是如何一步一步爬上 "64K限制" 的坑 | 经验贴", pages 1 - 7, Retrieved from the Internet <URL:《https://blog.csdn.net/qq_21118431/article/details/106366556》> * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113608725A (zh) * | 2021-07-16 | 2021-11-05 | 济南浪潮数据技术有限公司 | 一种对内存数据进行操作的方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8499289B2 (en) | Method, device and system for realizing kernel online patching | |
EP2557498B1 (en) | Updating method and computer system for hypervisor components | |
US7971201B2 (en) | Multiple operating device version software generating system and multiple operating device version software generation support program and method | |
US8621279B1 (en) | System and method for generating emulation-based scenarios for Error Handling | |
US20160048391A1 (en) | Systems and methods for incremental software development | |
CN111367510B (zh) | 一种安卓功能模块开发的方法及装置 | |
WO2018045733A1 (zh) | 一种安卓系统so文件的加载方法及电子设备 | |
US8762967B2 (en) | Program compiler, program installer, and program install method | |
US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
CN112433747B (zh) | 一种适用于软件开发工具包sdk的差分升级方法及系统 | |
US20120198431A1 (en) | Method for upgrading hypervisor component and computer system | |
CN110659031A (zh) | 应用程序的编译方法、装置、电子设备及存储介质 | |
CN112130926B (zh) | 应用程序运行的方法、装置、终端设备及存储介质 | |
CN111552524A (zh) | 一种插件加载方法、装置及计算机可读存储介质 | |
CN114217787A (zh) | 组件化应用程序的开发方法、装置及存储介质 | |
CN112148300A (zh) | 一种Dex文件的构建方法、目标应用的运行方法及装置 | |
US10552135B1 (en) | Reducing a size of an application package | |
CN113454606B (zh) | 不同编译的可执行文件之间的软件检查点-恢复 | |
CN115220873A (zh) | 一种在Android系统中运行Open Harmony应用的方法 | |
KR20130020135A (ko) | 통합 개발 환경에서의 코드 동시 개발자 리스트 제공 시스템 및 방법 | |
CN112685063A (zh) | 特征库更新方法、装置、网络设备及可读存储介质 | |
CN113031956A (zh) | 程序编译方法和装置以及程序运行方法和装置 | |
CN112579113A (zh) | 应用程序的升级方法、装置、存储介质及终端 | |
RU2521265C2 (ru) | Система и способ автоматической обработки системных ошибок программного обеспечения | |
EP4276610A1 (en) | Exception handling method and relevant apparatus |
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 |