CN113032045A - 应用程序的启动方法以及相关装置、设备 - Google Patents

应用程序的启动方法以及相关装置、设备 Download PDF

Info

Publication number
CN113032045A
CN113032045A CN202110304096.0A CN202110304096A CN113032045A CN 113032045 A CN113032045 A CN 113032045A CN 202110304096 A CN202110304096 A CN 202110304096A CN 113032045 A CN113032045 A CN 113032045A
Authority
CN
China
Prior art keywords
application program
starting
class files
package
android
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
Application number
CN202110304096.0A
Other languages
English (en)
Other versions
CN113032045B (zh
Inventor
缪定凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Huya Technology Co Ltd
Original Assignee
Guangzhou Huya Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangzhou Huya Technology Co Ltd filed Critical Guangzhou Huya Technology Co Ltd
Priority to CN202110304096.0A priority Critical patent/CN113032045B/zh
Publication of CN113032045A publication Critical patent/CN113032045A/zh
Application granted granted Critical
Publication of CN113032045B publication Critical patent/CN113032045B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

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

Abstract

本申请公开了应用程序的启动方法以及相关装置、设备,其中,应用程序的启动方法包括:响应于接收到应用程序的预启动指令,获取到应用程序的初始安卓应用程序包;其中,初始安卓应用程序包包括应用程序的多个类文件;通过初始安卓应用程序包预启动应用程序,得到多个类文件在预启动过程中的加载顺序;按照加载顺序调整多个类文件的排列顺序;基于调整排列顺序后的多个类文件,重新构建出应用程序的新的安卓应用程序包;响应于接收到应用程序的启动指令,基于新的安卓应用程序包启动应用程序。上述方案,能够提高应用程序的启动速度。

Description

应用程序的启动方法以及相关装置、设备
技术领域
本申请涉及应用程序的启动的技术领域,特别是涉及应用程序的启动方法以及相关装置、设备。
背景技术
随着互联网技术的高速发展,互联网技术的功能越来越多样化和高效化。其中,用户在使用应用程序的过程中,对应用程序的启动速度的需求越来越高。
应用程序的启动速度是用户体验的一个重要部分,甚至对用户留存和转化都有一定的影响。尤其是业务比较复杂的应用程序,其启动时需要的时间较多,启动所需完成的任务进程比较复杂,优化的难度较大。
常规的优化方式主要是基于项目工程代码或资源对应用程序进行优化,例如:业务优化、算法优化、线程优化等等。但上述优化方法一般较为复杂。
发明内容
本申请提供了应用程序的启动方法以及相关装置、设备,解决现有技术中存在的应用程序的启动速度较慢的问题。
本申请提供了一种应用程序的启动方法,应用程序的启动方法应用于安卓系统,包括:响应于接收到应用程序的预启动指令,获取到应用程序的初始安卓应用程序包;其中,初始安卓应用程序包包括应用程序的多个类文件;通过初始安卓应用程序包预启动应用程序,得到多个类文件在预启动过程中的加载顺序;按照加载顺序调整多个类文件的排列顺序;基于调整排列顺序后的多个类文件,重新构建出应用程序的新的安卓应用程序包;响应于接收到应用程序的启动指令,基于新的安卓应用程序包启动应用程序。
其中,响应于接收到应用程序的预启动指令,获取到应用程序的初始安卓应用程序包的步骤包括:响应于接收到应用程序的预启动指令,获取到应用程序的多个类文件;基于多个类文件构建出应用程序的初始安卓应用程序包。
其中,基于调整排列顺序后的多个类文件,重新构建出应用程序的新的安卓应用程序包的步骤包括:将新的安卓应用程序包安装至存储器中;响应于接收到应用程序的启动指令,基于新的安卓应用程序包启动应用程序的步骤包括:响应于接收到应用程序的启动指令,从存储器中按照调整后的排列顺序获取至少部分类文件,以启动应用程序。
其中,基于调整排列顺序后的多个类文件,重新构建出应用程序的新的安卓应用程序包的步骤包括:对调整排列顺序后的多个类文件进行打包,生成应用程序的dex文件;基于dex文件重新构建出应用程序的新的安卓应用程序包。
其中,响应于接收到应用程序的预启动指令,获取到应用程序的初始安卓应用程序包的步骤包括:对各个类文件进行标记;基于标记后的多个类文件构建出初始安卓应用程序包;通过初始安卓应用程序包预启动应用程序,得到多个类文件在预启动过程中的加载顺序的步骤包括:通过初始安卓应用程序包预启动应用程序;基于每个类文件的标记得到多个类文件的加载顺序。
其中,基于每个类文件的标记得到多个类文件的加载顺序的步骤包括:获取到应用程序在预启动过程中的日志文件;基于日志文件中各个类文件的标记得到多个类文件的加载顺序。
其中,按照加载顺序调整多个类文件的排列顺序的步骤包括:按照加载顺序通过预设格式的二进制处理工具调整多个类文件的排列顺序。
本申请还提供了一种应用程序的启动装置,应用程序的启动装置应用于安卓系统,包括:获取模块,用于响应于接收到应用程序的预启动指令,获取到应用程序的初始安卓应用程序包;其中,初始安卓应用程序包包括应用程序的多个类文件;预启动模块,用于通过初始安卓应用程序包预启动应用程序,得到多个类文件在启动过程中的加载顺序;调整模块,用于按照加载顺序调整多个类文件的排列顺序;构建模块,用于基于调整排列顺序后的多个类文件,重新构建出应用程序的新的安卓应用程序包;启动模块,用于响应于接收到应用程序的启动指令,基于新的安卓应用程序包启动应用程序。
本申请还提供了一种电子设备,包括相互耦接的存储器和处理器,处理器用于执行存储器中存储的程序指令,以实现上述任意一应用程序的启动方法。
本申请还提供了一种计算机可读存储介质,其上存储有程序指令,程序指令被处理器执行时实现上述任意一应用程序的启动方法。
上述方案,本申请通过在正式启动应用程序之前,先基于应用程序的预启动指令,通过初始安卓应用程序包预启动应用程序,从而得到多个类文件在启动过程中的加载顺序,在按照加载顺序调整多个类文件的排列顺序后,基于调整排列顺序后的多个类文件,重新构建出应用程序的新的安卓应用程序包,最后将新的安卓应用程序包应用于获取到应用程序的启动指令后应用程序的启动,从而使得后续应用程序的启动可以直接按照加载顺序依次从新的卓应用程序包中获取到多个所需的类文件,避免在启动过程中,需要加载当前类文件时遍历整个新的安卓应用程序包中的所有类文件,才能获得所需的类文件进行加载的情况发生,进而提高应用程序的启动速度。
附图说明
图1是本申请应用程序的启动方法一实施例的流程示意图;
图2是本申请应用程序的启动方法另一实施例的流程示意图;
图3是本申请应用程序的启动装置一实施例的框架示意图;
图4是本申请电子设备一实施例的框架示意图;
图5为本申请计算机可读存储介质一实施例的框架示意图。
具体实施方式
下面结合说明书附图,对本申请实施例的方案进行详细说明。
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。
本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,可以存在三种关系,例如,A和/或B,可以:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般前后关联对象是一种“或”的关系。此外,本文中的“多”两个或者多于两个。
请参阅图1,图1是本申请应用程序的启动方法一实施例的流程示意图。本实施例的应用程序的启动方法是针对安卓系统下的应用程序的启动所进行的优化。
步骤S11:响应于接收到应用程序的预启动指令,获取到应用程序的初始安卓应用程序包;其中,初始安卓应用程序包包括应用程序的多个类文件。
响应于接收到应用程序的预启动指令,获取应用程序的初始安卓应用程序包。其中,初始安卓应用程序包中包括有应用程序的多个类文件。其中,本实施例的初始安卓应用程序包可以为应用程序的安装包。而类(Class)文件是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。
在一个具体的应用场景中,预启动指令可以是用户向智能终端下发正式启动应用程序的指令。在另一个具体的应用场景中,预启动指令也可以是在用户向智能终端下发的启动应用程序的指令之前,由其他人员或测试程序向智能终端下发的预启动应用程序的指令。具体在此不做限定。其中,本实施例的智能终端包括移动终端或PC终端等智能终端,在此不做限定。
步骤S12:通过初始安卓应用程序包预启动应用程序,得到多个类文件在预启动过程中的加载顺序。
通过获取的应用程序的初始安卓应用程序包预启动应用程序。其中,在应用程序的预启动过程中,智能终端会按照启动需求从初始安卓应用程序包中依次加载所需的多个类文件,以完成应用程序的启动。因此,本步骤通过初始安卓应用程序包来预先启动应用程序,能够在应用程序的预启动过程中,确定多个类文件在预启动过程中的加载顺序。
其中,本实施例的预启动与应用程序的正常启动过程本质上相同。因此,预启动过程中多个类文件的加载顺序即为多个类文件在正式启动过程中的加载顺序。
步骤S13:按照加载顺序调整多个类文件的排列顺序。
获取了多个类文件在应用程序启动过程中的加载顺序后,按照加载顺序调整多个类文件的排列顺序,使多个类文件的排列顺序与应用程序启动过程中对多个类文件的加载顺序相同。
在一个具体的应用场景中,可以通过人工调整的方式按照加载顺序对多个类文件的排列顺序进行调整。在另一个具体的应用场景中,也可以通过预设格式的二进制处理工具按照加载顺序调整多个类文件的排列顺序。具体的调整方式在此不做限定。其中,预设格式可以根据实际情况进行设置,在此不做限定。
步骤S14:基于调整排列顺序后的多个类文件,重新构建出应用程序的新的安卓应用程序包。
基于调整排列顺序后的多个类文件,重新构建出应用程序的新的安卓应用程序包,其中,新的安卓应用程序包中的多个类文件的排列顺序与加载顺序相同。
其中,重新构建出新的安卓应用程序包后,后续应用程序的启动都可以基于新的安卓程序包进行实现。
步骤S15:响应于接收到应用程序的启动指令,基于新的安卓应用程序包启动应用程序。
当接收到应用程序的启动指令后,基于调整了类文件的排列顺序的新的安卓应用程序包启动应用程序。其中,由于新的安卓应用程序包中类文件的排列顺序与应用程序启动时所需加载的类文件的加载顺序相同,因此,在加载新的安卓应用程序中的类文件时,可以直接按照加载顺序依次获取到多个类文件,避免在启动过程中,智能终端需要遍历整个新的安卓应用程序包中的所有类文件,才能按需获得所需的类文件进行加载的情况发生。
通过上述方法,本实施例的应用程序的启动方法通过在正式启动应用程序之前,先基于应用程序的预启动指令,通过初始安卓应用程序包预启动应用程序,从而得到多个类文件在启动过程中的加载顺序,在按照加载顺序调整多个类文件的排列顺序后,基于调整排列顺序后的多个类文件,重新构建出应用程序的新的安卓应用程序包,最后将新的安卓应用程序包应用于获取到启动指令后的应用程序的启动,从而使得后续应用程序的启动可以直接按照加载顺序依次从新的安卓应用程序包中获取到多个所需的类文件,避免在启动过程中,智能终端需要遍历整个新的安卓应用程序包中的所有类文件,才能获得所需的类文件进行加载的情况发生,提高加载多个类文件的速度,进而加快应用程序的启动速度。
请参阅图2,图2是本申请应用程序的启动方法另一实施例的流程示意图。本实施例的应用程序的启动方法是针对安卓系统下的应用程序的启动所进行的优化。
步骤S21:响应于接收到应用程序的预启动指令,获取到应用程序的多个类文件,基于多个类文件构建出应用程序的初始安卓应用程序包。
响应于接收到应用程序的预启动指令,先获取到应用程序的代码。通过编译器对应用程序的代码进行编译,从而得到应用程序的多个类文件。其中,本实施例的编译器可以包括Java编译器或其他编译器,具体可以根据实际需求进行设置,在此不做限定。
得到应用程序的多个类文件后,通过字节码操作工具给每个类文件中插入一段静态代码,以对每个类文件进行标记。其中,字节码操作工具可以包括ASM(一种通用Java字节码操作和分析框架)、Aspectj(一个面向切面的框架)等操作工具,具体可以根据实际需求进行设置,在此不做限定。
在一个具体的应用场景中,可以将静态代码Log.i("",Test.class.getCanonicalName());插入到类文件中:
Figure BDA0002987418030000071
上述静态代码在应用程序的启动过程中,即每个类文件的加载过程中都会在对应的日志文件中显示出相应的标记,从而通过预启动初始安卓应用程序包,能够基于其中的每个类文件在日志文件中的标记来确定应用程序的启动所需的目标类文件在应用程序的启动过程中的加载顺序。
在一个具体的应用场景中,本实施例的初始安卓应用程序包为APK(全称:Androidapplication package,Android应用程序包)是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个Android应用程序的代码如果要在Android设备上运行,需要先进行编译,然后被打包成为能被Android系统识别的APK文件才可以进行运行。其中,APK文件内包括被编译的代码文件(dex文件),文件资源(resources),原生资源文件(assets),证书(certificates)和清单文件(manifest file)。
通过对应用程序的代码进行编译得到多个类文件,以及在每个类文件中插入静态代码后,将多个类文件打包成第一dex文件,再基于第一dex文件构建出应用程序的初始应用程序包。
将初始应用程序包安装至存储器中,从而对应用程序进行部署,以利于应用程序的启动和运行。
步骤S22:通过初始安卓应用程序包预启动应用程序,得到多个类文件在预启动过程中的加载顺序。
将初始安卓应用程序包安装至存储器上后,基于预启动指令通过初始安卓应用程序包预启动应用程序。具体地,智能终端从存储器中调用初始应用程序包中的dex文件内的多个目标类文件进行加载,从而预启动应用程序。其中,本实施例的存储器包括内部存储器和外部存储器,例如:磁盘、内存、硬盘等。
当应用程序被启动时,其启动所需的类文件可能是整个初始应用程序包中的dex文件内的部分目标类文件。因此,在每个类文件被标记的情况下,当预启动过程中部分类文件被加载时,其会在对应的日志文件中显示出相应的标记。则对日志文件进行分析即可根据日志文件中的标记信息获得到预启动过程中所需的目标类文件及其数量和加载顺序。
其中,日志文件是用于记录系统操作事件的记录文件或文件集合,在本实施例中,日志文件随着应用程序的预启动进行生成,其记录有应用程序的预启动事件的相关信息。
步骤S23:按照加载顺序通过预设格式的二进制处理工具调整多个类文件的排列顺序。
获取到目标类文件的数量和加载顺序后,按照加载顺序通过预设格式的二进制处理工具调整应用程序的多个类文件的排列顺序,以使应用程序的多个类文件的排列顺序与预启动是多个类文件的加载顺序相同。其中,在实际应用中,应用程序启动时所需的类文件数量可能只是应用程序的全部类文件中的一部分,则本步骤可以只对启动应用程序所需的部分目标类文件进行排列顺序的调整。
在一个具体的应用场景中,当整个应用程序的类文件有10万个时,其启动所需的目标类文件的数量可能为1万个,则在步骤S22中会获取到该1万个目标类文件的加载顺序,而在本步骤的调整过程中,只需将整个应用程序的10万个类文件中的该1万个目标类文件的顺序进行调整即可。具体地,按照该1万个目标类文件在启动过程中被加载的先后顺序,调整该1万个目标类文件自身的排列先后顺序,并将整个1万个目标类文件的顺序排列到10万个类文件的前列,从而使得所有目标类文件都位于多个类文件的前列,便于被调用加载。
在一个具体的应用场景中,可以按照加载顺序通过Interdex工具(特定格式的二进制处理工具)来调整多个目标类文件的排列顺序。在另一个具体的应用场景中,可以通过人工编写相应的二进制处理工具来按照加载顺序调整多个目标类文件的排列顺序。具体地调整手段在此不做限定。
步骤S24:对调整排列顺序后的多个类文件进行打包,生成应用程序的dex文件,基于dex文件重新构建出应用程序的新的安卓应用程序包。
对已经过排列顺序的调整后的多个类文件,即应用程序的全部类文件进行打包,以重新生成应用程序的第二dex文件,其中,第二dex文件中的类文件的排列顺序与第一dex文件中的类文件的排列顺序不同。
基于第二dex文件重新打包进而构建出应用程序的新的安卓应用程序包。
步骤S25:将新的安卓应用程序包安装至存储器中。
将新的安卓应用程序包重新安装至存储器中,并替换初始安卓应用程序包的相关内容,后续应用程序的启动和运行基于新的安卓应用程序包进行。
在一个具体的应用场景中,可以将新的安卓应用程序包重新安装至磁盘中,以避免占用内存,进而影响智能终端的处理速度。
步骤S26:响应于接收到应用程序的启动指令,从存储器中按照调整后的排列顺序获取至少部分类文件,以启动应用程序。
响应于接收到应用程序的启动指令,从存储器中获取所需的目标类文件。其中,由于启动所需的目标类文件已经按照加载顺序进行了排列,因此智能终端可以依次从存储器中获取其所需的目标类文件,减少了对存储器进行多次遍历才能按需获取到所需的目标类文件的情况发生,进而减少了对存储器中的存储内容进行多次读取的情况,从而加快了智能终端获取目标类文件的速度,进而加快了应用程序的启动速度。
在一个具体的应用场景中,当新的安卓应用程序包存储在磁盘中时,由于启动所需的加载顺序与目标类文件的排列顺序相同,智能终端能够从磁盘中按需查找多个类文件序列中的前列类文件即可快速获取到当前所需的目标类文件,从而减少了对磁盘进行多次遍历才能够获取到目标类文件的I/O操作。由于磁盘本身的数据读写速度较慢,因此,本实施例的重新排列类文件的方法能够在有效减少磁盘的I/O操作的情况下实现磁盘的数据传输,进而大幅提高了应用程序的启动速度。
通过上述方法,本实施例的应用程序的启动方法通过在正式启动应用程序之前,先基于应用程序的预启动指令,对应用程序的代码进行编译,得到应用程序的多个类文件。对多个类文件进行标记后,基于标记后的类文件生成初始安卓应用程序包,将初始安卓应用程序包安装后预启动应用程序,从而分析预启动过程中生成的日志文件中的标记情况得到多个类文件在启动过程中的加载顺序。本实施例通过对每个类文件进行标记的方式能够在预启动过程中基于标记准确地获取多个类文件的加载顺序,从而提高后续调整顺序后的多个类文件顺序与启动时智能终端所需的类文件的顺序的匹配度。在按照加载顺序调整多个类文件的排列顺序后,基于调整排列顺序后的多个类文件,重新构建出应用程序的新的安卓应用程序包,最后将新的安卓应用程序包安装至存储器中后,基于应用程序的启动指令从存储器中加载所需的类文件。由于启动时,类文件的加载顺序与存储器中安卓应用程序包内的类文件的排列顺序相同,因此在启动过程中能够有效减少对存储器的读取操作的情况下实现数据获取,避免在启动过程中,智能终端加载当前所需的类文件时需要遍历整个新的安卓应用程序包中的所有类文件,才能获得所需的类文件进行加载的情况发生,提高类文件的获取速度,进而应用程序的启动速度。
请参阅图3,图3是本申请应用程序的启动装置一实施例的框架示意图。应用程序的启动装置30包括获取模块31、预启动模块32、调整模块33、构建模块34以及启动模块35。获取模块31,用于响应于接收到应用程序的预启动指令,获取到应用程序的初始安卓应用程序包;其中,初始安卓应用程序包包括应用程序的多个类文件;预启动模块32用于通过初始安卓应用程序包预启动应用程序,得到多个类文件在启动过程中的加载顺序;调整模块33,用于按照加载顺序调整多个类文件的排列顺序;构建模块34用于基于调整排列顺序后的多个类文件,重新构建出应用程序的新的安卓应用程序包;启动模块35,用于响应于接收到应用程序的启动指令,基于新的安卓应用程序包启动应用程序。
获取模块31还用于响应于接收到应用程序的预启动指令,获取到应用程序的多个类文件;基于多个类文件构建出应用程序的初始安卓应用程序包。
构建模块34还用于将新的安卓应用程序包安装至存储器中;启动模块35还用于响应于接收到应用程序的启动指令,从存储器中按照调整后的排列顺序获取至少部分类文件,以启动应用程序。
构建模块34还用于对调整排列顺序后的多个类文件进行打包,生成应用程序的dex文件;基于dex文件重新构建出应用程序的新的安卓应用程序包。
获取模块31还用于对各个类文件进行标记;基于标记后的多个类文件构建出初始安卓应用程序包;预启动模块32还用于通过初始安卓应用程序包预启动应用程序;基于每个类文件的标记得到多个类文件的加载顺序。
预启动模块32还用于获取到应用程序在预启动过程中的日志文件;基于日志文件中各个类文件的标记得到多个类文件的加载顺序。
调整模块33还用于按照加载顺序通过预设格式的二进制处理工具调整多个类文件的排列顺序。
上述方案,能够提高应用程序的启动速度。
请参阅图4,图4是本申请电子设备一实施例的框架示意图。电子设备40包括相互耦接的存储器41和处理器42,处理器42用于执行存储器41中存储的程序指令,以实现上述任一应用程序的启动方法实施例的步骤。在一个具体的实施场景中,电子设备40可以包括但不限于:微型计算机、服务器,此外,电子设备40还可以包括笔记本电脑、平板电脑等移动设备,在此不做限定。
具体而言,处理器42用于控制其自身以及存储器41以实现上述任一应用程序的启动方法实施例的步骤。处理器42还可以称为CPU(Central Processing Unit,中央处理单元)。处理器42可能是一种集成电路芯片,具有信号的处理能力。处理器42还可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器42可以由集成电路芯片共同实现。
上述方案,能够提高应用程序的启动速度。
请参阅图5,图5为本申请计算机可读存储介质一实施例的框架示意图。计算机可读存储介质50存储有能够被处理器运行的程序指令501,程序指令501用于实现上述任一应用程序的启动方法实施例的步骤。
上述方案,既能提高文字与动态图片的混合排列效果,又能动态播放混合排列后的动态图片。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (10)

1.一种应用程序的启动方法,其特征在于,所述应用程序的启动方法应用于安卓系统,包括:
响应于接收到应用程序的预启动指令,获取到所述应用程序的初始安卓应用程序包;其中,所述初始安卓应用程序包包括所述应用程序的多个类文件;
通过所述初始安卓应用程序包预启动所述应用程序,得到所述多个类文件在预启动过程中的加载顺序;
按照所述加载顺序调整所述多个类文件的排列顺序;
基于调整排列顺序后的多个类文件,重新构建出所述应用程序的新的安卓应用程序包;
响应于接收到应用程序的启动指令,基于所述新的安卓应用程序包启动所述应用程序。
2.根据权利要求1所述的应用程序的启动方法,其特征在于,所述响应于接收到应用程序的预启动指令,获取到所述应用程序的初始安卓应用程序包的步骤包括:
响应于接收到应用程序的预启动指令,获取到所述应用程序的多个类文件;
基于多个类文件构建出所述应用程序的初始安卓应用程序包。
3.根据权利要求1所述的应用程序的启动方法,其特征在于,所述基于调整排列顺序后的多个类文件,重新构建出所述应用程序的新的安卓应用程序包的步骤包括:
将所述新的安卓应用程序包安装至存储器中;
所述响应于接收到应用程序的启动指令,基于所述新的安卓应用程序包启动所述应用程序的步骤包括:
响应于接收到应用程序的启动指令,从所述存储器中按照调整后的排列顺序获取至少部分所述类文件,以启动所述应用程序。
4.根据权利要求1或3所述的应用程序的启动方法,其特征在于,所述基于调整排列顺序后的多个类文件,重新构建出所述应用程序的新的安卓应用程序包的步骤包括:
对调整排列顺序后的多个类文件进行打包,生成应用程序的dex文件;
基于所述dex文件重新构建出所述应用程序的新的安卓应用程序包。
5.根据权利要求1所述的应用程序的启动方法,其特征在于,所述响应于接收到应用程序的预启动指令,获取到所述应用程序的初始安卓应用程序包的步骤包括:
对各个所述类文件进行标记;
基于标记后的多个类文件构建出所述初始安卓应用程序包;
所述通过所述初始安卓应用程序包预启动所述应用程序,得到所述多个类文件在预启动过程中的加载顺序的步骤包括:
通过所述初始安卓应用程序包预启动所述应用程序;
基于每个类文件的标记得到多个类文件的加载顺序。
6.根据权利要求5所述的应用程序的启动方法,其特征在于,所述基于每个类文件的标记得到多个类文件的加载顺序的步骤包括:
获取到所述应用程序在预启动过程中的日志文件;
基于所述日志文件中各个所述类文件的标记得到多个类文件的加载顺序。
7.根据权利要求1所述的应用程序的启动方法,其特征在于,所述按照所述加载顺序调整所述多个类文件的排列顺序的步骤包括:
按照所述加载顺序通过预设格式的二进制处理工具调整多个类文件的排列顺序。
8.一种应用程序的启动装置,其特征在于,所述应用程序的启动装置应用于安卓系统,包括:
获取模块,用于响应于接收到应用程序的预启动指令,获取到所述应用程序的初始安卓应用程序包;其中,所述初始安卓应用程序包包括所述应用程序的多个类文件;
预启动模块,用于通过所述初始安卓应用程序包预启动所述应用程序,得到所述多个类文件在启动过程中的加载顺序;
调整模块,用于按照所述加载顺序调整所述多个类文件的排列顺序;
构建模块,用于基于调整排列顺序后的多个类文件,重新构建出所述应用程序的新的安卓应用程序包;
启动模块,用于响应于接收到应用程序的启动指令,基于所述新的安卓应用程序包启动所述应用程序。
9.一种电子设备,其特征在于,包括相互耦接的存储器和处理器,所述处理器用于执行所述存储器中存储的程序指令,以实现如权利要求1至7任一项所述的应用程序的启动方法。
10.一种计算机可读存储介质,其上存储有程序指令,其特征在于,所述程序指令被处理器执行时实现如权利要求1至7任一项所述的应用程序的启动方法。
CN202110304096.0A 2021-03-22 2021-03-22 应用程序的启动方法以及相关装置、设备 Active CN113032045B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110304096.0A CN113032045B (zh) 2021-03-22 2021-03-22 应用程序的启动方法以及相关装置、设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110304096.0A CN113032045B (zh) 2021-03-22 2021-03-22 应用程序的启动方法以及相关装置、设备

Publications (2)

Publication Number Publication Date
CN113032045A true CN113032045A (zh) 2021-06-25
CN113032045B CN113032045B (zh) 2024-03-01

Family

ID=76472522

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110304096.0A Active CN113032045B (zh) 2021-03-22 2021-03-22 应用程序的启动方法以及相关装置、设备

Country Status (1)

Country Link
CN (1) CN113032045B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109669735A (zh) * 2018-12-07 2019-04-23 武汉斗鱼鱼乐网络科技有限公司 基于延时注册的应用启动方法、装置和存储介质
CN112463303A (zh) * 2020-12-01 2021-03-09 中国工商银行股份有限公司 Java虚拟机类加载方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109669735A (zh) * 2018-12-07 2019-04-23 武汉斗鱼鱼乐网络科技有限公司 基于延时注册的应用启动方法、装置和存储介质
CN112463303A (zh) * 2020-12-01 2021-03-09 中国工商银行股份有限公司 Java虚拟机类加载方法及系统

Also Published As

Publication number Publication date
CN113032045B (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
CN107506221B (zh) 应用程序升级方法、装置及设备
US9274768B2 (en) Runtime code hooking for print driver and functionality testing
US6571388B1 (en) Building a custom software environment including pre-loaded classes
EP2966566B1 (en) Driver program loading method and embedded device
US8943486B2 (en) Multiple instruction execution mode resource-constrained device
US9990194B2 (en) Preservation of backward compatibility for java card cap files
CN106796521B (zh) 独立于产品发布的api版本控制
CN106850650B (zh) 用于游戏客户端访问数据的方法及客户端游戏系统
WO2004010295A2 (en) Method and apparatus for instrumentation on/off
CN112099800A (zh) 代码数据的处理方法、装置和服务器
CN112130926B (zh) 应用程序运行的方法、装置、终端设备及存储介质
CN112667246A (zh) 应用功能扩展的方法、装置及电子设备
CN114895935A (zh) 刷写车辆ecu的方法、装置、电子设备及存储介质
US10552135B1 (en) Reducing a size of an application package
CN110688320B (zh) 全局变量的检测方法、装置及终端设备
CN111625225A (zh) 一种程序指定数据输出方法和装置
CN113032045B (zh) 应用程序的启动方法以及相关装置、设备
CN115994003A (zh) 操作系统中共享对象的处理方法及处理装置
CN113641389B (zh) 基于OpenCPU的软件升级方法、装置及设备
EP1710697A1 (en) Method and apparatus for executing application in system having NAND flash memory
CN114816816A (zh) 崩溃堆栈信息处理方法、装置、设备及存储介质
CN111488282B (zh) 业务功能处理方法、装置、电子设备及存储介质
CN115080114A (zh) 应用程序的移植处理方法、装置和介质
CN110502251B (zh) 应用安装方法及装置
WO2019157891A1 (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