CN109947493A - 应用程序启动方法、装置、电子设备及存储介质 - Google Patents
应用程序启动方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN109947493A CN109947493A CN201711372189.7A CN201711372189A CN109947493A CN 109947493 A CN109947493 A CN 109947493A CN 201711372189 A CN201711372189 A CN 201711372189A CN 109947493 A CN109947493 A CN 109947493A
- Authority
- CN
- China
- Prior art keywords
- executable file
- application program
- starting
- target process
- load
- 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
- 238000000034 method Methods 0.000 title claims abstract description 280
- 230000008569 process Effects 0.000 claims abstract description 217
- 230000000903 blocking effect Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种应用程序启动方法、装置、电子设备及存储介质,应用程序启动过程中,首先判断是否满足启动用以加载副可执行文件的目标进程的预设条件;如果满足,启动一个进程,作为目标进程;再利用目标进程加载应用程序的副可执行文件;最后在副可执行文件被加载完成后,启动该应用程序的主进程,并利用主进程执行除加载副可执行文件外的业务逻辑,完成该应用程序的启动。其中,副可执行文件为该应用程序所对应所有可执行文件中除主可执行文件的其他可执行文件。与现有技术相比,本发明实施例提供的方案,可以避免因主进程执行除加载副可执行文件外的其他业务逻辑时所需的数据和资源未被加载而出现的系统崩溃现象。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种应用程序启动方法、装置、电子设备及存储介质。
背景技术
应用程序的安装包中包含有可执行文件,可执行文件用来运行应用程序的已编译代码。在某些操作系统中,一个可执行文件内可引用的方法总数是有限制的。为了绕开这个限制,可以针对一个应用程序设置多个可执行文件。例如,在Android(安卓)系统中,可执行文件为Dalvik Executable(DEX)文件,一个DEX文件内可引用的方法总数限制在65536条,人们可以通过针对一个应用程序设置多个DEX文件的方式来避开上述方法数的限制。
现有技术中,应用程序设置多个可执行文件时,其中一个会被作为主可执行文件。在安装应用程序时,该主可执行文件即被加载,但除主可执行文件外的其他可执行文件不会被加载,这些未被加载的可执行文件会在用户设备第一次启动应用程序时由应用程序的主进程进行加载,即应用程序的第一次启动过程中伴有可执行文件的加载操作。
应用程序的主进程在加载上述未被加载的可执行文件的过程中,也会同时执行启动应用程序的其他逻辑,而由于执行其他逻辑所需的数据和资源等可能还未被从可执行文件中加载出来,故上述其他逻辑可能无法成功被执行,导致应用程序启动过程中的系统崩溃现象。
发明内容
本发明实施例的目的在于提供一种应用程序启动方法、装置、电子设备及存储介质,以将可执行文件的加载过程与执行应用程序的其他逻辑分开,避免上述系统崩溃现象的出现。具体技术方案如下:
为达上述目的,第一方面,本发明实施例提供了一种应用程序启动方法,所述方法包括:
在启动应用程序时,判断是否满足启动用以加载副可执行文件的目标进程的预设条件,其中,所述副可执行文件为所述应用程序所对应所有可执行文件中除主可执行文件的其他可执行文件;
如果满足,启动一个进程,作为目标进程;
利用所述目标进程加载所述副可执行文件;
在所述副可执行文件被加载完成后,启动所述应用程序的主进程,并利用所述主进程执行除加载所述副可执行文件外的业务逻辑,完成所述应用程序的启动。
可选的,所述在启动应用程序时,判断是否满足启动用以加载副可执行文件的目标进程的预设条件的步骤,包括:
在启动应用程序时,判断是否存在所述应用程序所对应未加载的副可执行文件;
如果存在,判定满足启动用以加载副可执行文件的目标进程的预设条件。
可选的,在所述判断是否满足启动用以加载副可执行文件的目标进程的预设条件之前,所述方法还包括:
启动应用程序的主进程并利用所述主进程创建应用程序类,所述应用程序类中记载有用户设备的操作系统信息,所述操作系统信息包括操作系统类型和系统版本号;
相应的,所述判断是否满足启动用以加载副可执行文件的目标进程的预设条件的步骤,包括:
判断是否满足下述条件,如果满足,判定满足启动用以加载副可执行文件的目标进程的预设条件:
所述操作系统类型为预设操作系统类型,所述系统版本号低于预设版本号,且存在所述应用程序所对应未加载的副可执行文件;
在判定满足所述预设条件的情况下,在所述利用所述目标进程加载所述副可执行文件的步骤之前,所述方法还包括:
阻塞所述应用程序的主进程。
可选的,在所述利用所述目标进程加载所述副可执行文件的步骤之前,所述方法还包括:
将所述副可执行文件直接存放至所述应用程序的数据目录下。
可选的,在所述利用所述目标进程加载所述副可执行文件的步骤之前,所述方法还包括:
生成并显示加载提示信息。
可选的,在所述利用所述目标进程加载所述副可执行文件的步骤之前,所述方法还包括:
对所有所述副可执行文件进行完整性认证;
如果认证成功,再执行所述利用所述目标进程加载所述副可执行文件的步骤;
如果认证失败,生成并显示用以表征完整性认证失败的提示信息。
第二方面,本发明实施例提供了一种应用程序启动装置,所述装置包括:
判断模块,用于在启动应用程序时,判断是否满足启动用以加载副可执行文件的目标进程的预设条件,其中,所述副可执行文件为所述应用程序所对应所有可执行文件中除主可执行文件的其他可执行文件;
第一启动模块,用于在所述判断模块的判断结果为是的情况下,启动一个进程,作为目标进程;
加载模块,用于利用所述目标进程加载所述副可执行文件;
第二启动模块,用于在所述副可执行文件被加载完成后,启动所述应用程序的主进程,并利用所述主进程执行除加载所述副可执行文件外的业务逻辑,完成所述应用程序的启动。
可选的,所述判断模块,具体用于:
在启动应用程序时,判断是否存在所述应用程序所对应未加载的副可执行文件;
如果存在,判定满足启动用以加载副可执行文件的目标进程的预设条件。
可选的,所述第二启动模块还用于:
在判断是否满足启动用以加载副可执行文件的目标进程的预设条件之前,启动应用程序的主进程并利用所述主进程创建应用程序类,所述应用程序类中记载有用户设备的操作系统信息,所述操作系统信息包括操作系统类型和系统版本号;
相应的,所述判断模块,具体用于:
判断是否满足下述条件,如果满足,判定满足启动用以加载副可执行文件的目标进程的预设条件:
所述操作系统类型为预设操作系统类型,所述系统版本号低于预设版本号,且存在所述应用程序所对应未加载的副可执行文件;
所述装置还包括:
阻塞模块,用于在判定满足所述预设条件的情况下,在利用所述目标进程加载所述副可执行文件之前,阻塞所述应用程序的主进程。
可选的,所述装置还包括:
存放模块,用于在利用所述目标进程加载所述副可执行文件之前,将所述副可执行文件直接存放至所述应用程序的数据目录下。
可选的,所述装置还包括:
第一显示模块,用于在所述利用所述目标进程加载所述副可执行文件的步骤之前,生成并显示加载提示信息。
可选的,所述装置还包括:
认证模块,用于在利用所述目标进程加载所述副可执行文件之前,对所有所述副可执行文件进行完整性认证;
第二显示模块,用于在所述认证模块认证失败的情况下,生成并显示用以表征完整性认证失败的提示信息;
相应的,所述加载模块,具体用于在所述认证模块认证成功的情况下,利用所述目标进程加载所述副可执行文件。
第三方面,本发明实施例提供了一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一应用程序启动方法所述的方法步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一应用程序启动方法所述的方法步骤。
由以上可知,本发明实施例提供的方案中,在启动应用程序时,首先判断是否满足启动用以加载副可执行文件的目标进程的预设条件;如果满足,启动一个进程,作为目标进程;再利用目标进程加载应用程序的副可执行文件;最后在副可执行文件被加载完成后,启动该应用程序的主进程,并利用主进程执行除加载副可执行文件外的业务逻辑,完成该应用程序的启动。其中,副可执行文件为该应用程序所对应所有可执行文件中除主可执行文件的其他可执行文件。与现有技术相比,本发明实施例中,通过额外启动的目标进程加载副可执行文件,并在副可执行文件被完全加载后,再启动应用程序的主进程来执行除加载副可执行文件外的其他业务逻辑,保证主进程执行上述其他业务逻辑时所需的数据和资源都已被加载,使得主进程顺利执行其他业务逻辑,避免因主进程执行其他业务逻辑时所需的数据和资源未被加载而出现的系统崩溃现象。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的一种应用程序启动方法的流程示意图;
图2为本发明另一实施例提供的一种应用程序启动方法的流程示意图;
图3为本发明一实施例提供的一种应用程序启动装置的结构示意图;
图4为本发明另一实施例提供的一种应用程序启动装置的结构示意图;
图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面首先针对本申请涉及的技术术语进行简单介绍。
可执行文件(executable file),指的是可以由操作系统进行加载执行的文件。在不同的操作系统环境下,可执行文件的呈现方式不一样,例如在windows操作系统下,可执行文件可以是.exe文件、.sys文件、.com文件等类型文件,而在安卓(Android)系统中,应用程序的安装包(APK,AndroidPackage)所包含的可执行文件为DEX文件。
在某些操作系统中,一个可执行文件内可引用的方法总数是有限制的,为了绕开这个限制,可以针对一个应用程序设置多个可执行文件。例如,安卓系统中在单个DEX文件内可引用的方法总数限制在65536,在计算机科学领域内,术语千(简称K)表示1024(或2^10)。由于65536等于64与1024的乘积,因此这一限制也称为“64K引用限制”;针对应用程序自身而言,为了避开这个限制,可以为应用程序设置多个DEX文件,例如针对应用程序设置5个DEX文件,则该应用程序对应的可引用的方法总数最多为65536与5的乘积。
为解决现有技术应用程序启动过程中,因主进程执行其他业务逻辑时所需的数据和资源未被加载而出现的系统崩溃问题,本发明提供了一种应用程序启动方法、装置、电子设备及存储介质。下面首先针对本发明提供的一种应用程序启动方法进行介绍。
首先应当说明的是,本发明实施例提供的一种应用程序启动方法可以应用于安装有应用程序的用户设备中,该用户设备基于其中的操作系统可以启动应用程序,并实现应用程序相对应的功能。该用户设备可以是手机、平板电脑等设备,这都是合理的,本发明实施例并不限定该用户设备的具体种类。
本发明实施例提供的一种应用程序启动方法,如图1所示,包括下述步骤S101~S104:
S101:在启动应用程序时,判断是否满足启动用以加载副可执行文件的目标进程的预设条件,其中,副可执行文件为该应用程序所对应所有可执行文件中除主可执行文件的其他可执行文件。
与现有技术不同的是,本发明实施例提供的方案中,在启动应用程序的过程中,首先可以不启动应用程序的主进程(亦称主应用程序进程),而是首先执行步骤S101。
副可执行文件为该应用程序所对应所有可执行文件中除主可执行文件的其他可执行文件,例如,针对某一应用程序,设置有可执行文件a~e,其中的可执行文件a为主可执行文件,则其余的可执行文件b~e均为副可执行文件。
需要说明的是,此处所述的目标进程为专用于加载应用程序所对应的主可执行文件外的其他可执行文件的进程;如果应用程序所对应的所有可执行文件都已被加载,也就没有必要再启动上述目标进程。所以作为本发明实施例的一种可选实现方式,上述在启动应用程序时,判断是否满足启动用以加载副可执行文件的目标进程的预设条件(S101)的步骤,可以包括:
在启动应用程序时,判断是否存在应用程序所对应未加载的副可执行文件;
如果存在,判定满足启动用以加载副可执行文件的目标进程的预设条件。
例如,应用程序对应有主可执行文件a以及4个副可执行文件b~e,用户设备在启动应用程序时,检测发现主可执行文件a以及4个副可执行文件b~e均已被加载,则此时可以判定不满足启动用以加载副可执行文件的目标进程的预设条件;而如果检测发现4个副可执行文件b~e均未被加载,则此时可以判定满足启动用以加载副可执行文件的目标进程的预设条件。
当然,上述实现方式仅是对本发明实施例中的步骤S101的示例性说明,并不构成对本发明实施例的限定,本领域技术人员完全可以设置其他可行的判断方式,本发明实施例在此不再详细介绍,例如,在启动应用程序时,例如判断未被加载的副可执行文件的包体大小是否大于预设阈值,如果大于,判定满足启动用以加载副可执行文件的目标进程的预设条件。
如果步骤S101的判断结果为是,执行步骤S102:启动一个进程,作为目标进程。
具体启动进程的实现方式属于现有技术,本发明实施例在此不做详细介绍,只需要保证该目标进程与应用程序的主进程不同即可。本发明实施例中所涉及的目标进程仅是为了区别该用于加载副可执行文件的进程与其他进程,而给定的一个名称,并不构成对本发明实施例的限定,在实际应用中,只要用户设备针对应用程序启动一个用于加载副可执行文件的进程,即可称该进程为目标进程。
另外,如果步骤S101的判断结果为否时,表明此时不需要启动上述目标进程来加载副可执行文件,则用户设备可以直接启动应用程序的主进程来完成应用程序的启动。
S103:利用目标进程加载副可执行文件。
利用进程加载可执行文件的具体实现方式属于现有技术,本发明实施例在此不做详细介绍。但需要说明的是,用户设备利用目标进程将副可执行文件加载完成后,该目标进程已经没有存在的意义,所以用户设备执行完步骤S103后,还可以结束掉该目标进程。
本领域技术人员公知的是,用户设备加载可执行文件之前,通常需要将应用程序安装包中的可执行文件存放到用户设备中应用程序所对应的数据(data)目录下,然后再进行可执行文件的加载操作。在现有技术中,则首先将可执行文件进行压缩,再将压缩后的可执行文件存放到应用程序的数据目录下。
可以理解,在本发明实施例中,用户设备在运行目标进程的过程中,应用程序的主进程处于非工作状态,所以一切需要主进程完成的业务逻辑都将无法进行,此时如果操作系统所发出的系统广播也无法被主进程接收并完成系统广播对应的业务逻辑,例如网络切换等逻辑,进而造成应用程序不响应(ANR,Application Not Responding)的问题。所以在本发明实施例中,为了减小此问题发生的可能性,在上述利用目标进程加载副可执行文件(S103)的步骤之前,上述方法还可以包括:
将副可执行文件直接存放至该应用程序的数据目录下。
可以理解,与现有技术不同的是,本发明实施例中不用对副可执行文件进行压缩,直接将未压缩的副可执行文件存放至该应用程序的数据目录下,省去压缩副可执行文件所需的时间,减少了目标进程的运行时间,即减少了启动应用程序后,主进程未运行的时间,进而减少了系统广播也无法被主进程接收而造成的应用程序不响应的问题。
另外,在目标进程运行的过程中,主进程不再运行,所以用户设备的屏幕上可能会处于一个黑屏状态,影响用户体验,同时,可能还会导致用户认为应用程序崩溃,进而强行关闭应用程序的启动过程,所以为了避免这样的情况,在上述利用目标进程加载副可执行文件(S103)的步骤之前,上述方法还可以包括:
生成并显示加载提示信息。
该加载提示信息的信息类型可以是语音类型、文字类型、动画类型或者图片类型等等,本发明实施例并不限定该加载提示信息的具体类型。示例性的,该加载提示信息可以是一段内容为“正在加载中”的语音,也可以是显示在屏幕界面上的文字“正在加载中”,还可以是显示在屏幕界面上“Loading”界面等。
需要说明的是,此处所述的生成生成并显示加载提示信息的步骤可以是在步骤S102后立即开始执行的,并且可以理解为利用目标进程去生成并显示加载提示信息。所以,在目标进程完成度可执行文件的加载后,目标进程可以停止显示该加载提示信息,然后目标进程被结束。
此外,在加载副可执行文件之前,还可以进行完整性认证,所以在本发明实施例中,在上述利用目标进程加载副可执行文件(S103)的步骤之前,上述方法还可以包括:
对所有副可执行文件进行完整性认证;
如果认证成功,再执行上述利用目标进程加载副可执行文件(S103)的步骤;
如果认证失败,生成并显示用以表征完整性认证失败的提示信息。
需要说明的是,用户设备对所有副可执行文件进行完整性认证包含两层含义,第一层是指应用程序所对应的所有副可执行文件的总数是否正确,第二层是指应用程序所对应的每个副可执行文件是否完整。
当然,对副可执行文件进行完整性认证的具体实现方式属于现有技术,本发明实施例在此不做详细介绍,例如,可以对判断指应用程序所对应的所有副可执行文件的总数是否正确,如果正确,再进行时间戳和hash code(哈希码)校验,如果校验成功,则判定对所有副可执行文件进行完整性认证的认证结果为成功。
在对所有副可执行文件进行完整性认证的认证结果为失败的情况下,必然会影响应用程序的启动或者使用,此时可以生成并显示用以表征完整性认证失败的提示信息,以使得用户可以及时发现完整性认证的结果。同样的,该提示信息该加载提示信息的信息类型可以是文字类型或者图片类型等等,本发明实施例并不限定该提示信息的具体种类;示例性的,该提示信息可以是一段内容为“完整性认证失败”的语音。
S104:在副可执行文件被加载完成后,启动该应用程序的主进程,并利用主进程执行除加载副可执行文件外的业务逻辑,完成该应用程序的启动。
可以理解的是,在副可执行文件被加载完成后,主进程不需要再加载副可执行文件,主进程只需要执行除加载副可执行文件外的其他业务逻辑即可,具体的主进程完成上述其他逻辑的实现方式属于现有技术,本发明实施例在此不再详细介绍。
由以上可知,与现有技术相比,本实施例中,通过额外启动的目标进程加载副可执行文件,并在副可执行文件被完全加载后,再启动应用程序的主进程来执行除加载副可执行文件外的其他业务逻辑,保证主进程执行上述其他业务逻辑时所需的数据和资源都已被加载,使得主进程顺利执行其他业务逻辑,避免因执行其他业务逻辑时所需的数据和资源未被加载而出现的系统崩溃现象。
本领域技术人员可以理解的是,启动应用程序时,关于是否需要加载副可执行文件,除了与应用程序的副可执行文件是否被加载有关,还可能与用户设备的操作系统类型以及系统版本号有关,所以在图1所示方法实施例的基础上,在上述判断是否满足启动用以加载副可执行文件的目标进程的预设条件的步骤之前,上述方法还可以包括:
启动应用程序的主进程并利用该主进程创建应用程序类,其中,该应用程序类中记载有用户设备的操作系统信息,该操作系统信息包括操作系统类型和系统版本号;
相应的,上述判断是否满足启动用以加载副可执行文件的目标进程的预设条件的步骤,可以包括:
判断是否满足下述条件,如果满足,判定满足启动用以加载副可执行文件的目标进程的预设条件:
上述操作系统信息中记载的操作系统类型为预设操作系统类型,系统版本号低于预设版本号,且存在该应用程序所对应未加载的副可执行文件;
在判定满足上述预设条件的情况下,在上述利用所述目标进程加载副可执行文件(S103)的步骤之前,上述方法还可以包括:
阻塞应用程序的主进程。
即在本发明实施例中,如图2所示,应用程序启动方法包括下述步骤:
S201:在启动应用程序时,启动应用程序的主进程并利用该主进程创建应用程序类,其中,该应用程序类中记载有用户设备的操作系统信息,该操作系统信息包括操作系统类型和系统版本号。
图1所示方法实施例中,用户设备可以首先不启动应用程序的主进程,而与图1所示方法实施例不同的是,在本实施例中,在启动应用程序时,首先就启动应用程序的主进程,并利用应用程序的主进程来创建应用程序类,如安卓系统中的Application类。
本领域技术人员可以理解的是,应用程序类中包含有操作系统的系统信息,即上述操作系统信息,而操作系统信息包括操作系统类型和系统版本号。例如上述的Application类可以记录用户设备所用的操作系统的操作系统类型和系统版本号分别为安卓系统以及Android 4.0。
S202:判断是否满足下述条件:
上述操作系统信息中记载的操作系统类型为预设操作系统类型,系统版本号低于预设版本号,且存在该应用程序所对应未加载的副可执行文件。
需要说明的是,该预设操作系统类型以及预设版本号都可以根据实际需要设定,本发明实施例并不限定该预设操作系统类型以及预设版本号的具体种类。
示例性的,本发明的发明人发现:在版本号低于Android 5.0的安卓系统中,应用程序在安装后的第一次启动时,存在应用程序所对应未加载的副可执行文件,且极易出现背景技术中所述的系统崩溃问题。所以作本发明实施例的一种示例,该预设操作系统可以是安卓系统,该预设版本号可以为Android 5.0。
如果步骤S202的判断结果为是,执行步骤S203:阻塞应用程序的主进程。
在步骤S201中,应用程序的主进程已经被启动,本实施例中对于主进程的阻塞,可以理解为暂停主进程的运行。
S204:启动一个进程,作为目标进程。
S205:利用目标进程加载副可执行文件。
S206:在副可执行文件被加载完成后,启动该应用程序的主进程,并利用主进程执行除加载副可执行文件外的业务逻辑,完成该应用程序的启动。
需要说明的是,本发明实施例中的步骤S204和S205对应与图1所示方法实施例中的S102和S103完全相同,步骤S204和S205的具体内容以及解释说明可以参照图1所示方法实施例,本发明实施例在此不再赘述。另外,本发明实施例中的步骤S206与图1所示方法实施例中的S104相比,唯一的不同在于:步骤S206中的启动主进程的操作可以理解是将上述处于阻塞状态的主进程启动为正常运行状态;步骤S206中其他操作的具体内容以及解释说明可以参照图1所示方法实施例,本发明实施例在此不再赘述。
下面通过一个具体实例来对本发明进行简单说明。
假设用户设备所使用的操作系统为安卓系统,现有一待启动的、包名为“com.cmcmclexk.cn”的应用程序,上述预设操作系统是安卓系统,预设版本号为Android5.0。
在启动应用程序时,首先启动应用程序的主进程并利用该主进程创建Application类,该Application类记载用户设备当前所用操作系统的操作系统类型和系统版本号分别为:安卓系统以及Android 4.0。
然后用户设备判断是否满足下述条件:
上述操作系统信息中记载的操作系统类型为安卓系统,系统版本号低于Android5.0,且存在该应用程序所对应未加载的DEX文件。
假设本次启动为该应用程序安装后的第一次启动,本次启动应用程序时存在该应用程序所对应未加载的DEX文件,则上述判断的判断结果为是。
此时,用户设备阻塞应用程序的主进程,并同时启动一个进程,作为目标进程。启动目标进程后,利用该目标进程生成并显示一个“Loading”界面。然后,再利用该目标进程对上述应用程序所对应未加载的DEX文件进行完整性认证,在完整性认证成功的情况下,利用目标进程获取应用程序的数据目录“/data/data/com.cmcmclexk.cn”,并将上述未加载的DEX文件直接存放至所获取的数据目录下,最后利用目标进程加载上述未加载的DEX文件。
在目标进程完成上述未加载的DEX文件的操作后,利用目标进程关闭上述“Loading”界面,并结束掉该目标进程。此时,重新启动该应用程序的主进程,并利用主进程执行除加载副可执行文件外的业务逻辑,完成该应用程序的启动。
相应于图1所示的方法实施例,本发明实施例提供了一种应用程序启动装置,如图3所示,所述装置包括:
判断模块110,用于在启动应用程序时,判断是否满足启动用以加载副可执行文件的目标进程的预设条件,其中,所述副可执行文件为所述应用程序所对应所有可执行文件中除主可执行文件的其他可执行文件;
第一启动模块120,用于在所述判断模块110的判断结果为是的情况下,启动一个进程,作为目标进程;
加载模块130,用于利用所述目标进程加载所述副可执行文件;
第二启动模块140,用于在所述副可执行文件被加载完成后,启动所述应用程序的主进程,并利用所述主进程执行除加载所述副可执行文件外的业务逻辑,完成所述应用程序的启动。
作为本发明实施例可选的一种实现方式,所述判断模块110,可以具体用于:
在启动应用程序时,判断是否存在所述应用程序所对应未加载的副可执行文件;如果存在,判定满足启动用以加载副可执行文件的目标进程的预设条件。
作为本发明实施例可选的另一种实现方式,相应于图2所示方法实施例,如图4所示,所述第二启动模块140还可以用于:
在判断是否满足启动用以加载副可执行文件的目标进程的预设条件之前,启动应用程序的主进程并利用所述主进程创建应用程序类,所述应用程序类中记载有用户设备的操作系统信息,所述操作系统信息包括操作系统类型和系统版本号;
相应的,所述判断模块110,可以具体用于:
判断是否满足下述条件,如果满足,判定满足启动用以加载副可执行文件的目标进程的预设条件:
所述操作系统类型为预设操作系统类型,所述系统版本号低于预设版本号,且存在所述应用程序所对应未加载的副可执行文件;
所述装置还可以包括:
阻塞模块150,用于在判定所述预设条件的情况下,在利用所述目标进程加载所述副可执行文件之前,阻塞所述应用程序的主进程。
具体的,所述装置还可以包括:
存放模块,用于在利用所述目标进程加载所述副可执行文件之前,将所述副可执行文件直接存放至所述应用程序的数据目录下。
具体的,所述装置还可以包括:
第一显示模块,用于在所述利用所述目标进程加载所述副可执行文件的步骤之前,生成并显示加载提示信息。
具体的,所述装置还可以包括:
认证模块,用于在利用所述目标进程加载所述副可执行文件之前,对所有所述副可执行文件进行完整性认证;
第二显示模块,用于在所述认证模块认证失败的情况下,生成并显示用以表征完整性认证失败的提示信息;
相应的,所述加载模块,具体用于在所述认证模块认证成功的情况下,利用所述目标进程加载所述副可执行文件。
由以上可知,与现有技术相比,本实施例中,通过额外启动的目标进程加载副可执行文件,并在副可执行文件被完全加载后,再启动应用程序的主进程来执行除加载副可执行文件外的其他业务逻辑,保证主进程执行上述其他业务逻辑时所需的数据和资源都已被加载,使得主进程顺利执行其他业务逻辑,避免因执行其他业务逻辑时所需的数据和资源未被加载而出现的系统崩溃现象。
本发明实施例还提供了一种电子设备,如图5所示,包括处理器201、通信接口202、存储器203和通信总线204,其中,处理器201,通信接口202,存储器203通过通信总线204完成相互间的通信,
存储器203,用于存放计算机程序;
处理器201,用于执行存储器203上所存放的程序时,实现如下步骤:
在启动应用程序时,判断是否满足启动用以加载副可执行文件的目标进程的预设条件,其中,副可执行文件为该应用程序所对应所有可执行文件中除主可执行文件的其他可执行文件;
如果满足,启动一个进程,作为目标进程;
利用目标进程加载副可执行文件;
在副可执行文件被加载完成后,启动该应用程序的主进程,并利用主进程执行除加载副可执行文件外的业务逻辑,完成该应用程序的启动。
关于该方法各个步骤的具体实现以及相关解释内容可以参见上述图1和图2所示的方法实施例,在此不做赘述。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
由以上可知,与现有技术相比,本实施例中,通过额外启动的目标进程加载副可执行文件,并在副可执行文件被完全加载后,再启动应用程序的主进程来执行除加载副可执行文件外的其他业务逻辑,保证主进程执行上述其他业务逻辑时所需的数据和资源都已被加载,使得主进程顺利执行其他业务逻辑,避免因执行其他业务逻辑时所需的数据和资源未被加载而出现的系统崩溃现象。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的应用程序启动方法。
由以上可知,与现有技术相比,本实施例中,通过额外启动的目标进程加载副可执行文件,并在副可执行文件被完全加载后,再启动应用程序的主进程来执行除加载副可执行文件外的其他业务逻辑,保证主进程执行上述其他业务逻辑时所需的数据和资源都已被加载,使得主进程顺利执行其他业务逻辑,避免因执行其他业务逻辑时所需的数据和资源未被加载而出现的系统崩溃现象。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备以及计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种应用程序启动方法,其特征在于,所述方法包括:
在启动应用程序时,判断是否满足启动用以加载副可执行文件的目标进程的预设条件,其中,所述副可执行文件为所述应用程序所对应所有可执行文件中除主可执行文件的其他可执行文件;
如果满足,启动一个进程,作为目标进程;
利用所述目标进程加载所述副可执行文件;
在所述副可执行文件被加载完成后,启动所述应用程序的主进程,并利用所述主进程执行除加载所述副可执行文件外的业务逻辑,完成所述应用程序的启动。
2.根据权利要求1所述的方法,其特征在于,所述在启动应用程序时,判断是否满足启动用以加载副可执行文件的目标进程的预设条件的步骤,包括:
在启动应用程序时,判断是否存在所述应用程序所对应未加载的副可执行文件;
如果存在,判定满足启动用以加载副可执行文件的目标进程的预设条件。
3.根据权利要求1所述的方法,其特征在于,在所述判断是否满足启动用以加载副可执行文件的目标进程的预设条件之前,所述方法还包括:
启动应用程序的主进程并利用所述主进程创建应用程序类,所述应用程序类中记载有用户设备的操作系统信息,所述操作系统信息包括操作系统类型和系统版本号;
相应的,所述判断是否满足启动用以加载副可执行文件的目标进程的预设条件的步骤,包括:
判断是否满足下述条件,如果满足,判定满足启动用以加载副可执行文件的目标进程的预设条件:
所述操作系统类型为预设操作系统类型,所述系统版本号低于预设版本号,且存在所述应用程序所对应未加载的副可执行文件;
在判定满足所述预设条件的情况下,在所述利用所述目标进程加载所述副可执行文件的步骤之前,所述方法还包括:
阻塞所述应用程序的主进程。
4.根据权利要求1所述的方法,其特征在于,在所述利用所述目标进程加载所述副可执行文件的步骤之前,所述方法还包括:
将所述副可执行文件直接存放至所述应用程序的数据目录下。
5.根据权利要求1~4任一项所述的方法,其特征在于,在所述利用所述目标进程加载所述副可执行文件的步骤之前,所述方法还包括:
生成并显示加载提示信息。
6.根据权利要求5所述的方法,其特征在于,在所述利用所述目标进程加载所述副可执行文件的步骤之前,所述方法还包括:
对所有所述副可执行文件进行完整性认证;
如果认证成功,再执行所述利用所述目标进程加载所述副可执行文件的步骤;
如果认证失败,生成并显示用以表征完整性认证失败的提示信息。
7.一种应用程序启动装置,其特征在于,所述装置包括:
判断模块,用于在启动应用程序时,判断是否满足启动用以加载副可执行文件的目标进程的预设条件,其中,所述副可执行文件为所述应用程序所对应所有可执行文件中除主可执行文件的其他可执行文件;
第一启动模块,用于在所述判断模块的判断结果为是的情况下,启动一个进程,作为目标进程;
加载模块,用于利用所述目标进程加载所述副可执行文件;
第二启动模块,用于在所述副可执行文件被加载完成后,启动所述应用程序的主进程,并利用所述主进程执行除加载所述副可执行文件外的业务逻辑,完成所述应用程序的启动。
8.根据权利要求7所述的装置,其特征在于,所述判断模块,具体用于:
在启动应用程序时,判断是否存在所述应用程序所对应未加载的副可执行文件;
如果存在,判定满足启动用以加载副可执行文件的目标进程的预设条件。
9.根据权利要求7所述的装置,其特征在于,
所述第二启动模块还用于:
在判断是否满足启动用以加载副可执行文件的目标进程的预设条件之前,启动应用程序的主进程并利用所述主进程创建应用程序类,所述应用程序类中记载有用户设备的操作系统信息,所述操作系统信息包括操作系统类型和系统版本号;
相应的,所述判断模块,具体用于:
判断是否满足下述条件,如果满足,判定满足启动用以加载副可执行文件的目标进程的预设条件:
所述操作系统类型为预设操作系统类型,所述系统版本号低于预设版本号,且存在所述应用程序所对应未加载的副可执行文件;
所述装置还包括:
阻塞模块,用于在判定满足所述预设条件的情况下,在利用所述目标进程加载所述副可执行文件之前,阻塞所述应用程序的主进程。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
存放模块,用于在利用所述目标进程加载所述副可执行文件之前,将所述副可执行文件直接存放至所述应用程序的数据目录下。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711372189.7A CN109947493A (zh) | 2017-12-19 | 2017-12-19 | 应用程序启动方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711372189.7A CN109947493A (zh) | 2017-12-19 | 2017-12-19 | 应用程序启动方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109947493A true CN109947493A (zh) | 2019-06-28 |
Family
ID=67003946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711372189.7A Pending CN109947493A (zh) | 2017-12-19 | 2017-12-19 | 应用程序启动方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109947493A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148300A (zh) * | 2020-09-22 | 2020-12-29 | 网易(杭州)网络有限公司 | 一种Dex文件的构建方法、目标应用的运行方法及装置 |
CN112559248A (zh) * | 2020-12-23 | 2021-03-26 | 深圳市彬讯科技有限公司 | 预处理服务恢复方法、装置、设备及存储介质 |
CN112988287A (zh) * | 2021-03-15 | 2021-06-18 | 上海益世界信息技术集团有限公司广州分公司 | 一种应用程序运行方法及装置 |
CN113032171A (zh) * | 2021-03-30 | 2021-06-25 | 联想(北京)有限公司 | 一种控制方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106681749A (zh) * | 2015-11-11 | 2017-05-17 | 腾讯科技(深圳)有限公司 | 基于安卓平台的局部代码补丁更新方法及装置 |
CN106775842A (zh) * | 2016-11-30 | 2017-05-31 | 北京酷我科技有限公司 | 一种可自定义的dex分包的方法 |
CN107315593A (zh) * | 2017-06-29 | 2017-11-03 | 广州优视网络科技有限公司 | 应用程序打包方法、装置及终端设备 |
-
2017
- 2017-12-19 CN CN201711372189.7A patent/CN109947493A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106681749A (zh) * | 2015-11-11 | 2017-05-17 | 腾讯科技(深圳)有限公司 | 基于安卓平台的局部代码补丁更新方法及装置 |
CN106775842A (zh) * | 2016-11-30 | 2017-05-31 | 北京酷我科技有限公司 | 一种可自定义的dex分包的方法 |
CN107315593A (zh) * | 2017-06-29 | 2017-11-03 | 广州优视网络科技有限公司 | 应用程序打包方法、装置及终端设备 |
Non-Patent Citations (2)
Title |
---|
DEVDIV移动开发社区 编著: "《Android开发实战体验》", 31 January 2013, 北京:海洋出版社 * |
WEMOBILEDEV: ""Android拆分与加载Dex的多种方案对比"", 《HTTPS://MP.WEIXIN.QQ.COM/S?__BIZ=MZAWNDY1ODY2OQ==&MID=207151651&IDX=1&SN=9EAB282711F4EB2B4DAF2FBAE5A5CA9A&3RD=MZA3MDU4NTYZMW==&SCENE=6#RD》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148300A (zh) * | 2020-09-22 | 2020-12-29 | 网易(杭州)网络有限公司 | 一种Dex文件的构建方法、目标应用的运行方法及装置 |
CN112559248A (zh) * | 2020-12-23 | 2021-03-26 | 深圳市彬讯科技有限公司 | 预处理服务恢复方法、装置、设备及存储介质 |
CN112559248B (zh) * | 2020-12-23 | 2024-06-07 | 深圳市彬讯科技有限公司 | 预处理服务恢复方法、装置、设备及存储介质 |
CN112988287A (zh) * | 2021-03-15 | 2021-06-18 | 上海益世界信息技术集团有限公司广州分公司 | 一种应用程序运行方法及装置 |
CN113032171A (zh) * | 2021-03-30 | 2021-06-25 | 联想(北京)有限公司 | 一种控制方法及装置 |
CN113032171B (zh) * | 2021-03-30 | 2023-12-22 | 联想(北京)有限公司 | 一种控制方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947493A (zh) | 应用程序启动方法、装置、电子设备及存储介质 | |
US9792440B1 (en) | Secure boot for vehicular systems | |
US11221838B2 (en) | Hot update method, operating system, terminal device, system, and computer-readable storage medium for a system process | |
WO2012046406A1 (ja) | 情報処理装置およびアプリケーション不正連携防止方法 | |
CN105138347A (zh) | 一种差分升级包生成方法、软件升级方法及相应装置 | |
CN105975864A (zh) | 操作系统的启动方法、装置及终端 | |
WO2016019893A1 (zh) | 应用安装的方法和装置 | |
US9189300B2 (en) | Dynamic service discovery | |
CN103207800A (zh) | 一种安全灵活的固件升级方法 | |
US20170255775A1 (en) | Software verification systems with multiple verification paths | |
CN106341732B (zh) | 桌面启动器的管理方法及智能电视机 | |
CN110598384B (zh) | 信息保护方法、信息保护装置及移动终端 | |
CN110262838A (zh) | 一种程序崩溃的处理方法、装置、终端及存储介质 | |
KR101379522B1 (ko) | 디바이스 하드웨어에 데이터 모듈 록을 제공하는 방법 및 시스템, 회로 카드가 컴퓨터와 호환성이 있음을 확인하기 위한 시스템 및 방법 | |
JP6554249B2 (ja) | 付与装置、付与方法及び付与プログラム | |
CN110727941A (zh) | 一种隐私数据保护方法、装置、终端设备及存储介质 | |
CN103455750B (zh) | 一种嵌入式设备的高安验证方法及装置 | |
CN113032183A (zh) | 系统管理方法、装置、计算机设备和存储介质 | |
CN106569851B (zh) | 应用程序处理方法及装置 | |
EP3321808A1 (en) | Verification system and verification method | |
CN110363011B (zh) | 用于验证基于uefi的bios的安全性的方法和设备 | |
CN106203148B (zh) | 未经授权的数据访问阻断方法及具备该功能的计算装置 | |
WO2020233044A1 (zh) | 一种插件校验方法、设备、服务器及计算机可读存储介质 | |
CN111158771B (zh) | 处理方法、装置及计算机设备 | |
CN109582586B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190628 |