CN107844306A - 应用程序的修复方法、装置、存储介质及终端 - Google Patents
应用程序的修复方法、装置、存储介质及终端 Download PDFInfo
- Publication number
- CN107844306A CN107844306A CN201710677088.4A CN201710677088A CN107844306A CN 107844306 A CN107844306 A CN 107844306A CN 201710677088 A CN201710677088 A CN 201710677088A CN 107844306 A CN107844306 A CN 107844306A
- Authority
- CN
- China
- Prior art keywords
- application program
- hotfix
- redaction
- application
- renewal process
- 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
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
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
本发明适用于通信技术领域,提供了一种应用程序的修复方法、装置、存储介质及终端,所述方法包括:当接收到应用程序的启动指令时,启动所述应用程序的应用进程,并同步注册、启动所述应用程序的更新进程;通过所述更新进程将所述应用程序的版本号或者MD5校验信息发送至服务器;通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第一下载地址,根据所述第一下载地址下载新版本的HotFix文件,并初始化HotFix的运行环境,在初始化完成后使用所下载的HotFix文件修复所述应用程序。本发明实施例通过开辟另外的进程来实现HotFix热修复,避免了在应用程序的应用进程上初始化HotFix的运行环境以及进行HotFix修复,有效地提高了应用程序运行的稳定性。
Description
技术领域
本发明属于通信技术领域,尤其涉及一种应用程序的修复方法、装置、存储介质及终端。
背景技术
HotFix,又称为热修复,是指以补丁的方式动态修复紧急Bug的技术,开发者不需要重新发布新版本的应用程序,用户也不需要重新下载新版本的应用程序。现有技术是在应用进程中初始化HotFix的运行环境,比如,当应用程序有APPLICATION对象时,应用程序会在启动的过程中创建APPLICATION对象,并同时在APPLICATION的消息响应函数oncreate里初始化HotFix的运行环境;当应用程序没有APPLICATION对象时,则会执行MainActivity逻辑,并将HotFix的初始化放在MainActivity的创建过程中。然而,当应用程序在初始化APPLICATION对象的时候发生程序崩溃,或者在执行MainActivity逻辑的时候发生程序崩溃时,则无法执行HotFix的初始化,HotFix仍然无法在线修复已经发布出去的应用程序的崩溃问题。
发明内容
本发明实施例提供了一种应用程序的修复方法、装置、存储介质及终端,以解决现有应用程序在初始化APPLICATION或MainActivity发生程序崩溃时HotFix无法修复的问题。
本发明实施例提供了一种应用程序的修复方法,所述修复方法包括:
当接收到应用程序的启动指令时,启动所述应用程序的应用进程,并同步注册、启动所述应用程序的更新进程;
通过所述更新进程将所述应用程序的版本号或者MD5校验信息发送至服务器;
通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第一下载地址,所述第一下载地址为新版本的HotFix文件的下载地址,根据所述第一下载地址下载新版本的HotFix文件,并初始化HotFix的运行环境,在初始化完成后使用所下载的HotFix文件修复所述应用程序。
进一步地,所述修复方法还包括:
通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第二下载地址,所述第二下载地址为新版本的应用程序安装包的下载地址,并调用getRunningTasks接口获取任务列表,所述任务列表中包括***当前正在运行的应用进程;
通过所述更新进程查询所述任务列表中是否存在所述应用程序的应用进程;
若所述任务列表中不存在所述应用程序的应用进程,且所述HotFix文件无法修复所述应用程序时,通过所述更新进程根据所述第二下载地址下载新版本的应用程序安装包;
在下载完成后,通过所述更新进程输出提示信息,以提示用户是否安装新版本的应用程序,并根据用户的确认指令使用所述安装包安装新版本的应用程序。
进一步地,所述修复方法还包括:
若所述任务列表中存在所述应用程序的应用进程时,确定所述应用程序处于运行状态,通过所述更新进程输出提示信息,以提示用户是否升级为新版本的应用程序。
进一步地,所述修复方法还包括:
在新版本的应用程序安装完成后,启动所述新版本的应用程序;
获取登录账号的token令牌,将所述token令牌发送至服务器进行验证,并在验证通过后登录所述新版本的应用程序。
本发明实施例还提供了一种应用程序的修复装置,所述修复装置包括:
启动模块,用于当接收到应用程序的启动指令时,启动所述应用程序的应用进程,并同步注册、启动所述应用程序的更新进程;
发送模块,用于通过所述更新进程将所述应用程序的版本号或者MD5校验信息发送至服务器;
修复模块,用于通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第一下载地址,所述第一下载地址为新版本的HotFix文件的下载地址,根据所述第一下载地址下载新版本的HotFix文件,并初始化HotFix的运行环境,在初始化完成后使用所下载的HotFix文件修复所述应用程序。
进一步地,所述修复装置还包括:
获取模块,用于通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第二下载地址,所述第二下载地址为新版本的应用程序安装包的下载地址,并调用getRunningTasks接口获取任务列表,所述任务列表中包括***当前正在运行的应用进程;
查询模块,用于通过所述更新进程查询所述任务列表中是否存在所述应用程序的应用进程;
强制下载模块,用于若所述任务列表中不存在所述应用程序的应用进程,且所述HotFix文件无法修复所述应用程序时,通过所述更新进程根据所述第二下载地址下载新版本的应用程序安装包;
安装提示模块,用于在下载完成后,通过所述更新进程输出提示信息,以提示用户是否安装新版本的应用程序,并根据用户的确认指令使用所述安装包安装新版本的应用程序。
进一步地,所述修复装置还包括:
更新提示模块,用于若所述任务列表中存在所述应用程序的应用进程时,确定所述应用程序处于运行状态,通过所述更新进程输出提示信息,以提示用户是否升级为新版本的应用程序。
进一步地,所述修复装置还包括:
启动模块,用于在新版本的应用程序安装完成后,启动所述新版本的应用程序;
登录模块,用于获取登录账号的token令牌,将所述token令牌发送至服务器进行验证,并在验证通过后登录所述新版本的应用程序。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序由处理器执行时实现如上所述的应用程序的更新方法所述的步骤。
本发明实施例还提供了一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
当接收到应用程序的启动指令时,启动所述应用程序的应用进程,并同步注册、启动所述应用程序的更新进程;
通过所述更新进程将所述应用程序的版本号或者MD5校验信息发送至服务器;
通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第一下载地址,所述第一下载地址为新版本的HotFix文件的下载地址,根据所述第一下载地址下载新版本的HotFix文件,并初始化HotFix的运行环境,在初始化完成后使用所下载的HotFix文件修复所述应用程序。
与现有技术相比,本发明实施例通过在接收到应用程序的启动指令时,启动所述应用程序的应用进程,并且同步注册、启动所述应用程序的更新进程;通过所述更新进程将所述应用程序的版本号或者MD5校验信息发送至服务器,以查询是否存在新版本的HotFix文件;若存在时,则通过所述更新进程获取服务器返回的第一下载地址,根据所述第一下载地址下载新版本的HotFix文件,并初始化HotFix的运行环境,在初始化完成后使用所下载的HotFix文件修复所述应用程序。本发明实施例通过开辟另外的进程来实现HotFix热修复,避免了在应用程序的应用进程上初始化HotFix的运行环境,解决了应用程序在初始化APPLICATION或MainActivity的时候发生程序崩溃时HotFix无法修复的问题,有效地提高了应用程序运行的稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1是本发明实施例提供的应用程序的修复方法的第一实现流程图;
图2是本发明实施例提供的应用程序的修复方法的第二实现流程图;
图3是本发明实施例提供的应用程序的修复装置的组成结构图;
图4是本发明实施例提供的终端的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现有技术是在应用程序初始化APPLICATION对象或者执行MainActivity逻辑的时候初始化HotFix的,当应用程序在初始化APPLICATION对象的时候发生程序崩溃,或者在执行MainActivity逻辑的时候发生程序崩溃时,则应用进程无法执行HotFix的初始化逻辑,HotFix仍然无法在线修复已经发布出去的应用程序的崩溃问题。本发明实施例通过在启动所述应用程序的应用进程时,同步注册、启动所述应用程序的更新进程,即在应用程序启动时开启双线程,通过所述应用进程完成应用程序的启动过程,并通过所述更新进程将所述应用程序的版本号或者MD5校验信息发送至服务器,以向服务器查询是否存在最新的HotFix文件;若存在时,则通过所述更新进程根据服务器返回的第一下载地址下载新版本的HotFix文件,并初始化HotFix的运行环境,在初始化完成后使用所下载的HotFix文件修复所述应用程序。可见,本发明实施例通过开辟另外的进程来实现HotFix热修复,避免了在应用程序的应用进程上初始化HotFix的运行环境,解决了应用程序在初始化APPLICATION或MainActivity的时候发生程序崩溃时HotFix无法修复的问题,即使应用进程发生崩溃,也不会影响到更新进程的HotFix修复,有效地提高了应用程序运行的稳定性。本发明实施例还提供了相应的装置、终端及存储介质,以下分别进行详细的说明。
图1示出了本发明实施例提供的应用程序的修复方法的第一实现流程。
在本发明实施例中,所述应用程序的修复方法应用于终端,所述终端为客户端设备,包括但不限于智能手机、平板电脑和计算机,优选为搭载Android***的终端。用户可以在所述终端上安装、运行Android应用程序。
参阅图1,所述应用程序的修复方法包括:
在步骤S101中,当接收到应用程序的启动指令时,启动所述应用程序的应用进程,并同步注册、启动所述应用程序的更新进程。
在本发明实施例中,用户可以通过比如触碰终端桌面上的应用程序登录接口输入启动指令,终端在检测到所述启动指令时,启动所述应用程序的应用进程,并同步注册、启动另外一个进程,即所述应用程序的更新进程。在这里,所述应用进程和更新进程是相互独立的两个进程。其中,所述应用进程用于完成应用程序的启动,包括:在有APPLICATON对象时初始化APPLICATION对象,若无APPLICATION对象时执行MainActivity逻辑。所述更新进程用于完成应用程序的修复,为所述应用程序的修复进程。可见,与现有技术不同的是,本发明实施例在应用程序启动时开启双线程,将应用程序的启动和修复分别由不同的进程完成。
在步骤S102中,通过所述更新进程将所述应用程序的版本号或者MD5校验信息发送至服务器。
在本发明实施例中,所述更新进程可以采用http协议或者TCP协议将所述应用程序的版本号或者MD5校验信息发送至服务器,以向服务器查询是否存在新版本的HotFix文件。对于应用程序的版本号,Android***将其记录在AndroidManifest.xml配置文件中。PackageInfo类封装了从该配置文件中获取的所有信息。因此,可以使用PackageInfo对象来获取应用程序的版本号,包括:首先,采用Context对象提供的getPackageManager()方法来获取PackageManager。然后,通过所述PackageManager对象来获取PackageInfo对象。在这里,PackageManager是一个检索当前已安装在终端上的相关应用程序包的各种信息的类,具体可以通过向PackageManager对象中的getPackageInfo方法传递两个参数,应用程序包名和条件,来获取PackageInfo对象。可选地,应用程序包名可以通过Activity或Context的getPackageName()方法获取。最后使用PackageInfo对象的versionName属性来获取应用程序的版本号。对于应用程序的MD5校验信息,则可以通过签名工具Apk来获取,也可以通过PackageInfo对象来获取。
所述服务器则比对所述版本号与当前最新的版本号,或者比对所述MD5校验信息与最新版本的MD5校验信息,以判断是否存在新版本的HotFix文件,当存在新版本的HotFix文件时,则向终端返回确认消息,所述确认消息包括所述新版本的HotFix文件的下载地址,本发明实施例记为第一下载地址。
在步骤S103中,通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第一下载地址,根据所述第一下载地址下载新版本的HotFix文件,并初始化HotFix的运行环境,在初始化完成后使用所下载的HotFix文件修复所述应用程序。
在这里,所述更新进程获取服务器返回的确认消息,在有新版本的HotFix文件时,则根据所述确认消息中的第一下载地址从服务器上下载HotFix文件,并调用第三方HotFix库提供的接口初始化HotFix的运行环境,包括但不限于初始化patch版本,加载已经添加到patchManager中的patch,添加patch。可见,在本发明实施例中,下载HotFix文件、初始化HotFix以及使用HotFix文件进行修复均由更新进程完成,与应用进程分离开来,避免了应用程序在初始化APPLICATION或MainActivity的时候发生程序崩溃时HotFix无法修复的问题。并且由于开启双线程,即使应用进程在初始化APPLICATION或MainActivity时候发生了程序崩溃,更新进程也不会受到影响,且能够通过更新进程对崩溃问题进行HotFix修复,有效地提高了应用程序运行的稳定性。
可选地,为了避免http传输时丢包的可能性,服务器可以在给HotFix文件命名时生成该文件的MD5信息,将HotFix文件的文件名命名为所述MD5信息。更新进程在下载到所述HotFix文件后,计算所下载的HotFix文件的MD5信息,然后将所述MD5信息与HotFix文件的文件名进行比对,在两者相同时才初始化HotFix的运行环境,从而进一步提升了所述更新进程的可靠性。
在实际应用中,HotFix也并非能够修复所有的问题。对于HotFix无法修复的严重问题,比如资源出现的问题,现有技术主要通过重新安装新版本的应用程序来解决,此时需要用户重新到官方网站或者第三方应用商店下载新版本的安装包,用户体检不佳。
鉴于此,基于上述本发明实施例提供的应用程序的修复方法的第一实现流程,提出本发明实施例提供的应用程序的修复方法的第二实现流程。如前文所述,在步骤S102通过所述更新进程将所述应用程序的版本号或者MD5校验信息发送至服务器后,所述服务器还可以根据所述版本号或者MD5校验信息判断是否存在新版本的应用程序,当存在新版本的应用程序时,也会向终端返回确认消息,所述确认消息包括所述新版本的应用程序安装包的下载地址。在本发明实施例中,所述修复方法还包括:
在步骤S104中,通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第二下载地址,并调用getRunningTasks接口获取任务列表。
在这里,所述第二下载地址为所述新版本的应用程序安装包的下载地址,所述任务列表中包括***当前正在运行的应用进程。服务器根据所述应用程序的版本号或者MD5校验信息判断存在新版本的应用程序时,向所述更新进程返回确认消息,所述确认消息包括所述新版本的应用程序安装包的第二下载地址。所述更新进程接收所述确认消息,解析所述确认消息得知存在新版本的应用程序,并获取所述第二下载地址。
在步骤S105中,通过所述更新进程查询所述任务列表中是否存在所述应用程序的应用进程。
所述更新进程根据服务器返回的确认消息查询到新版本的应用程序后,进一步判断当前应用程序的应用进程是否还存在,即终端是否还在运行所述应用进程。可选地,可以通过调用Android***中的原生接口getRunningTasks接口来获取当前的Task List,即任务列表,其记录了终端正在运行的所有进程。因此,通过查询所述任务列表,当所述任务列表还包括所述应用程序的应用进程时,表明该应用进程还存在,所述应用程序处于运行状态;若所述任务列表不包括所述应用程序的应用进程时,表明该应用进程已结束,所述应用程序已退出。
在步骤S106中,若所述任务列表中不存在所述应用程序的应用进程,且所述HotFix文件无法修复所述应用程序时,通过所述更新进程根据所述第二下载地址下载新版本的应用程序安装包。
在步骤S107中,在下载完成后,通过所述更新进程输出提示信息,以提示用户是否安装新版本的应用程序,并根据用户的确认指令使用所述安装包安装新版本的应用程序。
在这里,当所述更新进程使用HotFix文件也无法修复应用程序的崩溃问题时,本发明实施例将通过更新进程强制升级应用程序,由所述更新进程使用服务器返回的第二下载地址下载新版本的应用程序安装包,并在下载完成后,通知提示用户安装升级,从而实现了应用程序的强制升级,使得用户无需去官方网站或者第三方应用商店下载新版本的安装包,进一步提升了用户的体验感。
可选地,所述修复方法还包括:
在步骤S108中,若所述任务列表中存在所述应用程序的应用进程时,确定所述应用程序处于运行状态,通过所述更新进程输出提示信息,以提示用户是否升级为新版本的应用程序。
在本发明实施例中,当检测有新版本的应用程序,并且应用程序尚处于运行状态时,则可以通过aidl方法提示用户是否升级,并在检测到用户输入的确认指令时根据服务器返回的第二下载地址下载所述新版本的应用程序安装包,从而实现了自动升级提示,也可以避免用户重新到官方网站或者第三方应用商店下载新版本的安装包。
综上所述,本发明实施例通过更新进程来完成应用程序的更新升级逻辑,即使应用程序的应用进程出现崩溃,更新进程也不会受到影响,还能够正常地下载新版本的应用程序,并实现强制升级应用程序。而现有技术是在应用程序的应用进程上实现HotFix修复的,当应用进程出现问题且HotFix文件也无法修复时,应用进程只能走向崩溃,更无法实现对应用程序的强制升级。
可选地,所述修复方法还可以包括:
在新版本的应用程序安装完成后,启动所述新版本的应用程序;
获取登录账号的token令牌,将所述token令牌发送至服务器进行验证,并在验证通过后登录所述新版本的应用程序。
在这里,所述token令牌为修复前或者更新前最后一次登录成功的登录账号对应的登录凭证。所述更新进程在检测到新版本的应用程序安装完后,从终端内存中获取token令牌,并将所述token令牌发送至服务器进行验证,若服务器验证通过时则登录所述账号,从而实现了在修复后或者更新后的自动登录。
可选地,所述更新进程也可以在新版本的应用程序安装后,启动所述新版本的应用程序,加载登录界面,以提示用户输入登录账号及密码。
应理解,在上述实施例中,各步骤的序号的大小并不意味着执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
需要说明的是,本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,所述存储介质可以是只读存储器,磁盘或光盘等。
图3示出了本发明实施例提供的应用程序的更新装置的组成结构图,为了便于说明,仅示出了与本发明实施例相关的部分。
在本发明实施例中,所述应用程序的更新装置用于实现上述图1、图2实施例中所述的应用程序的更新方法,可以是内置于终端的软件单元、硬件单元或者软硬件结合的单元,所述终端优选为客户端设备,包括但不限于智能手机、平板电脑和计算机。
参阅图3,所述应用程序的更新装置包括:
启动模块31,用于当接收到应用程序的启动指令时,启动所述应用程序的应用进程,并同步注册、启动所述应用程序的更新进程;
发送模块32,用于通过所述更新进程将所述应用程序的版本号或者MD5校验信息发送至服务器;
修复模块33,用于通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第一下载地址,所述第一下载地址为新版本的HotFix文件的下载地址,根据所述第一下载地址下载新版本的HotFix文件,并初始化HotFix的运行环境,在初始化完成后使用所下载的HotFix文件修复所述应用程序。
在本发明实施例中,启动模块31在检测到启动指令时,启动所述应用程序的应用进程,并同步注册、启动另外一个进程,即所述应用程序的更新进程。在这里,所述应用进程和更新进程是相互独立的两个进程。其中,所述应用进程用于完成应用程序的启动,包括:在有APPLICATON对象时初始化APPLICATION对象,若无APPLICATION对象时执行MainActivity逻辑。所述更新进程用于完成应用程序的修复,为所述应用程序的修复进程。可见,与现有技术不同的是,本发明实施例在应用程序启动时开启双线程,将应用程序的启动和修复分别由不同的进程完成。
可选地,在启动更新进程之后,所述发送模块32通过所述更新进程采用http协议或者TCP协议将所述应用程序的版本号或者MD5校验信息发送至服务器,以使得所述服务器根据所述版本号或者MD5校验信息判断是否存在新版本的HotFix文件,当存在新版本的HotFix文件时,则向终端返回确认消息,所述确认消息包括所述新版本的HotFix文件的下载地址,本发明实施例记为第一下载地址。
在服务器返回确认消息之后,若服务器中有新版本的HotFix文件时,所述修复模块33通过更新进程,使用所述确认消息中的第一下载地址从服务器上下载HotFix文件,并调用第三方HotFix库提供的接口初始化HotFix的运行环境,包括但不限于初始化patch版本,加载已经添加到patchManager中的patch,添加patch。可见,在本发明实施例中,下载HotFix文件、初始化HotFix以及使用HotFix文件进行修复均由更新进程完成,与应用进程分离开来,避免了应用程序在初始化APPLICATION或MainActivity的时候发生程序崩溃时HotFix无法修复的问题。并且由于开启双线程,即使应用进程在初始化APPLICATION或MainActivity时候发生了程序崩溃,更新进程也不会受到影响,且能够通过更新进程对崩溃问题进行HotFix修复,有效地提高了应用程序运行的稳定性。
可选地,为了避免http传输时丢包的可能性,服务器可以在给HotFix文件命名时生成该文件的MD5信息,将HotFix文件的文件名命名为所述MD5信息。修复模块33通过更新进程下载到所述HotFix文件后,计算所下载的HotFix文件的MD5信息,然后将所述MD5信息与HotFix文件的文件名进行比对,在两者相同时才初始化HotFix的运行环境,可以进一步提高所述更新进程的可靠性。
进一步地,所述修复装置还包括:
获取模块34,用于通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第二下载地址,所述第二下载地址为新版本的应用程序安装包的下载地址,并调用getRunningTasks接口获取任务列表,所述任务列表中包括***当前正在运行的应用进程;
查询模块35,用于通过所述更新进程查询所述任务列表中是否存在所述应用程序的应用进程;
强制下载模块36,用于若所述任务列表中不存在所述应用程序的应用进程,且所述HotFix文件无法修复所述应用程序时,通过所述更新进程根据所述第二下载地址下载新版本的应用程序安装包;
安装提示模块37,用于在下载完成后,通过所述更新进程输出提示信息,以提示用户是否安装新版本的应用程序,并根据用户的确认指令使用所述安装包安装新版本的应用程序。
在这里,所述获取模块34通过所述更新进程向服务器查询到新版本的应用程序,所述查询模块35进一步判断当前应用程序的应用进程是否还存在,即终端是否还在运行所述应用进程。可选地,可以通过调用Android***中的原生接口getRunningTasks接口来获取当前的Task List,即任务列表,其记录了终端正在运行的所有进程。因此,通过查询所述任务列表,当所述任务列表还包括所述应用程序的应用进程时,表明该应用进程还存在,所述应用程序处于运行状态;若所述任务列表不包括所述应用程序的应用进程时,表明该应用进程已结束,所述应用程序已退出。
在实际应用中,所述HotFix文件也并非能够完全修复应用程序的所有问题。对于HotFix文件无法修复的问题,所述强制下载模块36则通过更新进程强制升级应用程序,由所述更新进程使用服务器返回的第二下载地址下载新版本的应用程序安装包,并在下载完成后,由所述安装提示模块37通知提示用户安装升级,从而使得用户无需去官方网站或者第三方应用商店下载新版本的安装包,进一步提升了用户的体验感。
进一步地,所述修复装置还包括:
更新提示模块38,用于若所述任务列表中存在所述应用程序的应用进程时,确定所述应用程序处于运行状态,通过所述更新进程输出提示信息,以提示用户是否升级为新版本的应用程序。
在本发明实施例中,当在应用程序的运行过程中,若检测到有新版本的应用程序时,所述更新提示模块38则通过比如aidl方法提示用户是否升级,并在检测到用户输入的确认指令时根据服务器返回的第二下载地址下载所述新版本的应用程序安装包,从而实现了自动升级提示,也可以避免用户到官方网站或者第三方应用商店下载新版本的安装包。
进一步地,所述修复装置还包括:
启动模块39,用于在新版本的应用程序安装完成后,启动所述新版本的应用程序;
登录模块310,用于获取登录账号的token令牌,将所述token令牌发送至服务器进行验证,并在验证通过后登录所述新版本的应用程序。
在这里,所述token令牌为修复前或者更新前最后一次登录成功的登录账号对应的登录凭证。登录模块310通过所述更新进程检测到新版本的应用程序安装完后,从终端内存中获取token令牌,并将所述token令牌发送至服务器进行验证,若服务器验证通过时则登录所述账号,从而实现了在修复后或者更新后的自动登录。
可选地,所述登录模块310也可以在安装并启动所述新版本的应用程序,仅仅加载登录界面,提示用户输入登录账号及密码。
需要说明的是,本发明实施例中的终端可以用于实现上述方法实施例中的全部技术方案。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
图4是本发明实施例提供的一种终端的示意图。如图4所示,该实施例的终端4包括:处理器40、存储器41以及存储在所述存储器41中并可在所述处理器40上运行的计算机程序42。所述处理器40执行所述计算机程序42时实现上述应用程序的修复方法实施例中的步骤,例如图1所示的步骤S101至S103、图2所示的步骤S104至S108。或者,所述处理器40执行所述计算机程序42时实现上述应用程序的修复的装置实施例中各模块/单元的功能,例如图3所示模块31至310的功能。
示例性的,所述计算机程序42可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器41中,并由所述处理器40执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序42在所述终端4中的执行过程。例如,所述计算机程序42可以被分割成启动模块、发送模块、修复模块,各模块具体功能如下:
启动模块,用于当接收到应用程序的启动指令时,启动所述应用程序的应用进程,并同步注册、启动所述应用程序的更新进程;
发送模块,用于通过所述更新进程将所述应用程序的版本号或者MD5校验信息发送至服务器;
修复模块,用于通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第一下载地址,所述第一下载地址为新版本的HotFix文件的下载地址,根据所述第一下载地址下载新版本的HotFix文件,并初始化HotFix的运行环境,在初始化完成后使用所下载的HotFix文件修复所述应用程序。
进一步地,所述计算机程序42还可以分割出:
获取模块,用于通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第二下载地址,所述第二下载地址为新版本的应用程序安装包的下载地址,并调用getRunningTasks接口获取任务列表,所述任务列表中包括***当前正在运行的应用进程;
查询模块,用于通过所述更新进程查询所述任务列表中是否存在所述应用程序的应用进程;
强制下载模块,用于若所述任务列表中不存在所述应用程序的应用进程,且所述HotFix文件无法修复所述应用程序时,通过所述更新进程根据所述第二下载地址下载新版本的应用程序安装包;
安装提示模块,用于在下载完成后,通过所述更新进程输出提示信息,以提示用户是否安装新版本的应用程序,并根据用户的确认指令使用所述安装包安装新版本的应用程序。
进一步地,所述计算机程序42还可以分割出:
更新提示模块,用于若所述任务列表中存在所述应用程序的应用进程时,确定所述应用程序处于运行状态,通过所述更新进程输出提示信息,以提示用户是否升级为新版本的应用程序。
进一步地,所述计算机程序42还可以分割出:
启动模块,用于在新版本的应用程序安装完成后,启动所述新版本的应用程序;
登录模块,用于获取登录账号的token令牌,将所述token令牌发送至服务器进行验证,并在验证通过后登录所述新版本的应用程序。
所述终端4可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端可包括,但不仅限于,处理器40、存储器41。本领域技术人员可以理解,图4仅仅是终端4的示例,并不构成对终端4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端还可以包括输入输出设备、网络接入设备、总线等。
所称处理器40可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述终端的控制中心,利用各种接口和线路连接整个终端的各个部分。
所述存储器41可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述终端的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘、智能存储卡(Smart MediaCard,SMC)、安全数字卡(Secure Digital,SD)、闪存卡(Flash Card),至少一个磁盘存储器件、闪存器件或其他易失性固态存储器件。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。。
Claims (10)
1.一种应用程序的修复方法,其特征在于,所述修复方法包括:
当接收到应用程序的启动指令时,启动所述应用程序的应用进程,并同步注册、启动所述应用程序的更新进程;
通过所述更新进程将所述应用程序的版本号或者MD5校验信息发送至服务器;
通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第一下载地址,所述第一下载地址为新版本的HotFix文件的下载地址,根据所述第一下载地址下载新版本的HotFix文件,并初始化HotFix的运行环境,在初始化完成后使用所下载的HotFix文件修复所述应用程序。
2.如权利要求1所述的应用程序的修复方法,其特征在于,所述修复方法还包括:
通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第二下载地址,所述第二下载地址为新版本的应用程序安装包的下载地址,并调用getRunningTasks接口获取任务列表,所述任务列表中包括***当前正在运行的应用进程;
通过所述更新进程查询所述任务列表中是否存在所述应用程序的应用进程;
若所述任务列表中不存在所述应用程序的应用进程,且所述HotFix文件无法修复所述应用程序时,通过所述更新进程根据所述第二下载地址下载新版本的应用程序安装包;
在下载完成后,通过所述更新进程输出提示信息,以提示用户是否安装新版本的应用程序,并根据用户的确认指令使用所述安装包安装新版本的应用程序。
3.如权利要求2所述的应用程序的修复方法,其特征在于,所述修复方法还包括:
若所述任务列表中存在所述应用程序的应用进程时,确定所述应用程序处于运行状态,通过所述更新进程输出提示信息,以提示用户是否升级为新版本的应用程序。
4.如权利要求2或3所述的应用程序的修复方法,其特征在于,所述修复方法还包括:
在新版本的应用程序安装完成后,启动所述新版本的应用程序;
获取登录账号的token令牌,将所述token令牌发送至服务器进行验证,并在验证通过后登录所述新版本的应用程序。
5.一种应用程序的修复装置,其特征在于,所述修复装置包括:
启动模块,用于当接收到应用程序的启动指令时,启动所述应用程序的应用进程,并同步注册、启动所述应用程序的更新进程;
发送模块,用于通过所述更新进程将所述应用程序的版本号或者MD5校验信息发送至服务器;
修复模块,用于通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第一下载地址,所述第一下载地址为新版本的HotFix文件的下载地址,根据所述第一下载地址下载新版本的HotFix文件,并初始化HotFix的运行环境,在初始化完成后使用所下载的HotFix文件修复所述应用程序。
6.如权利要求5所述的应用程序的修复装置,其特征在于,所述修复装置还包括:
获取模块,用于通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第二下载地址,所述第二下载地址为新版本的应用程序安装包的下载地址,并调用getRunningTasks接口获取任务列表,所述任务列表中包括***当前正在运行的应用进程;
查询模块,用于通过所述更新进程查询所述任务列表中是否存在所述应用程序的应用进程;
强制下载模块,用于若所述任务列表中不存在所述应用程序的应用进程,且所述HotFix文件无法修复所述应用程序时,通过所述更新进程根据所述第二下载地址下载新版本的应用程序安装包;
安装提示模块,用于在下载完成后,通过所述更新进程输出提示信息,以提示用户是否安装新版本的应用程序,并根据用户的确认指令使用所述安装包安装新版本的应用程序。
7.如权利要求6所述的应用程序的修复装置,其特征在于,所述修复装置还包括:
更新提示模块,用于若所述任务列表中存在所述应用程序的应用进程时,确定所述应用程序处于运行状态,通过所述更新进程输出提示信息,以提示用户是否升级为新版本的应用程序。
8.如权利要求6或7所述的应用程序的修复装置,其特征在于,所述修复装置还包括:
启动模块,用于在新版本的应用程序安装完成后,启动所述新版本的应用程序;
登录模块,用于获取登录账号的token令牌,将所述token令牌发送至服务器进行验证,并在验证通过后登录所述新版本的应用程序。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序由处理器执行时实现权利要求1至4任一项所述的应用程序的修复方法所述的步骤。
10.一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
当接收到应用程序的启动指令时,启动所述应用程序的应用进程,并同步注册、启动所述应用程序的更新进程;
通过所述更新进程将所述应用程序的版本号或者MD5校验信息发送至服务器;
通过所述更新进程获取服务器根据所述版本号或者MD5校验信息返回的第一下载地址,所述第一下载地址为新版本的HotFix文件的下载地址,根据所述第一下载地址下载新版本的HotFix文件,并初始化HotFix的运行环境,在初始化完成后使用所下载的HotFix文件修复所述应用程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710677088.4A CN107844306B (zh) | 2017-08-09 | 2017-08-09 | 应用程序的修复方法、装置、存储介质及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710677088.4A CN107844306B (zh) | 2017-08-09 | 2017-08-09 | 应用程序的修复方法、装置、存储介质及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107844306A true CN107844306A (zh) | 2018-03-27 |
CN107844306B CN107844306B (zh) | 2020-04-03 |
Family
ID=61682959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710677088.4A Active CN107844306B (zh) | 2017-08-09 | 2017-08-09 | 应用程序的修复方法、装置、存储介质及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107844306B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918113A (zh) * | 2019-01-17 | 2019-06-21 | 平安城市建设科技(深圳)有限公司 | Ios应用热修复/热更新方法、服务器及存储介质 |
CN110262838A (zh) * | 2019-06-14 | 2019-09-20 | 深圳乐信软件技术有限公司 | 一种程序崩溃的处理方法、装置、终端及存储介质 |
CN111475220A (zh) * | 2019-01-23 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 冷启动方法、装置、电子设备及计算机存储介质 |
WO2020233044A1 (zh) * | 2019-05-21 | 2020-11-26 | 深圳壹账通智能科技有限公司 | 一种插件校验方法、设备、服务器及计算机可读存储介质 |
CN112328283A (zh) * | 2020-11-12 | 2021-02-05 | 北京字节跳动网络技术有限公司 | 一种应用程序的更新方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120066484A1 (en) * | 2009-05-18 | 2012-03-15 | Huawei Technologies Co., Ltd. | Patching method and patching device in multi-core environment |
CN102546246A (zh) * | 2011-12-28 | 2012-07-04 | 创新科存储技术(深圳)有限公司 | 一种软件自动升级的方法及*** |
CN105740001A (zh) * | 2014-12-10 | 2016-07-06 | 中兴通讯股份有限公司 | 一种进程初始化阶段热补丁升级的方法、装置及终端设备 |
CN106775671A (zh) * | 2016-11-30 | 2017-05-31 | 武汉虹信通信技术有限责任公司 | 一种用于通信***linux环境中的热补丁修复方法 |
-
2017
- 2017-08-09 CN CN201710677088.4A patent/CN107844306B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120066484A1 (en) * | 2009-05-18 | 2012-03-15 | Huawei Technologies Co., Ltd. | Patching method and patching device in multi-core environment |
CN102546246A (zh) * | 2011-12-28 | 2012-07-04 | 创新科存储技术(深圳)有限公司 | 一种软件自动升级的方法及*** |
CN105740001A (zh) * | 2014-12-10 | 2016-07-06 | 中兴通讯股份有限公司 | 一种进程初始化阶段热补丁升级的方法、装置及终端设备 |
CN106775671A (zh) * | 2016-11-30 | 2017-05-31 | 武汉虹信通信技术有限责任公司 | 一种用于通信***linux环境中的热补丁修复方法 |
Non-Patent Citations (1)
Title |
---|
REGISTERING: ""什么场景下你们会用多进程"", 《HTTPS://WWW.V2EX.COM/T/234148》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918113A (zh) * | 2019-01-17 | 2019-06-21 | 平安城市建设科技(深圳)有限公司 | Ios应用热修复/热更新方法、服务器及存储介质 |
CN111475220A (zh) * | 2019-01-23 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 冷启动方法、装置、电子设备及计算机存储介质 |
CN111475220B (zh) * | 2019-01-23 | 2023-04-25 | 阿里巴巴集团控股有限公司 | 冷启动方法、装置、电子设备及计算机存储介质 |
WO2020233044A1 (zh) * | 2019-05-21 | 2020-11-26 | 深圳壹账通智能科技有限公司 | 一种插件校验方法、设备、服务器及计算机可读存储介质 |
CN110262838A (zh) * | 2019-06-14 | 2019-09-20 | 深圳乐信软件技术有限公司 | 一种程序崩溃的处理方法、装置、终端及存储介质 |
CN112328283A (zh) * | 2020-11-12 | 2021-02-05 | 北京字节跳动网络技术有限公司 | 一种应用程序的更新方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107844306B (zh) | 2020-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107844306A (zh) | 应用程序的修复方法、装置、存储介质及终端 | |
CN110058873B (zh) | 应用页面更新方法、装置、设备和存储介质 | |
CN107273156A (zh) | 一种ota升级方法及装置 | |
US20150220326A1 (en) | Mobile Terminal and Software Upgrade Method Thereof | |
CN106201607A (zh) | 一种软件版本的升级方法及设备 | |
CN109558160A (zh) | 升级方法、嵌入式*** | |
CN107465539A (zh) | 固件的升级方法、终端及固件的升级*** | |
US20130311599A1 (en) | Updating Web Resources | |
CN109960521B (zh) | 应用程序升级方法、装置、电子设备及存储介质 | |
CN109857423B (zh) | 程序版本更新方法、装置、服务器及可读存储介质 | |
CN107992308A (zh) | 一种安卓终端应用程序的插件化管理方法 | |
CN107707584A (zh) | 一种应用加载方法、终端及平台服务器 | |
CN109840096A (zh) | 操作***的安装方法及装置 | |
CN110147242A (zh) | 空间下载中的升级依赖检查方法及装置、存储介质和终端 | |
CN106445580A (zh) | 一种带外升级bmc的方法及装置 | |
JP2007528064A (ja) | 無線装置オペレーティング環境における未検証プログラムの実行 | |
CN110113391B (zh) | 一种客户端上线方法、装置及一种客户端运行方法、装置 | |
CN108418787A (zh) | 企业资源计划数据的采集方法、终端设备及介质 | |
US20170163787A1 (en) | Method and electronic device for upgrading or downgrading system | |
CN106708539B (zh) | 一种客户端更新方法及装置 | |
CN105786636B (zh) | 一种***修复方法及装置 | |
CN112995806A (zh) | 一种升级光网络单元方法、装置、***及存储介质 | |
CN106934272B (zh) | 一种应用信息的校验方法和装置 | |
CN110147246A (zh) | 空间下载技术的版本检查方法及装置、存储介质和终端 | |
CN107741853A (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 |