CN109271181A - 应用兼容性修复方法、终端设备及计算机可读存储介质 - Google Patents
应用兼容性修复方法、终端设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109271181A CN109271181A CN201710578502.6A CN201710578502A CN109271181A CN 109271181 A CN109271181 A CN 109271181A CN 201710578502 A CN201710578502 A CN 201710578502A CN 109271181 A CN109271181 A CN 109271181A
- Authority
- CN
- China
- Prior art keywords
- default
- binary file
- compatibility
- application
- repaired
- 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
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种应用兼容性修复方法,该应用兼容性修复方法包括:在恢复模式下基于升级包完成***版本升级时,将所述升级包携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***;在***完成用户数据分区的解密挂载,并识别到所述预设标志位被置位时,调用预设可执行二进制文件;使用所述预设可执行二进制文件执行所述预设脚本中的兼容性修复操作指令,以完成对待修复应用的兼容性修复。本发明还公开了一种终端设备和计算机可读存储介质。本发明能够在应用出现兼容性问题时,通过***升级的方式修复应用兼容性故障。
Description
技术领域
本发明涉及智能终端技术领域,尤其涉及一种应用兼容性修复方法、终端设备及计算机可读存储介质。
背景技术
自Android L开始,Google引入了用户数据分区的FDE(Full Disk Encryption,全盘加密)机制以保护用户数据的安全性,即运用一套加密方法对包括所有用户数据在内的用户数据分区进行全盘加密。对于一个启用了FDE机制的设备来说,所有写入到用户数据分区的数据都会先进行加密后再写入,同时在读取用户数据分区内数据时也会先对数据进行解密操作然后才能正常读取。加密机制的引入封堵了一条黑客或攻击者非法获取用户数据的重要渠道。
然而,在进行***版本升级或回退版本时,部分应用可能因为架构调整等原因,不能做到向上兼容或向下兼容,导致升级或回退后应用出现异常等故障。对于部分出现类似情况的应用,通常通过升级时删除该应用发生冲突的数据库文件即可解决。然而,在引入了全盘加密机制之后,恢复模式下进行的版本升级/回退过程,因为缺少相应的加解密机制,而无法挂载、读写用户数据,导致无法再通过升级修复应用兼容性故障。
发明内容
本发明的主要目的在于提供一种应用兼容性修复方法、终端设备及计算机可读存储介质,旨在解决现有技术的上述缺陷。
为实现上述目的,本发明提供一种应用兼容性修复方法,所述应用兼容性修复方法包括:
在恢复模式下基于升级包完成***版本升级时,将所述升级包携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***;
在***完成用户数据分区的解密挂载,并识别到所述预设标志位被置位时,调用预设可执行二进制文件;
使用所述预设可执行二进制文件执行所述预设脚本中的兼容性修复操作指令,以完成对待修复应用的兼容性修复。
可选地,所述预设可执行二进制文件包括update-binary文件,在将所述升级包携带的预设脚本储存至缓存分区同时,还执行以下步骤:
将所述升级包携带的update-binary文件储存至所述缓存分区;
所述调用预设可执行二进制文件的步骤包括:
调用所述缓存分区中储存的update-binary文件。
可选地,所述使用所述预设可执行二进制文件执行预设脚本中的兼容性修复操作指令,完成对待修复应用的兼容性修复的步骤之后,还包括:
删除所述缓存分区中储存的所述update-binary文件以及所述预设脚本,并将所述预设标志位复位。
可选地,所述调用所述缓存分区中储存的update-binary文件的步骤之前,还包括:
在***完成用户数据分区的解密挂载,并识别到所述预设标志位被置位时,关闭SELinux服务;
在关闭SELinux服务之后,调用所述缓存分区中储存的update-binary文件。
可选地,所述使用所述预设可执行二进制文件执行预设脚本中的兼容性修复操作指令的步骤之后,还包括:
在完成对待修复应用的兼容性修复之后,开启SELinux服务。
可选地,所述在恢复模式下基于升级包完成***版本升级时,将所述升级包携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***的步骤之前,还包括:
获取并储存预设可执行二进制文件,以供调用。
可选地,所述获取并储存预设可执行二进制文件的步骤之后,还包括:
为所述预设可执行二进制文件配置SELinux权限。
可选地,所述使用所述预设可执行二进制文件执行预设脚本中的兼容性修复操作指令,以完成对待修复应用的兼容性修复的步骤之后,还包括:
在完成对待修复应用的兼容性修复之后,继续开机流程,并在开机之后,输出***版本升级成功的提示信息。
进一步地,本发明还提供一种终端设备,该终端设备包括:
存储有应用兼容性修复程序的存储器;
处理器,配置为执行所述应用兼容性修复程序以实现以下步骤:
在恢复模式下基于升级包完成***版本升级时,将所述升级包携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***;
在***完成用户数据分区的解密挂载,并识别到所述预设标志位被置位时,调用预设可执行二进制文件;
使用所述预设可执行二进制文件执行所述预设脚本中的兼容性修复操作指令,以完成对待修复应用的兼容性修复。
进一步地,本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有应用兼容性修复程序,所述应用兼容性修复程序被处理器执行时实现以下步骤:
在恢复模式下基于升级包完成***版本升级时,将所述升级包携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***;
在***完成用户数据分区的解密挂载,并识别到所述预设标志位被置位时,调用预设可执行二进制文件;
使用所述预设可执行二进制文件执行所述预设脚本中的兼容性修复操作指令,以完成对待修复应用的兼容性修复。
本发明应用于终端设备,当终端设备在恢复模式下基于升级包完成***版本升级时,将升级包中携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***,通过该预设标志位触发对待修复应用的兼容性修复。在终端设备开机过程中,当***完成用户数据分区的解密挂载,且识别到所述预设标志位被置位时,利用这个短暂的时间点对待修复应用进行修复,具体调用预设可执行二进制文件,使用该预设可执行二进制文件执行预设脚本中的兼容性修复操作指令,完成对待修复应用的兼容性修复,从而在应用出现兼容性问题时,能够通过***升级的方式修复应用兼容性故障。
附图说明
图1为本发明终端设备第一实施例的结构示意图;
图2为本发明应用兼容性修复方法第一实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:当终端设备在恢复模式下基于升级包完成***版本升级时,将升级包中携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***,通过该预设标志位触发对待修复应用的兼容性修复。在终端设备开机过程中,当***完成用户数据分区的解密挂载,且识别到所述预设标志位被置位时,利用这个短暂的时间点对待修复应用进行修复,具体调用预设可执行二进制文件,使用该预设可执行二进制文件执行预设脚本中的兼容性修复操作指令,完成对待修复应用的兼容性修复,从而在应用出现兼容性问题时,通过***升级的方式修复应用兼容性故障。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端设备的结构示意图。
如图1所示,该终端设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口等。网络接口1004可选的可以包括标准的有线接口、无线接口(如Wi-Fi接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的终端设备结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,在本发明终端设备的第一实施例中,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及应用兼容性修复程序。
在图1所示的终端设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的应用兼容性修复程序,并执行以下操作:
在恢复模式下基于升级包完成***版本升级时,将升级包携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***;
在***完成用户数据分区的解密挂载,并识别到预设标志位被置位时,调用预设可执行二进制文件;
使用预设可执行二进制文件执行预设脚本中的兼容性修复操作指令,以完成对待修复应用的兼容性修复。
进一步地,预设可执行二进制文件包括update-binary文件,处理器1001可以用于调用存储器1005中存储的应用兼容性修复程序,还执行以下操作:
将升级包携带的update-binary文件储存至所述缓存分区。
进一步地,处理器1001可以用于调用存储器1005中存储的应用兼容性修复程序,还执行以下操作:
调用缓存分区中储存的update-binary文件。
进一步地,处理器1001可以用于调用存储器1005中存储的应用兼容性修复程序,还执行以下操作:
删除缓存分区中储存的update-binary文件以及预设脚本,并将预设标志位复位。
进一步地,处理器1001可以用于调用存储器1005中存储的应用兼容性修复程序,还执行以下操作:
在***完成用户数据分区的解密挂载,并识别到预设标志位被置位时,关闭SELinux服务;
在关闭SELinux服务之后,调用缓存分区中储存的update-binary文件。
进一步地,处理器1001可以用于调用存储器1005中存储的应用兼容性修复程序,还执行以下操作:
在完成对待修复应用的兼容性修复之后,开启SELinux服务。
进一步地,处理器1001可以用于调用存储器1005中存储的应用兼容性修复程序,还执行以下操作:
获取并储存预设可执行二进制文件,以供调用。
进一步地,处理器1001可以用于调用存储器1005中存储的应用兼容性修复程序,还执行以下操作:
为前述预设可执行二进制文件配置SELinux权限。
进一步地,处理器1001可以用于调用存储器1005中存储的应用兼容性修复程序,还执行以下操作:
在完成对待修复应用的兼容性修复之后,继续开机流程,并在开机之后,输出***版本升级成功的提示信息。
进一步地,本发明还提供一种应用兼容性修复方法,应用于终端设备,参照图2,在本发明应用兼容性修复方法的第一实施例中,该应用兼容性修复方法包括:
步骤S10,在恢复模式下基于升级包完成***版本升级时,将升级包携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***;
步骤S20,在***完成用户数据分区的解密挂载,并识别到预设标志位被置位时,调用预设可执行二进制文件;
步骤S30,使用预设可执行二进制文件执行预设脚本中的兼容性修复操作指令,以完成对待修复应用的兼容性修复。
需要说明的是,对于启用了全盘加密的安卓***的终端设备,在正常开机的过程中,有一个短暂的时间点,在该时间点用户数据分区将被解密。有鉴于此,本发明在不移植加解密机制到恢复模式的前提下,利用这个短暂的时间点对出现兼容性问题的应用进行修复。
当某个应用出现兼容性问题时,将该出现兼容性问题的应用记为待修复应用。针对于该待修复应用出现的兼容性问题,开发人员对应编写解决其兼容性问题的兼容性修复操作指令,将这些兼容性修复操作指令写入预设脚本中,并将该预设脚本打包至升级包,之后,将升级包部署到升级服务器。
另一方面,用户可操作终端设备从升级服务器下载到携带有预设脚本的升级包,之后,用户可按照正常的升级流程操作终端设备进入恢复模式进行升级操作。例如,在终端设备关机状态下,用户可同时按下终端设备的音量上键和电源键,触发终端设备进入恢复模式,在进入恢复模式之后,可通过按键选中之前下载的,携带有预设脚本的升级包,触发终端设备进行升级操作。
在本发明实施例中,当终端设备基于升级包在恢复模式执行完升级各个分区的操作之后,首先检测升级包中是否存在预设脚本。
其中,在检测到升级包中不存在预设脚本时,则直接重启***,进行开机。
在检测到升级包中存在预设脚本时,则在重启***之前,将升级包携带的预设脚本储存至缓存分区,同时将预设标志位置位,其中,该预设标志位用于表征是否需要执行预设脚本中的兼容性修复操作指令,例如,将预设标志位flag置“1”,表示需要执行预设脚本中的兼容性修复操作指令。
在将预设标志位置位之后,触发重启***,终端设备进入正常的安卓***的开机流程。
在终端设备开机过程中,***会检查加密类型。需要说明的是,目前存在两种加密类型,即使用默认密钥进行加密的默认加密方式,和用户自定义密码同时用作开机密码的自定义密钥加密方式。当设备使用默认密钥进行加密时,***的Vold(全称为VolumeDaemon,用于管理和控制外部存储设备,包括但不限于外部存储设备的插拨、挂载、卸载、格式化等)进程将会调用defaultcrypto服务对用户数据分区进行挂载解密;当设备使用用户自定义密钥进行加密时,Vold进程会启动framework(框架),并弹出密码框,提示用户输入密码,在用户输入正确的密码后,Vold挂载解密后的用户数据分区。
在***完成用户数据分区的解密挂载之后,识别预设标志位是否被置位,在本实施例中,此时将识别到前述预设标志位被置位。之后,调用预设可执行二进制文件。需要说明的是,该预设可执行二进制文件封装有对文件操作的相关函数,对待修复应用执行的兼容性修复操作直接调用该预设可执行二进制文件的相关接口实现。换言之,之前在制作升级包时,需要按照该预设可执行二进制文件的相关接口,对应编写兼容性修复操作指令到预设脚本中,然后将预设脚本打包至升级包中。
在完成前述预设可执行二进制文件的调用之后,即可使用该预设可执行二进制文件执行预设脚本中的兼容性修复操作指令,以对待修复应用进行相应的兼容性修复操作,完成对待修复应用的兼容性修复。例如,某应用因数据库文件冲突导致兼容性问题,则开发人员可编写执行删除该冲突数据库文件的操作的兼容性修复操作指令,当后续该兼容性修复操作指令被执行时,冲突数据库文件将被删除,达到修复该应用兼容性的目的。
进一步地,在本实施例中,步骤S30之后,还包括:
在完成对待修复应用的兼容性修复之后,继续开机流程,并在开机之后,输出***版本升级成功的提示信息。
本发明提出的应用兼容性修复方法,应用于终端设备,当终端设备在恢复模式下基于升级包完成***版本升级时,将升级包中携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***,通过该预设标志位触发对待修复应用的兼容性修复。在终端设备开机过程中,当***完成用户数据分区的解密挂载,且识别到所述预设标志位被置位时,利用这个短暂的时间点对待修复应用进行修复,具体调用预设可执行二进制文件,使用该预设可执行二进制文件执行预设脚本中的兼容性修复操作指令,完成对待修复应用的兼容性修复,从而在应用出现兼容性问题时,能够通过***升级的方式修复应用兼容性故障。
进一步地,基于第一实施例,提出了本发明应用兼容性修复方法的第二实施例,在本实施例中,预设可执行二进制文件包括update-binary文件,在将升级包携带的预设脚本储存至缓存分区同时,还执行以下步骤:
将升级包携带的update-binary文件储存至缓存分区;
前述调用预设可执行二进制文件的步骤包括:
调用缓存分区中储存的update-binary文件。
需要说明的是,在现有技术中,由于升级包中的update-binary文件已经封装有对文件操作的相关函数,因此,可直接采用update-binary文件作为修复使用的预设可执行二进制文件。
相应的,在制作升级包时,开发人员需要按照***升级时调用的update-binary文件可识别的接口,对应编写兼容性修复操作指令到预设脚本中,然后将预设脚本打包至升级包中。
在本实施例中,除了将升级包携带的预设脚本储存至缓存分区之外,还需要将升级包携带的update-binary文件储存至缓存分区,以供调用。
之后,在***完成用户数据分区的解密挂载,并识别到预设标志位被置位时,则可直接调用缓存分区中储存的update-binary文件,进而使用update-binary文件来执行预设脚本中的兼容性修复操作指令,完成对待修复应用的兼容性修复。
容易理解的是,在执行完成预设脚本中的兼容性修复操作指令,也即是对待修复应用进行相应的兼容性修复操作之后,将完成对待修复应用的兼容性修复。显然的,此时缓存分区中储存的update-binary文件以及预设脚本没有必要继续存在,在本实施例中,步骤S30之后,还包括以下步骤:
删除缓存分区中储存的update-binary文件以及预设脚本,并将预设标志位复位。
其中,由于预设标志位用于表征是否需要执行预设脚本中的兼容性修复操作指令,在删除预设脚本之后,显然不需要执行预设脚本中的兼容性修复操作指令,也无法执行,此时将预设标志位复位。
进一步地,基于第二实施例,提出本发明应用兼容性修复方法的第三实施例,在本实施例中,在调用缓存分区中储存的update-binary文件的步骤之前,还包括:
在***完成用户数据分区的解密挂载,并识别到预设标志位被置位时,关闭SELinux服务;
在关闭SELinux服务之后,调用缓存分区中储存的update-binary文件。
需要说明的是,SELinux全称为Security Enhanced Linux,是由美国国家***领导开发,可以理解为是一种安全机制。以Linux为基础的安卓***通常默认开启SELinux服务,而在SELinux服务开启时,update-binary文件不具备对用户数据分区进行操作的权限。
为此,在本发明实施例中,在***完成用户数据分区的解密挂载,并识别到预设标志位被置位时,若***的SELinux服务处于开启状态,则关闭SELinux服务,以授予update-binary文件操作用户数据分区的权限。
之后,则可调用缓存分区中储存的update-binary文件对待修复应用进行修复,具体可参照前述第二实施例的相关描述,此处不再赘述。
进一步地,基于第一实施例,提出本发明应用兼容性修复方法的第四实施例,在本实施例中,步骤S10之前,还包括:
获取并储存预设可执行二进制文件,以供调用。
需要说明的是,本实施例在前述第一实施例的基础上,增加了获取并储存预设可执行二进制文件的操作,与第三实施例区别在于,本实施例并不借用升级时使用的update-binary文件来执行预设脚本中的兼容性修复操作指令,而是重新定义一个专门用于处理用户数据分区下文件的模块,将该模块编译生成一个可执行二进制文件,记为预设可执行二进制文件。
在具体实施时,开发人员在编译得到预设可执行二进制文件之后,可将该预设可执行二进制文件打包进升级包中,进而在终端设备获取到该升级包之后,通过***升级的方式将该预设可执行二进制文件储存到***的预设路径下,如将该预设可执行二进制文件储存到***的/system/bin路径下。
进一步地,考虑到该预设可执行二进制文件不具备对用户数据分区进行操作的权限问题,在本实施例中,前述获取并储存预设可执行二进制文件之后,还包括:
为前述预设可执行二进制文件配置SELinux权限。
本实施例通过预先为预设可执行二进制文件配置SELinux权限,使得该预设可执行二进制文件获得对用户数据分区进行操作的权限,从而在执行前述预设脚本中的兼容性修复操作指令之前,无需关闭***的SELinux权限,确保***的安全性不受影响。
进一步地,本发明还提供一种应用兼容性修复装置,应用于终端设备,在本发明应用兼容性修复装置的第一实施例中,对应于前述兼容性修复方法的第一实施例,该应用兼容性修复装置包括:
处理模块,用于在恢复模式下基于升级包完成***版本升级时,将升级包携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***;
调用模块,用于在***完成用户数据分区的解密挂载,并识别到预设标志位被置位时,调用预设可执行二进制文件;
执行模块,用于使用预设可执行二进制文件执行预设脚本中的兼容性修复操作指令,以完成对待修复应用的兼容性修复。
需要说明的是,对于启用了全盘加密的安卓***的终端设备,在正常开机的过程中,有一个短暂的时间点,在该时间点用户数据分区将被解密。有鉴于此,本发明在不移植加解密机制到恢复模式的前提下,利用这个短暂的时间点对出现兼容性问题的应用进行修复。
当某个应用出现兼容性问题时,将该出现兼容性问题的应用记为待修复应用。针对于该待修复应用出现的兼容性问题,开发人员对应编写解决其兼容性问题的兼容性修复操作指令,将这些兼容性修复操作指令写入预设脚本中,并将该预设脚本打包至升级包,之后,将升级包部署到升级服务器。
另一方面,用户可操作终端设备从升级服务器下载到携带有预设脚本的升级包,之后,用户可按照正常的升级流程操作终端设备进入恢复模式进行升级操作。例如,在终端设备关机状态下,用户可同时按下终端设备的音量上键和电源键,触发终端设备进入恢复模式,在进入恢复模式之后,可通过按键选中之前下载的,携带有预设脚本的升级包,触发终端设备进行升级操作。
在本发明实施例中,当终端设备基于升级包在恢复模式执行完升级各个分区的操作之后,处理模块首先检测升级包中是否存在预设脚本。
其中,在检测到升级包中不存在预设脚本时,则处理模块控制终端设备直接重启***,进行开机。
在检测到升级包中存在预设脚本时,则在终端设备重启***之前,处理模块将升级包携带的预设脚本储存至终端设备的缓存分区,同时将预设标志位置位,其中,该预设标志位用于表征是否需要执行预设脚本中的兼容性修复操作指令,例如,将预设标志位flag置“1”,表示需要执行预设脚本中的兼容性修复操作指令。
在将预设标志位置位之后,处理模块触发终端设备重启***,此时,终端设备进入正常的安卓***的开机流程。
在终端设备开机过程中,***会检查加密类型。需要说明的是,目前存在两种加密类型,即使用默认密钥进行加密的默认加密方式,和用户自定义密码同时用作开机密码的自定义密钥加密方式。当设备使用默认密钥进行加密时,***的Vold(全称为VolumeDaemon,用于管理和控制外部存储设备,包括但不限于外部存储设备的插拨、挂载、卸载、格式化等)进程将会调用defaultcrypto服务对用户数据分区进行挂载解密;当设备使用用户自定义密钥进行加密时,Vold进程会启动framework(框架),并弹出密码框,提示用户输入密码,在用户输入正确的密码后,Vold挂载解密后的用户数据分区。
在***完成用户数据分区的解密挂载之后,调用模块识别预设标志位是否被置位,在本实施例中,此时调用模块将识别到前述预设标志位被置位。之后,调用模块调用预设可执行二进制文件。需要说明的是,该预设可执行二进制文件封装有对文件操作的相关函数,对待修复应用执行的兼容性修复操作直接调用该预设可执行二进制文件的相关接口实现。换言之,之前在制作升级包时,需要按照该预设可执行二进制文件的相关接口,对应编写兼容性修复操作指令到预设脚本中,然后将预设脚本打包至升级包中。
在调用模块完成前述预设可执行二进制文件的调用之后,执行模块即可使用该预设可执行二进制文件执行预设脚本中的兼容性修复操作指令,以对待修复应用进行相应的兼容性修复操作,完成对待修复应用的兼容性修复。例如,某应用因数据库文件冲突导致兼容性问题,则开发人员可编写执行删除该冲突数据库文件的操作的兼容性修复操作指令,当后续该兼容性修复操作指令被执行时,冲突数据库文件将被删除,达到修复该应用兼容性的目的。
进一步地,在本实施例中,应用兼容性修复装置还包括:
提示模块,用于在完成对待修复应用的兼容性修复之后,继续开机流程,并在开机之后,输出***版本升级成功的提示信息。
本发明提出的应用兼容性修复装置,应用于终端设备,当终端设备在恢复模式下基于升级包完成***版本升级时,将升级包中携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***,通过该预设标志位触发对待修复应用的兼容性修复。在终端设备开机过程中,当***完成用户数据分区的解密挂载,且识别到所述预设标志位被置位时,利用这个短暂的时间点对待修复应用进行修复,具体调用预设可执行二进制文件,使用该预设可执行二进制文件执行预设脚本中的兼容性修复操作指令,完成对待修复应用的兼容性修复,从而在应用出现兼容性问题时,能够通过***升级的方式修复应用兼容性故障。
进一步地,基于第一实施例,提出了本发明应用兼容性修复装置的第二实施例,对应于前述应用兼容性修复方法第二实施例,在本实施例中,预设可执行二进制文件包括update-binary文件,处理模块还用于将升级包携带的update-binary文件储存至缓存分区;
调用模块还用于调用缓存分区中储存的update-binary文件。
需要说明的是,在现有技术中,由于升级包中的update-binary文件已经封装有对文件操作的相关函数,因此,可直接采用update-binary文件作为修复使用的预设可执行二进制文件。
相应的,在制作升级包时,开发人员需要按照***升级时调用的update-binary文件可识别的接口,对应编写兼容性修复操作指令到预设脚本中,然后将预设脚本打包至升级包中。
在本实施例中,处理模块除了将升级包携带的预设脚本储存至缓存分区之外,还需要将升级包携带的update-binary文件储存至缓存分区,以供调用。
之后,调用模块在***完成用户数据分区的解密挂载,并识别到预设标志位被置位时,则可直接调用缓存分区中储存的update-binary文件,进而由执行模块使用update-binary文件来执行预设脚本中的兼容性修复操作指令,完成对待修复应用的兼容性修复。
容易理解的是,在执行完成预设脚本中的兼容性修复操作指令,也即是对待修复应用进行相应的兼容性修复操作之后,将完成对待修复应用的兼容性修复。显然的,此时缓存分区中储存的update-binary文件以及预设脚本没有必要继续存在,在本实施例中,处理模块还用于删除缓存分区中储存的update-binary文件以及预设脚本,并将预设标志位复位。
其中,由于预设标志位用于表征是否需要执行预设脚本中的兼容性修复操作指令,在删除预设脚本之后,显然不需要执行预设脚本中的兼容性修复操作指令,也无法执行,此时处理模块将预设标志位复位。
进一步地,基于第二实施例,提出本发明应用兼容性修复装置的第三实施例,对应于前述应用兼容性修复方法的第三实施例,在本实施例中,调用模块还用于在***完成用户数据分区的解密挂载,并识别到预设标志位被置位时,关闭SELinux服务;还用于在关闭SELinux服务之后,调用缓存分区中储存的update-binary文件。
需要说明的是,SELinux全称为Security Enhanced Linux,是由美国国家***领导开发,可以理解为是一种安全机制。以Linux为基础的安卓***通常默认开启SELinux服务,而在SELinux服务开启时,update-binary文件不具备对用户数据分区进行操作的权限。
为此,在本发明实施例中,调用模块在***完成用户数据分区的解密挂载,并识别到预设标志位被置位时,若***的SELinux服务处于开启状态,则关闭SELinux服务,以授予update-binary文件操作用户数据分区的权限。
之后,则可调用缓存分区中储存的update-binary文件对待修复应用进行修复,具体可参照前述第二实施例的相关描述,此处不再赘述。
进一步地,基于第一实施例,提出本发明应用兼容性修复装置的第四实施例,对应于前述应用兼容性修复方法的第四实施例,在本实施例中,应用兼容性修复装置还包括获取模块,应用获取并储存预设可执行二进制文件,以供调用。
需要说明的是,本实施例在前述第一实施例的基础上,增加了获取并储存预设可执行二进制文件的操作,与第三实施例区别在于,本实施例并不借用升级时使用的update-binary文件来执行预设脚本中的兼容性修复操作指令,而是重新定义一个专门用于处理用户数据分区下文件的模块,将该模块编译生成一个可执行二进制文件,记为预设可执行二进制文件。
在具体实施时,开发人员在编译得到预设可执行二进制文件之后,可将该预设可执行二进制文件打包进升级包中,进而在获取模块获取到该升级包之后,通过***升级的方式将该预设可执行二进制文件储存到***的预设路径下,如将该预设可执行二进制文件储存到***的/system/bin路径下。
进一步地,考虑到该预设可执行二进制文件不具备对用户数据分区进行操作的权限问题,在本实施例中,应用兼容性修复装置还包括:
配置模块,用于为前述预设可执行二进制文件配置SELinux权限。
本实施例通过配置模块预先为预设可执行二进制文件配置SELinux权限,使得该预设可执行二进制文件获得对用户数据分区进行操作的权限,从而在执行前述预设脚本中的兼容性修复操作指令之前,无需关闭***的SELinux权限,确保***的安全性不受影响。
进一步地,本发明还提供一种计算机可读存储介质,在一实施例中,该计算机可读存储介质上存储有应用兼容性修复程序,该应用兼容性修复程序被处理器1001执行时实现如下操作:
在恢复模式下基于升级包完成***版本升级时,将升级包携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***;
在***完成用户数据分区的解密挂载,并识别到预设标志位被置位时,调用预设可执行二进制文件;
使用预设可执行二进制文件执行预设脚本中的兼容性修复操作指令,以完成对待修复应用的兼容性修复。
进一步地,预设可执行二进制文件包括update-binary文件,前述应用兼容性修复程序被处理器1001执行时,还实现如下操作:
将升级包携带的update-binary文件储存至所述缓存分区。
进一步地,前述应用兼容性修复程序被处理器1001执行时,还实现如下操作:
调用缓存分区中储存的update-binary文件。
进一步地,前述应用兼容性修复程序被处理器1001执行时,还实现如下操作:
删除缓存分区中储存的update-binary文件以及预设脚本,并将预设标志位复位。
进一步地,前述应用兼容性修复程序被处理器1001执行时,还实现如下操作:
在***完成用户数据分区的解密挂载,并识别到预设标志位被置位时,关闭SELinux服务;
在关闭SELinux服务之后,调用缓存分区中储存的update-binary文件。
进一步地,前述应用兼容性修复程序被处理器1001执行时,还实现如下操作:
在完成对待修复应用的兼容性修复之后,开启SELinux服务。
进一步地,前述应用兼容性修复程序被处理器1001执行时,还实现如下操作:
获取并储存预设可执行二进制文件,以供调用。
进一步地,前述应用兼容性修复程序被处理器1001执行时,还实现如下操作:
为前述预设可执行二进制文件配置SELinux权限。
进一步地,前述应用兼容性修复程序被处理器1001执行时,还实现如下操作:
在完成对待修复应用的兼容性修复之后,继续开机流程,并在开机之后,输出***版本升级成功的提示信息。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (10)
1.一种应用兼容性修复方法,其特征在于,所述应用兼容性修复方法包括以下步骤:
在恢复模式下基于升级包完成***版本升级时,将所述升级包携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***;
在***完成用户数据分区的解密挂载,并识别到所述预设标志位被置位时,调用预设可执行二进制文件;
使用所述预设可执行二进制文件执行所述预设脚本中的兼容性修复操作指令,以完成对待修复应用的兼容性修复。
2.根据权利要求1所述的应用兼容性修复方法,其特征在于,所述预设可执行二进制文件包括update-binary文件,在将所述升级包携带的预设脚本储存至缓存分区同时,还执行以下步骤:
将所述升级包携带的update-binary文件储存至所述缓存分区;
所述调用预设可执行二进制文件的步骤包括:
调用所述缓存分区中储存的所述update-binary文件。
3.根据权利要求2所述的应用兼容性修复方法,其特征在于,所述使用所述预设可执行二进制文件执行预设脚本中的兼容性修复操作指令,完成对待修复应用的兼容性修复的步骤之后,还包括:
删除所述缓存分区中储存的所述update-binary文件以及所述预设脚本,并将所述预设标志位复位。
4.根据权利要求2所述的应用兼容性修复方法,其特征在于,所述调用所述缓存分区中储存的update-binary文件的步骤之前,还包括:
在***完成用户数据分区的解密挂载,并识别到所述预设标志位被置位时,关闭SELinux服务;
在关闭SELinux服务之后,调用所述缓存分区中储存的update-binary文件。
5.根据权利要求4所述的应用兼容性修复方法,其特征在于,所述使用所述预设可执行二进制文件执行预设脚本中的兼容性修复操作指令的步骤之后,还包括:
在完成对待修复应用的兼容性修复之后,开启SELinux服务。
6.根据权利要求1所述的应用兼容性修复方法,其特征在于,所述在恢复模式下基于升级包完成***版本升级时,将所述升级包携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***的步骤之前,还包括:
获取并储存预设可执行二进制文件,以供调用。
7.根据权利要求6所述的应用兼容性修复方法,其特征在于,所述获取并储存预设可执行二进制文件的步骤之后,还包括:
为所述预设可执行二进制文件配置SELinux权限。
8.根据权利要求1-7任一项所述的应用兼容性修复方法,其特征在于,所述使用所述预设可执行二进制文件执行预设脚本中的兼容性修复操作指令,以完成对待修复应用的兼容性修复的步骤之后,还包括:
在完成对待修复应用的兼容性修复之后,继续开机流程,并在开机之后,输出***版本升级成功的提示信息。
9.一种终端设备,其特征在于,所述终端设备包括:
存储有应用兼容性修复程序的存储器;
处理器,配置为执行所述应用兼容性修复程序以实现以下步骤:
在恢复模式下基于升级包完成***版本升级时,将所述升级包携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***;
在***完成用户数据分区的解密挂载,并识别到所述预设标志位被置位时,调用预设可执行二进制文件;
使用所述预设可执行二进制文件执行所述预设脚本中的兼容性修复操作指令,以完成对待修复应用的兼容性修复。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有应用兼容性修复程序,所述应用兼容性修复程序被处理器执行时实现以下步骤:
在恢复模式下基于升级包完成***版本升级时,将所述升级包携带的预设脚本储存至缓存分区,并将预设标志位进行置位后重启***;
在***完成用户数据分区的解密挂载,并识别到所述预设标志位被置位时,调用预设可执行二进制文件;
使用所述预设可执行二进制文件执行所述预设脚本中的兼容性修复操作指令,以完成对待修复应用的兼容性修复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710578502.6A CN109271181A (zh) | 2017-07-14 | 2017-07-14 | 应用兼容性修复方法、终端设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710578502.6A CN109271181A (zh) | 2017-07-14 | 2017-07-14 | 应用兼容性修复方法、终端设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109271181A true CN109271181A (zh) | 2019-01-25 |
Family
ID=65152273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710578502.6A Pending CN109271181A (zh) | 2017-07-14 | 2017-07-14 | 应用兼容性修复方法、终端设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109271181A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688300A (zh) * | 2019-08-13 | 2020-01-14 | 平安科技(深圳)有限公司 | 兼容性测试方法、装置、设备及存储介质 |
CN110740366A (zh) * | 2019-10-12 | 2020-01-31 | 深圳创维-Rgb电子有限公司 | 通过外部存储介质自动维修电视的方法、装置和存储介质 |
CN110795149A (zh) * | 2019-10-09 | 2020-02-14 | 深圳市证通电子股份有限公司 | 终端平台运行方法、装置、设备及可读存储介质 |
CN113419756A (zh) * | 2021-06-18 | 2021-09-21 | 杭州海康威视数字技术股份有限公司 | 一种文件升级方法、装置及电子设备 |
-
2017
- 2017-07-14 CN CN201710578502.6A patent/CN109271181A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688300A (zh) * | 2019-08-13 | 2020-01-14 | 平安科技(深圳)有限公司 | 兼容性测试方法、装置、设备及存储介质 |
CN110795149A (zh) * | 2019-10-09 | 2020-02-14 | 深圳市证通电子股份有限公司 | 终端平台运行方法、装置、设备及可读存储介质 |
CN110740366A (zh) * | 2019-10-12 | 2020-01-31 | 深圳创维-Rgb电子有限公司 | 通过外部存储介质自动维修电视的方法、装置和存储介质 |
CN113419756A (zh) * | 2021-06-18 | 2021-09-21 | 杭州海康威视数字技术股份有限公司 | 一种文件升级方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102546601B1 (ko) | 정적 바이너리 계측을 사용하여 커널 제어-흐름 무결성을 보호하기 위한 방법 및 장치 | |
CN111984962B (zh) | 固件安全验证方法及装置 | |
CN109271181A (zh) | 应用兼容性修复方法、终端设备及计算机可读存储介质 | |
CN105354050B (zh) | 一种智能终端的应用软件调用方法 | |
CN104956374A (zh) | 用于软件防回滚恢复的方法 | |
US11222118B2 (en) | Method for updating selinux security policy and terminal | |
CN107783776B (zh) | 固件升级包的处理方法及装置、电子设备 | |
CN102831079B (zh) | 一种对移动终端进行检测的方法和移动终端 | |
US20090228877A1 (en) | Intelligent terminal and method for managing intelligent terminal system | |
US20160275019A1 (en) | Method and apparatus for protecting dynamic libraries | |
KR102036411B1 (ko) | 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩의 보안화 | |
US20080270782A1 (en) | Boot process | |
US9891862B2 (en) | Forensic data acquisition apparatus and method for guaranteeing integrity of flash memory in smart device | |
CN107688463B (zh) | 一种嵌入式设备版本文件打包的方法 | |
CN105573780A (zh) | 一种基于容器的移动终端操作***升级方法和装置 | |
JP2015222474A (ja) | 変数セットを修復する方法、コンピュータ・プログラムおよびコンピュータ | |
CA2925733A1 (en) | Encryption and decryption processing method, apparatus, and device | |
US9262631B2 (en) | Embedded device and control method thereof | |
CN107526608A (zh) | 一种ota升级包升级方法及设备 | |
US20230315432A1 (en) | Method for designing a firmware, firmware obtained by such a method and method for modifying such a firmware | |
CN109753793A (zh) | 一种热补丁方法及热补丁装置 | |
WO2018036166A1 (zh) | 一种读取升级包的方法及装置 | |
CN114398598A (zh) | 一种库文件加密方法、解密方法以及加密装置 | |
KR101638257B1 (ko) | 애플리케이션의 소스 코드 보호 방법 및 이를 수행하는 장치 | |
CN112231649A (zh) | 一种固件加密处理方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190125 |
|
WD01 | Invention patent application deemed withdrawn after publication |