CN115879098B - 一种基于原子事务操作的安卓应用安装优化方法 - Google Patents
一种基于原子事务操作的安卓应用安装优化方法 Download PDFInfo
- Publication number
- CN115879098B CN115879098B CN202310138598.XA CN202310138598A CN115879098B CN 115879098 B CN115879098 B CN 115879098B CN 202310138598 A CN202310138598 A CN 202310138598A CN 115879098 B CN115879098 B CN 115879098B
- Authority
- CN
- China
- Prior art keywords
- file
- installation
- management service
- configuration
- rollback
- 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
-
- 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
Abstract
本发明公开了一种基于原子事务操作的安卓应用安装优化方法,针对安卓应用采用的不同安装方式增加了新旧证书比对的过程,有效减少了不必要的安装操作,同时,通过将标准安装过程拆分为两个环节分别由从包管理服务与主包管理服务串行执行,再由从包管理服务创建两类任务并行执行签名验证及部分安装过程,有效提高了安卓应用的安装过程中系统资源的利用率,缩短了安卓应用的安装时间。
Description
技术领域
本发明属于安卓操作系统技术领域,具体涉及一种基于原子事务操作的安卓应用安装优化方法。
背景技术
为了防止安卓应用被恶意篡改或被盗版使用,安卓应用的开发者通常会采用安卓系统提供的签名机制对APK进行签名,并将签名与公钥一起发布到APK中,以确保安卓应用APK的完整性及真实性。签名是摘要与非对称密钥加密相结合的产物,摘要是内容的指纹信息,一旦内容被篡改摘要就会改变,签名是摘要的加密结果,当摘要改变时签名就会失效。安卓系统安装APK时,会采用发布的公钥解析签名,并将签名与APK文件的哈希值进行比对完成签名验证,若签名与哈希值不同,安卓系统会认为APK内容已被篡改,进而拒绝安装该APK以保证安卓系统整体的安全性。
目前,安卓系统提供的签名机制主要包括v1、v2及v3三类签名方案,其中,v1方案是基于JAR的签名机制;v2方案是一种全文件签名方案,该方案允许对APK内的指定块进行独立签名;v3方案是对v2方案的改进。现有安卓应用的标准安装过程通常包括:签名验证、APK文件解析、文件提取复制、根据指令集提取相应的库文件、应用权限管理、写入应用数据库及创建快捷方式等。当对采用v1方案签名的APK进行签名验证时,需要对APK中的所有文件进行摘要计算,因此会减慢APK的安装速度;当对采用v2方案签名的APK进行签名验证时,需要顺序对APK内的块分别进行签名验证,因此也会一定程度的减慢APK的安装速度。
综上所述,采用现有的方式执行APK的安装时,由于引入了安卓系统提供的签名机制,将会导致产生安卓应用安装速度过慢的问题。
发明内容
有鉴于此,本发明提供了一种基于原子事务操作的安卓应用安装优化方法,实现了安卓系统中安卓应用的快速安装。
本发明提供的一种基于原子事务操作的安卓应用安装优化方法,包括以下步骤:
步骤1、启动主包管理服务,主包管理服务用于创建并启动从包管理服务,执行写入应用数据库及创建快捷方式;从包管理服务为独立进程,用于执行签名验证、APK文件解析、文件提取复制、提取库及应用权限管理;
步骤2、若为替代安装且待安装APK的证书与已有证书相同则执行步骤3,否则报错后结束主包管理服务并退出本流程;若为全新安装则执行步骤3;
步骤3、主包管理服务以待安装APK的全路径及其所采用的签名机制为参数创建并启动从包管理服务,并将从包管理服务的进程ID发送至原子事务管理服务,主包管理服务进入等待状态;原子事务管理服务根据进程ID监测从包管理服务的运行,获取安卓系统内文件及系统配置的修改情况,根据修改情况确定原信息保存操作,执行原信息保存操作并将修改情况及时间戳记录到安装日志中;
步骤4、从包管理服务创建并启动并行执行的验签任务及安装任务,待验签任务执行完毕得到签名验证结果;
步骤5、若签名验证错误,则停止执行安装任务,并向主包管理服务及原子事务管理服务发送安装失败消息,同时结束从包管理服务进程的执行,执行步骤6;若签名验证正确,则待安装任务执行完毕后,如果安装任务执行失败则向主包管理服务及原子事务管理服务发送安装失败消息,结束从包管理服务进程的执行,执行步骤6;如果安装任务执行成功,则向主包管理服务发送安装成功消息,结束从包管理服务进程的执行,执行步骤7;
步骤6、主包管理服务生成报错信息;原子事务管理服务读取安装日志,并按照时间戳的逆序遍历每条记录确定回滚操作并执行,执行完毕后结束本流程;
步骤7、主包管理服务对安卓系统内所有应用信息进行加锁操作后,将当前安装应用的相关信息写入应用数据库,再解锁所有应用信息,最后创建安卓应用的快捷方式,完成安装过程。
进一步地,所述步骤4中从包管理服务创建并启动并行执行的验签任务及安装任务,待验签任务执行完毕得到签名验证结果,还包括:
当待安装APK所采用的签名机制为v1时从包管理服务创建并启动并行执行的第一验签任务及安装任务,待第一验签任务执行完毕得到签名验证结果;当待安装APK所采用的签名机制为v2时从包管理服务创建并启动并行执行的第二验签任务及安装任务,待第二验签任务执行完毕得到签名验证结果;
所述第一验签任务读取APK的所有文件并对文件进行签名验证得到签名验证结果;所述第二验签任务读取APK的N个签名块,创建M/2个验签子任务,由M/2个验签子任务分担N个签名块的签名验证操作,M为安卓系统的CPU核数,仅当所有验签子任务均签名验证正确时签名验证结果才为签名验证正确,否则均为签名验证错误。
进一步地,所述验签子任务为线程。
进一步地,所述步骤3还包括根据修改情况确定回滚操作,并将回滚操作记录到安装日志中。
进一步地,安卓系统内文件的修改情况包括新建文件操作、删除文件操作、移动文件操作、修改文件属性操作及修改文件内容操作。
进一步地,当为新建文件操作时,其操作参数为文件全路径,则记录当前的操作参数及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为删除全路径对应的文件,再将当前操作的操作参数、回滚操作及时间戳保存到安装日志中;
当为删除文件操作时,操作参数为原文件全路径,则将操作参数对应的文件移动到设定目录下得到移动后的文件全路径,记为新文件全路径,记录当前的操作参数、新文件全路径及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将新文件全路径对应的文件恢复至原文件全路径,再将当前操作的操作参数、新文件全路径、回滚操作及时间戳保存到安装日志中;
当为移动文件操作时,操作参数包括原文件全路径及新文件全路径,则记录当前的操作参数及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将新文件全路径对应的文件恢复至原文件全路径,再将当前操作的操作参数、回滚操作及时间戳保存到安装日志中;
当为修改文件属性操作时,操作参数包括文件全路径、原属性及新属性,则记录当前的操作参数及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将文件全路径对应的文件的新属性恢复为原属性,再将当前操作的操作参数、回滚操作及时间戳保存到安装日志中;
当为修改文件内容操作时,操作参数包括文件全路径、修改位置、修改长度、原内容及新内容,则记录当前的操作参数及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将文件全路径对应的文件中修改位置处的、长度为修改长度的新内容恢复为原内容,再将当前操作的操作参数、回滚操作及时间戳保存到安装日志中。
进一步地,安卓系统内系统配置的修改情况包括新建配置操作、删除配置操作、重命名配置操作及修改配置属性操作。
进一步地,当为新建配置操作时,操作参数为配置名称及配置属性,则记录当前的操作参数及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为删除名为配置名称的配置,再将当前操作的操作参数、回滚操作及时间戳保存到安装日志中;
当为删除配置操作时,操作参数为配置名称,则将配置名称修改为设定名称,记录当前的操作参数、设定名称及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将设定名称恢复为配置名称,再将当前操作的操作参数、设定名称、回滚操作及时间戳保存到安装日志中;
当为重命名配置操作时,操作参数为原配置名称及新配置名称,则记录当前的操作参数及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将新配置名称恢复为原配置名称,再将当前操作的操作参数、回滚操作及时间戳保存到安装日志中;
当为修改配置属性操作时,操作参数为配置名称、原属性及新属性,则记录当前的操作参数及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将名为配置名称的新属性恢复为原属性,再将当前操作的操作参数、回滚操作及时间戳保存到安装日志中。
进一步地,当为删除配置操作时,操作参数为配置名称,将名为配置名称的配置保存至设定文件,记录当前的操作参数、设定文件及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将设定文件中保存的配置恢复到系统配置中,再将当前操作的操作参数、设定文件、回滚操作及时间戳保存到安装日志中。
有益效果
本发明针对安卓应用采用的不同安装方式增加了新旧证书比对的过程,有效减少了不必要的安装操作,同时,通过将标准安装过程拆分为两个环节分别由从包管理服务与主包管理服务串行执行,再由从包管理服务创建两类任务并行执行签名验证及部分安装过程,有效提高了安卓应用的安装过程中系统资源的利用率,缩短了安卓应用的安装时间。
具体实施方式
下面列举实施例,对本发明进行详细描述。
本发明提供的一种基于原子事务操作的安卓应用安装优化方法,具体包括以下步骤:
步骤1、启动主包管理服务所在进程,获取待安装APK所采用的签名机制。
具体来说,通过APK的META-INF目录下的.SF文件即可区分APK所采用的签名机制,即:如果.SF文件抬头不包含X-Android-APK-Signed:2,则说明该APK的签名机制是v1;如果不存在.SF文件,则说明该APK的签名机制是v2。
本发明将运行在SystemServer进程中的PackageManagerService修改为主包管理服务(即主PackageManagerService),主PackageManagerService用于创建并启动从PackageManagerService,及执行标准安装过程中的写入应用数据库、创建快捷方式等操作。从包管理服务(即从PackageManagerService)为独立进程,用于执行标准安装过程中的签名验证、APK文件解析、文件提取复制、根据指令集提取相应的库及应用权限管理等操作。
步骤2、若待安装APK为替代安装,则将待安装APK中的证书与已安装的同名应用目录中的证书进行比对,如果两份证书相同则执行步骤3,否则报错后,结束主PackageManagerService,退出本安装流程;若待安装APK为全新安装,则执行步骤3。
若APK为替代安装则说明当前安卓系统中已安装了与该APK同名的安卓应用,反之若APK为全新安装则说明当前安卓系统中未安装与该APK同名的安卓应用。APK的证书通常存放在安卓应用的META-INF目录下。
现有安卓系统的标准安装过程中未区分替代安装和全新安装,因此当进行替代安装时,只能在签名验证过程都执行完毕后才能发现上述问题,这会导致系统资源的浪费。
步骤3、主PackageManagerService以待安装APK的全路径及APK所采用的签名机制为参数创建并启动从PackageManagerService,并将从PackageManagerService的进程ID发送至原子事务管理服务,主PackageManagerService进入等待状态;原子事务管理服务根据进程ID监测从PackageManagerService的运行,获取安卓系统内文件及系统配置的修改情况,根据修改情况确定对应的原信息保存操作及回滚操作,执行原信息保存操作并将修改情况、回滚操作及时间戳记录到安装日志中。
为了提高对文件、系统配置等修改操作监视的准确性,本发明创建新的进程作为从PackageManagerService。原信息保存操作是指保存回滚操作所需信息的操作。
本发明建立的原子事务管理服务用于在安卓应用安装期间记录安卓系统内文件及数据的修改情况,根据修改情况确定对应的回滚操作,再将修改情况、回滚操作及时间戳记录到安装日志中,并在安装失败时根据安装日志执行回滚操作。
本发明通过修改安卓框架的文件操作类及系统配置类,实现在安装安卓应用期间记录安卓系统中文件及系统配置的修改情况,并在安装失败时根据修改情况执行回滚操作,文件操作类包括File、FileOutputStream等类,系统配置的实现方式包括数据库类及XML类,系统配置的入口均为DatabaseHelper接口的实现等,具体处理过程为:
步骤3.1、若当前操作的对象为文件则执行步骤3.2;若当前操作的对象为系统配置则执行步骤3.3。
步骤3.2、当操作类型为新建文件操作时,操作参数为文件全路径,则记录当前的操作参数、操作类型及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为删除全路径对应的文件,再将当前操作的操作参数、操作类型、回滚操作及时间戳保存到安装日志中;
当操作类型为删除文件操作时,操作参数为原文件全路径,则将操作参数对应的文件移动到设定目录下得到移动后的文件全路径,记为新文件全路径,记录当前的操作参数、新文件全路径、操作类型及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将新文件全路径对应的文件恢复至原文件全路径,再将当前操作的操作参数、新文件全路径、操作类型、回滚操作及时间戳保存到安装日志中;
当操作类型为移动文件操作时,操作参数包括原文件全路径及新文件全路径,则记录当前的操作参数、操作类型及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将新文件全路径对应的文件恢复至原文件全路径,再将当前操作的操作参数、操作类型、回滚操作及时间戳保存到安装日志中;
当操作类型为修改文件属性操作时,操作参数包括文件全路径、原属性及新属性,则记录当前的操作参数、操作类型及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将文件全路径对应的文件的新属性恢复为原属性,再将当前操作的操作参数、操作类型、回滚操作及时间戳保存到安装日志中;
当操作类型为修改文件内容操作时,操作参数包括文件全路径、修改位置、修改长度、原内容及新内容,则记录当前的操作参数、操作类型及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将文件全路径对应的文件中修改位置处的、长度为修改长度的新内容恢复为原内容,再将当前操作的操作参数、操作类型、回滚操作及时间戳保存到安装日志中。
步骤3.3、当操作类型为新建配置操作时,操作参数为配置名称及配置属性,则记录当前的操作参数、操作类型及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为删除名为配置名称的配置,再将当前操作的操作参数、操作类型、回滚操作及时间戳保存到安装日志中;
当操作类型为删除配置操作时,操作参数为配置名称,则将配置名称修改为设定名称,记录当前的操作参数、设定名称、操作类型及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将设定名称恢复为配置名称,再将当前操作的操作参数、设定名称、操作类型、回滚操作及时间戳保存到安装日志中;
当操作类型为重命名配置操作时,操作参数为原配置名称及新配置名称,则记录当前的操作参数、操作类型及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将新配置名称恢复为原配置名称,再将当前操作的操作参数、操作类型、回滚操作及时间戳保存到安装日志中;
当操作类型为修改配置属性操作时,操作参数为配置名称、原属性及新属性,则记录当前的操作参数、操作类型及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将名为配置名称的新属性恢复为原属性,再将当前操作的操作参数、操作类型、回滚操作及时间戳保存到安装日志中。
进一步地,当操作的操作类型为删除配置操作时,操作参数为配置名称,还可将名为配置名称的配置保存至设定文件,记录当前的操作参数、设定文件、操作类型及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将设定文件中保存的配置恢复到系统配置中,再将当前操作的操作参数、设定文件、操作类型、回滚操作及时间戳保存到安装日志中。
步骤4、当APK采用的签名机制为v1时从PackageManagerService同时创建并启动并行执行的第一验签任务及安装任务,若安装任务在第一验签任务之前执行完毕则等待第一验签任务执行完毕后,得到签名验证结果再执行步骤5;否则得到签名验证结果后执行步骤5;
当APK采用的签名机制为v2时从PackageManagerService同时创建并启动并行执行的第二验签任务及安装任务,若安装任务在第二验签任务之前执行完毕则等待第二验签任务执行完毕后,得到签名验证结果再执行步骤5;否则得到签名验证结果后执行步骤5。
其中,安装任务用于执行从PackageManagerService的APK文件解析、文件提取复制、根据指令集提取相应的库及应用权限管理等操作。第一验签任务用于读取APK的所有文件并对文件进行签名验证,得到签名验证正确或错误的签名验证结果。
第二验签任务用于读取APK中Manifest文件中的签名块列表,记为N个签名块,获取安卓系统的CPU核数记为M,创建M/2个验签子任务,由M/2个验签子任务平均分配N个签名块的签名验证操作;并行执行所有的验签子任务,仅当所有验签子任务均签名验证正确时第二验签任务的签名验证结果才为签名验证正确,否则签名验证结果均为签名验证错误。验签子任务为线程。
第一验签任务、第二验签任务及安装任务均可为进程或线程。
步骤5、若签名验证结果为签名验证错误,说明APK存在风险,则停止执行安装任务,并向主PackageManagerService及原子事务管理服务发送安装失败消息,同时结束从PackageManagerService进程的执行,执行步骤6;若签名验证结果为签名验证正确,待安装任务执行完毕后,如果安装任务执行失败则向主PackageManagerService及原子事务管理服务发送安装失败消息,结束从PackageManagerService进程的执行,执行步骤6;如果安装任务执行成功,则向主PackageManagerService发送安装成功消息,结束从PackageManagerService进程的执行,执行步骤7。
其中,安装失败消息中包含具体错误信息,如签名验证错误、安装过程失败等。
步骤6、主PackageManagerService接收到安装失败消息后,根据安装失败消息确定失败原因,生成报错信息;原子事务管理服务读取安装日志,并按照时间戳的逆序遍历执行每条记录中的回滚操作,执行完毕后结束本流程。
步骤7、主PackageManagerService接收到安装成功消息后,执行对安卓系统内所有应用信息的加锁操作,再将当前安装的应用的相关信息写入应用数据库后,解锁安卓系统内所有应用信息,最后创建安卓应用的快捷方式,结束本流程。
现有的安卓系统中安装应用的过程是串行进行的,因此不会产生多个安装过程同时处理安卓系统内应用信息所导致的并发冲突问题。本发明通过对安卓系统内所有应用信息执行加锁操作防止多个从PackageManagerService同时执行可能导致的并发错误。
实施例
本实施例中采用本发明提供的一种基于原子事务操作的安卓应用安装优化方法,通过修改安卓框架的PackageManagerService实现了安卓应用的快速安装,具体过程如下:
S1.1、修改PackageManagerService的addForInitLI函数,实现签名验证与APK安装其他操作的并行执行;如果当前APK的签名机制为v1,则执行S1.2;如果当前APK的签名机制为v2,则执行S1.7。
S1.2、判断APK的安装方式:若为替代安装,则首先读取APK文件里META-INF目录下相关证书,并与已安装的同名应用的证书做比对,如不相同则直接报错退出安装,否则执行S1.3;若为全新安装则执行S1.3。
S1.3、创建新的服务进程pmProcess作为从PackageManagerService,进程pmProcess的启动参数为待安装的APK文件的全路径;通知原子事务管理服务metaTransactionManagerService开始根据pmProcess的进程ID监视pmProcess进程,形成安装日志。
S1.4、进程pmProcess创建一个新任务作为验签任务,验签任务开始读取APK文件的所有内容,并对其进行签名验证;同时,创建另一个新任务作为安装任务执行后续的安装标准操作。验签任务及安装任务可为线程或进程。
S1.5、如果安装任务先于验签任务执行完毕,则暂停或挂起安装任务等,待验签任务结束得到签名验证结果,若签名验证结果为验证错误,则立刻停止安装任务,并通知metaTransactionManagerService根据安装日志按照时间戳由后到前的顺序执行原子事务回滚操作,再通过进程间RPC向主PackageManagerService发送安装失败消息,退出pmProcess进程;若签名验证结果为验证正确,则等待安装任务执行完毕后,根据安装任务的执行情况通过进程间RPC向主PackageManagerService发送安装成功消息或安装失败消息,退出pmProcess进程。
S1.6、主PackageManagerService收到从PackageManagerService发送的消息后,若消息为安装成功消息,则继续后续的标准安装操作,包括发送应用安装成功的系统广播、写入应用数据库、创建安卓应用的快捷方式、将应用图标加入启动器使得用户可见等,结束本流程;若消息为安装失败消息,则根据失败原因形成报错信息,结束本流程。
S1.7、创建一个新的服务进程记为pmProcess作为从PackageManagerService,并且进程pmProcess的启动参数为待安装的APK文件的全路径;通知metaTransactionManagerService开始根据pmProcess的进程ID视pmProcess进程。
S1.8、读取签名块列表记为N个block,获取当前CPU核数记为coreCount,创建coreCount/2个签名验签子任务,将N个block平均分配到coreCount/2个签名验签子任务中并行执行;同时创建一个新任务作为安装任务,用于执行后续的安装标准操作。签名验签子任务为线程。
其中,若任意一个block的签名验证结果为验证错误,则整体的签名验证结果为验证错误。
S1.9、若安装任务先完成,则挂起安装任务,待所有签名验签子任务均执行完毕后,根据得到的签名验证结果执行后续操作,若签名验证结果为验证错误,则立即停止所有的签名验签子任务和安装任务,通知metaTransactionManagerService执行原子事务回滚操作,并通过进程间RPC通知主PackageManagerService安装失败,退出pmProcess进程;若签名验证结果为验证正确,则待安装任务执行完毕后,通过进程间RPC通知主PackageManagerService安装结果,退出pmProcess进程。
S1.10、如果安装结果为安装失败,则主PackageManagerService根据失败原因生成报错信息;如果安装结果为安装成功,则主PackageManagerService继续执行后续的标准操作,包括发送应用安装成功的系统广播、将应用图标加入启动器使得用户可见等。
本实施例中metaTransactionManagerService的处理过程包括:
S2.1、通过修改安卓框架的文件操作类,根据从PackageManagerService所在进程的进程ID,实现安装期间对文件修改的记录和回滚。
需要监视的文件操作包括两类:一类是文件操作的操作参数为单一参数,例如,操作参数为文件名;另一类是文件操作的操作参数为多个参数,例如,操作参数为文件名、原属性和新属性。
对于操作参数为单一参数的文件操作,根据修改情况确定对应的原信息保存操作及回滚操作,执行原信息保存操作并将修改情况、回滚操作及时间戳记录到安装日志中,记录的安装日志traceLog中包含文件名、操作类型、修改情况、回滚操作及时间戳,其中,根据操作类型及修改情况确定回滚操作。
对于操作参数为多个参数的文件操作,记录的安装日志traceLog中包含文件名、操作类型、原属性、新属性、修改情况、回滚操作及时间戳。其中,回滚操作通常是交换原属性和新属性后执行相应操作。
由此本发明中,安装日志记录和回滚操作等过程具有较好的通用性,即通过Java的自省机制能够动态获取操作参数,根据操作参数确定安装日志记录和回滚操作的方式,而无需针对每种操作定制回滚函数。安装日志记录时是按操作的时间由早到晚顺序写入traceLog列表,回滚操作时则是按时间的逆序依次执行。
本发明将文件操作分为新建文件、删除文件、移动文件、修改文件属性及修改文件内容等类型,这里的文件不包括系统配置相关文件。本实施例中,新建文件操作,将文件全路径、回滚操作及时间戳写入安装日志,其回滚操作为根据记录的全路径删除对应文件;删除文件操作,将待删除文件移动到特定目录下,将原文件全路径、新文件全路径、回滚操作及时间戳写入安装日志,其回滚操作为将新路径的文件移动到原路径;移动文件操作,将原文件全路径、新文件全路径、回滚操作及时间戳写入安装日志,其回滚操作为将文件从新路径移动回原路径;修改文件属性操作,将文件全路径、原属性、回滚操作及时间戳写入安装日志,其回滚操作为将全路径指向的文件的现有属性改回原属性;修改文件内容操作,将文件全路径、修改的偏移量、修改长度、原内容、回滚操作及时间戳写入安装日志,其回滚操作为将全路径指向的文件指定偏移量的内容替换回原内容。
S2.2、修改安卓框架的系统配置类实现安装期间对系统配置的修改记录和回滚操作。
本发明将配置相关操作分为新建配置、删除配置、重命名配置及修改配置属性等类型。其中,新建配置操作,将配置名、配置属性、回滚操作及时间戳写入安装日志,其回滚操作为根据配置名删除配置;删除配置操作,将待删除的配置重命名为特定名字,将原配置名、特定名字、回滚操作及时间戳写入安装日志,其回滚操作为将特定名字的配置重命名为原配置名;重命名配置操作,将原配置名、新配置名、回滚操作及时间戳写入安装日志,其回滚操作为将新配置名重命名为原配置名;修改配置属性操作,将配置名、原属性、回滚操作及时间戳写入安装日志,其回滚操作为将配置的现有属性改回原属性。
上述文件操作及配置相关操作中,还可不将回滚操作写入安装日志,而是在执行回滚操作时据安装日志中的信息自动生成,从而缩短安装日志的写入时间,进一步提高安装效率。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于原子事务操作的安卓应用安装优化方法,其特征在于,包括以下步骤:
步骤1、启动主包管理服务,主包管理服务用于创建并启动从包管理服务,执行写入应用数据库及创建快捷方式;从包管理服务为独立进程,用于执行签名验证、APK文件解析、文件提取复制、提取库及应用权限管理;
步骤2、若为替代安装且待安装APK的证书与已有证书相同则执行步骤3,否则报错后结束主包管理服务并退出本流程;若为全新安装则执行步骤3;
步骤3、主包管理服务以待安装APK的全路径及其所采用的签名机制为参数创建并启动从包管理服务,并将从包管理服务的进程ID发送至原子事务管理服务,主包管理服务进入等待状态;原子事务管理服务根据进程ID监测从包管理服务的运行,获取安卓系统内文件及系统配置的修改情况,根据修改情况确定原信息保存操作,执行原信息保存操作并将修改情况及时间戳记录到安装日志中;
步骤4、从包管理服务创建并启动并行执行的验签任务及安装任务,待验签任务执行完毕得到签名验证结果;
步骤5、若签名验证错误,则停止执行安装任务,并向主包管理服务及原子事务管理服务发送安装失败消息,同时结束从包管理服务进程的执行,执行步骤6;若签名验证正确,则待安装任务执行完毕后,如果安装任务执行失败则向主包管理服务及原子事务管理服务发送安装失败消息,结束从包管理服务进程的执行,执行步骤6;如果安装任务执行成功,则向主包管理服务发送安装成功消息,结束从包管理服务进程的执行,执行步骤7;
步骤6、主包管理服务生成报错信息;原子事务管理服务读取安装日志,并按照时间戳的逆序遍历每条记录确定回滚操作并执行,执行完毕后结束本流程;
步骤7、主包管理服务对安卓系统内所有应用信息进行加锁操作后,将当前安装应用的相关信息写入应用数据库,再解锁所有应用信息,最后创建安卓应用的快捷方式,完成安装过程。
2.根据权利要求1所述的安卓应用安装优化方法,其特征在于,所述步骤4中从包管理服务创建并启动并行执行的验签任务及安装任务,待验签任务执行完毕得到签名验证结果,还包括:
当待安装APK所采用的签名机制为v1时从包管理服务创建并启动并行执行的第一验签任务及安装任务,待第一验签任务执行完毕得到签名验证结果;当待安装APK所采用的签名机制为v2时从包管理服务创建并启动并行执行的第二验签任务及安装任务,待第二验签任务执行完毕得到签名验证结果;
所述第一验签任务读取APK的所有文件并对文件进行签名验证得到签名验证结果;所述第二验签任务读取APK的N个签名块,创建M/2个验签子任务,由M/2个验签子任务分担N个签名块的签名验证操作,M为安卓系统的CPU核数,仅当所有验签子任务均签名验证正确时签名验证结果才为签名验证正确,否则均为签名验证错误。
3.根据权利要求2所述的安卓应用安装优化方法,其特征在于,所述验签子任务为线程。
4.根据权利要求1所述的安卓应用安装优化方法,其特征在于,所述步骤3还包括根据修改情况确定回滚操作,并将回滚操作记录到安装日志中。
5.根据权利要求1所述的安卓应用安装优化方法,其特征在于,安卓系统内文件的修改情况包括新建文件操作、删除文件操作、移动文件操作、修改文件属性操作及修改文件内容操作。
6.根据权利要求5所述的安卓应用安装优化方法,其特征在于,当为新建文件操作时,其操作参数为文件全路径,则记录当前的操作参数及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为删除全路径对应的文件,再将当前操作的操作参数、回滚操作及时间戳保存到安装日志中;
当为删除文件操作时,操作参数为原文件全路径,则将操作参数对应的文件移动到设定目录下得到移动后的文件全路径,记为新文件全路径,记录当前的操作参数、新文件全路径及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将新文件全路径对应的文件恢复至原文件全路径,再将当前操作的操作参数、新文件全路径、回滚操作及时间戳保存到安装日志中;
当为移动文件操作时,操作参数包括原文件全路径及新文件全路径,则记录当前的操作参数及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将新文件全路径对应的文件恢复至原文件全路径,再将当前操作的操作参数、回滚操作及时间戳保存到安装日志中;
当为修改文件属性操作时,操作参数包括文件全路径、原属性及新属性,则记录当前的操作参数及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将文件全路径对应的文件的新属性恢复为原属性,再将当前操作的操作参数、回滚操作及时间戳保存到安装日志中;
当为修改文件内容操作时,操作参数包括文件全路径、修改位置、修改长度、原内容及新内容,则记录当前的操作参数及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将文件全路径对应的文件中修改位置处的、长度为修改长度的新内容恢复为原内容,再将当前操作的操作参数、回滚操作及时间戳保存到安装日志中。
7.根据权利要求1所述的安卓应用安装优化方法,其特征在于,安卓系统内系统配置的修改情况包括新建配置操作、删除配置操作、重命名配置操作及修改配置属性操作。
8.根据权利要求7所述的安卓应用安装优化方法,其特征在于,当为新建配置操作时,操作参数为配置名称及配置属性,则记录当前的操作参数及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为删除名为配置名称的配置,再将当前操作的操作参数、回滚操作及时间戳保存到安装日志中;
当为删除配置操作时,操作参数为配置名称,则将配置名称修改为设定名称,记录当前的操作参数、设定名称及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将设定名称恢复为配置名称,再将当前操作的操作参数、设定名称、回滚操作及时间戳保存到安装日志中;
当为重命名配置操作时,操作参数为原配置名称及新配置名称,则记录当前的操作参数及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将新配置名称恢复为原配置名称,再将当前操作的操作参数、回滚操作及时间戳保存到安装日志中;
当为修改配置属性操作时,操作参数为配置名称、原属性及新属性,则记录当前的操作参数及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将名为配置名称的新属性恢复为原属性,再将当前操作的操作参数、回滚操作及时间戳保存到安装日志中。
9.根据权利要求8所述的安卓应用安装优化方法,其特征在于,当为删除配置操作时,操作参数为配置名称,将名为配置名称的配置保存至设定文件,记录当前的操作参数、设定文件及操作时间,将操作时间作为时间戳,当前操作对应的回滚操作为将设定文件中保存的配置恢复到系统配置中,再将当前操作的操作参数、设定文件、回滚操作及时间戳保存到安装日志中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310138598.XA CN115879098B (zh) | 2023-02-20 | 2023-02-20 | 一种基于原子事务操作的安卓应用安装优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310138598.XA CN115879098B (zh) | 2023-02-20 | 2023-02-20 | 一种基于原子事务操作的安卓应用安装优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115879098A CN115879098A (zh) | 2023-03-31 |
CN115879098B true CN115879098B (zh) | 2023-05-05 |
Family
ID=85761329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310138598.XA Active CN115879098B (zh) | 2023-02-20 | 2023-02-20 | 一种基于原子事务操作的安卓应用安装优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115879098B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104092544A (zh) * | 2014-06-26 | 2014-10-08 | 工业和信息化部计算机与微电子发展研究中心(中国软件评测中心) | 兼容安卓应用的服务签名方法与装置 |
CN105787357A (zh) * | 2016-03-28 | 2016-07-20 | 福建联迪商用设备有限公司 | 一种基于安卓系统apk下载方法及其系统 |
CN106294068A (zh) * | 2016-08-03 | 2017-01-04 | 福建星海通信科技有限公司 | 一种安卓系统apk监控管理方法及其装置 |
CN110378118A (zh) * | 2019-06-26 | 2019-10-25 | 南京理工大学 | 高效准确的安卓应用第三方库检测方法 |
CN114860327A (zh) * | 2022-07-07 | 2022-08-05 | 北京麟卓信息科技有限公司 | 一种安卓兼容环境中安卓应用的快速启动方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101212481A (zh) * | 2007-12-21 | 2008-07-02 | 华为技术有限公司 | 一种事务控制方法、系统和装置 |
-
2023
- 2023-02-20 CN CN202310138598.XA patent/CN115879098B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104092544A (zh) * | 2014-06-26 | 2014-10-08 | 工业和信息化部计算机与微电子发展研究中心(中国软件评测中心) | 兼容安卓应用的服务签名方法与装置 |
CN105787357A (zh) * | 2016-03-28 | 2016-07-20 | 福建联迪商用设备有限公司 | 一种基于安卓系统apk下载方法及其系统 |
CN106294068A (zh) * | 2016-08-03 | 2017-01-04 | 福建星海通信科技有限公司 | 一种安卓系统apk监控管理方法及其装置 |
CN110378118A (zh) * | 2019-06-26 | 2019-10-25 | 南京理工大学 | 高效准确的安卓应用第三方库检测方法 |
CN114860327A (zh) * | 2022-07-07 | 2022-08-05 | 北京麟卓信息科技有限公司 | 一种安卓兼容环境中安卓应用的快速启动方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115879098A (zh) | 2023-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20110138374A1 (en) | Downtime reduction for enterprise manager patching | |
US7568183B1 (en) | System and method for automation testing and validation | |
JP4436036B2 (ja) | 情報処理装置、トレース処理方法、プログラム及び記録媒体 | |
TWI548987B (zh) | 用於藉由提供預先建立環境之即時有效性來部署用於測試之環境的方法、系統、及電腦可讀取儲存裝置 | |
US9280554B2 (en) | Using confidence values for synchronizing file systems | |
EP1062569B1 (en) | Isolation levels and compensating transactions in an information system | |
US7606842B2 (en) | Method of merging a clone file system with an original file system | |
CA3159788A1 (en) | Version releasing method and device based on multi-environment offline task | |
US8918783B2 (en) | Managing virtual computers simultaneously with static and dynamic dependencies | |
JP6788178B2 (ja) | 設定支援プログラム、設定支援方法及び設定支援装置 | |
CN111610989B (zh) | 一种面向离线容器云环境的应用发布/更新方法及系统 | |
KR20110086732A (ko) | 어플리케이션 복구 포인트들 | |
CN111694750A (zh) | 一种软件测试环境的构建方法及装置 | |
US20080172579A1 (en) | Test Device For Verifying A Batch Processing | |
WO2022242372A1 (zh) | 对象处理方法、装置、计算机设备和存储介质 | |
CN115879098B (zh) | 一种基于原子事务操作的安卓应用安装优化方法 | |
CN110494849A (zh) | 用于确定跨平台应用迁移的成功的系统和方法 | |
CN109271199A (zh) | 一种用于数据库持续集成与脚本文件管理的方法及系统 | |
CN112764789A (zh) | 一种分布式软件升级方法及节点 | |
CN107220897B (zh) | 一种收益入账的处理方法和装置以及处理系统 | |
US8584117B2 (en) | Method to make SMP/E based products self describing | |
CN113448493B (zh) | 用于备份数据的方法、电子设备和计算机可读介质 | |
CN114490570A (zh) | 生产数据同步方法、装置、数据同步系统及服务器 | |
CA2299850C (en) | System and method for the management of computer software maintenance | |
CN112799684B (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 |