【发明内容】
基于此,有必要提供一种方便用户操作的固件升级方法。
一种固件升级方法,所述方法包括以下步骤:
与移动终端建立连接;
获取所述移动终端的系统参数;
根据所述系统参数在预设的固件库中查找与所述系统参数匹配的固件;
获取与所述固件对应的预设的升级指令序列;
通过依次执行所述升级指令序列中的升级指令将所述固件写入所述移动终端。
优选的,所述通过依次执行所述升级指令序列中的升级指令将所述固件写入所述移动终端的步骤之前还包括:
将所述移动终端中的原始固件备份;
所述方法还包括:
若通过依次执行所述升级指令序列中的升级指令将所述固件写入所述移动终端的步骤执行失败,则根据所述备份将所述移动终端还原。
优选的,所述与移动终端建立连接的步骤具体为:
通过验证信息与移动终端配对,建立与所述移动终端的无线连接。
优选的,所述通过依次执行所述升级指令序列中的升级指令将所述固件写入所述移动终端的步骤之前还包括:
对所述固件库进行查杀病毒扫描。
优选的,所述通过依次执行所述升级指令序列中的升级指令将所述固件写入所述移动终端的步骤之后还包括:
获取用户输入的评价信息,并将所述评价信息存储。
此外,还有必要提供一种方便用户操作的固件升级系统。
一种固件升级系统,包括以下模块:
连接模块,用于与移动终端建立连接;
参数获取模块,用于获取所述移动终端的系统参数;
固件获取模块,用于根据所述系统参数在预设的固件库中查找与所述系统参数匹配的固件;
脚本获取模块,用于获取与所述固件对应的预设的升级指令序列;
写入更新模块,用于通过依次执行所述升级指令序列中的升级指令将所述固件写入所述移动终端。
优选的,还包括备份模块,用于将所述移动终端中的原始固件备份;
所述备份模块还用于当通过依次执行所述升级指令序列中的升级指令将所述固件写入所述移动终端失败时,根据所述备份将所述移动终端还原。
优选的,所述连接模块用于通过验证信息与所述移动终端配对,并建立与所述移动终端的无线连接。
优选的,还包括病毒查杀模块,用于对所述固件库进行查杀病毒扫描。
优选的,还包括评分获取模块,用于获取用户输入的评价信息,并将所述评价信息存储。
上述固件升级方法及系统,通过固件库预存了与硬件型号匹配的固件,并通过预设的升级指令序列代替了传统技术中在升级固件时的人为操作。使得用户在进行固件升级时,只需要在连接好相应的硬件设备之后,输入简单启动指令(一个开关键),即可完成移动终端的固件升级,从而方便了用户升级固件。
【具体实施方式】
如图1所示,在一个实施例中,一种固件升级方法,包括以下步骤:
步骤S102,与移动终端建立连接。
移动终端上设置有数据接口,如USB接口、IEEE1394接口等。可通过数据线与移动终端建立TCP或UDP连接。
一个实施例中,可通过验证信息与移动终端配对,建立与移动终端的无线连接。先通过广播无线信号,检测附近的移动终端,然后通过验证信息与检测到的移动终端配对。验证信息可以为在检测过程中自动为检测到的移动终端分配,也可以是由移动终端中预先安装的守护程序(独立于固件运行的程序)生成。配对成功后,连接双方持有了相同的验证信息。建立与移动终端的无线连接后,可通过验证信息与移动终端验证身份,从而安全地传输数据。无线连接的方式包括wifi连接、蓝牙连接。验证信息可以是验证码、验证图片等。
步骤S104,获取移动终端的系统参数。
获取到的移动终端的系统参数可以包括移动终端的生产厂家、产品型号、原始固件版本号(原始固件为升级前移动终端中已存储的固件)。获取方式可以通过用户输入的参数获取,也可以通过直接读取存储于移动终端中的系统参数来获取。
步骤S106,根据系统参数在预设的固件库中查找与系统参数匹配的固件。
预设的固件库中预先存储有对应多种系统参数的固件。固件可以以压缩包的形式储存,也可以是存储在数据库中的二进制流。
例如,为了针对硬件做优化,某些手机厂家在android框架上开发了一些针对自己厂家的手机的固件。这些二次开发的固件与手机的产品型号对应。可以预先在数据库中建立映射表,然后将手机的产品型号和该产品型号匹配的二次开发的固件对应存储到该表中。当获取到移动终端的系统参数时,即可根据该系统参数在映射表中查找与之匹配的固件。
在一个实施例中,还可以通过网络抓取的方式定期从网络上获取固件并更新到固件库中。固件发布者为了修复固件缺陷或添加新的功能,会定期通过网络发布新版本的固件。可通过网络爬虫(一种用于抓取和分析网页的网络抓取工具)抓取网页,然后获取网页上与固件相关的内容,然后从内容中提取出固件。提取固件时,可以检测网页上是否有附件形式的链接(以zip、apk、7z等结尾的链接),然后可通过关键字分析该链接的上下文是否包括与固件相关的描述,若有,则下载该固件并存储到固件库中。
步骤S108,获取与固件对应的预设的升级指令序列。
升级指令序列用于表示固件升级的具体流程。升级指令序列中包含有按预设的顺序排列的升级指令,可以以脚本文件的形式存储,也可以存储于数据库中。在将固件写入移动终端进行升级时,通常需要将固件文件分多个步骤进行写入,在写入的过程中,还要对移动终端的系统参数进行判断,并根据判断结果进行相应的写入操作。升级指令序列通过升级指令表示了写入操作和判断操作。
升级指令序列与固件库中的固件具有预设的对应关系。例如对于android1.5平台的固件和android2.3平台的固件,升级流程不同。则这两种平台的固件分别对应了两种升级指令序列。
步骤S110,通过依次执行升级指令序列中的升级指令将固件写入移动终端。
由前所述,升级指令序列中按预设的顺序排列的升级指令将写入步骤和判断步骤指令化。可将获取到的升级指令序列转换成脚本文件,然后通过预设的指令解释器对该脚本文件进行解释执行。
例如,某次写入操作时,需要按先后顺序写入三个文件A、B、C,而预设的写入指令为“write”,则可以在脚本文件中定义如下:
writeA;
writeB;
writeC;
解释器逐行解释执行该脚本文件即可将A、B、C三个文件写入到移动终端中。
在android和ios平台中,只有获取root权限之后才能升级固件。在一个实施例中,升级指令序列的起始位置的升级指令为判断是否已获取移动终端的root权限,若未获取,则获取移动终端的root权限。
在一个实施例中,通过依次执行升级指令序列中的升级指令将固件写入移动终端之前,还可以先将移动终端中的原始固件备份。原始固件为升级前移动终端中已存储的固件,通常版本较低。若通过依次执行升级指令序列中的升级指令将固件写入移动终端的步骤执行失败,还可将根据备份将移动终端还原。
可在将固件写入移动终端之前,先将原始固件拷贝并备份在缓存中。然后在升级指令序列中添加判断失败的指令,并在判断失败后添加将移动终端还原的指令。当指令解释器在解释执行升级指令序列时,即可通过执行相应的升级指令即可完成还原操作。
在一个实施例中,通过依次执行升级指令序列中的升级指令将固件写入移动终端之前,还可以对固件库进行查杀病毒扫描。通过网络抓取的固件由于缺乏第三方的认证,安全性上存在隐患。可以在将固件添加至固件库时对固件库进行查杀病毒扫描,也可以在将固件写入移动终端之前对固件进行查杀病毒扫描。
在一个实施例中,通过依次执行升级指令序列中的升级指令将固件写入移动终端之后,还可以获取用户输入的评价信息,并将评价信息存储。例如,在升级完毕后,可以向用户展示固件评价与升级反馈的界面。可采用分值来表示用户对该固件的满意度。当某个固件被升级安装多次,具有多个用户的评价时,可以获取并存储其平均值。在获取和存储了用户输入的评价信息之后,可以将该分值展示,作为其他用户在升级固件时的参考。
如图2所示,在一个实施例中,一种固件升级系统,包括连接模块102、参数获取模块104、固件获取模块106、脚本获取模块108、写入更新模块110,其中:
连接模块102,用于与移动终端建立连接。
移动终端上设置有数据接口,如USB接口、IEEE1394接口等。连接模块102可通过数据线与移动终端建立TCP或UDP连接。
一个实施例中,连接模块102可用于通过验证信息与移动终端配对,建立与移动终端的无线连接。连接模块102先通过广播无线信号,检测附近的移动终端,然后通过验证信息与检测到的移动终端配对。验证信息可以为在检测过程中自动为检测到的移动终端分配,也可以是由移动终端中预先安装的守护程序(独立于固件运行的程序)生成。配对成功后,连接双方持有了相同的验证信息。连接模块102建立与移动终端的无线连接后,可通过验证信息与移动终端验证身份,从而安全地传输数据。无线连接的方式包括wifi连接、蓝牙连接。验证信息可以是验证码、验证图片等。
参数获取模块104,用于获取移动终端的系统参数。
参数获取模块104获取到的移动终端的系统参数可以包括移动终端的生产厂家、产品型号、原始固件版本号(原始固件为升级前移动终端中已存储的固件)。参数获取模块104获取系统参数的方式可以通过用户输入的参数获取,也可以通过直接读取存储于移动终端中的系统参数来获取。
固件获取模块106,用于根据系统参数在预设的固件库中查找与系统参数匹配的固件。
预设的固件库中预先存储有对应多种系统参数的固件。固件可以以压缩包的形式储存,也可以是存储在数据库中的二进制流。
例如,为了针对硬件做优化,某些手机厂家在android框架上开发了一些针对自己厂家的手机的固件。这些二次开发的固件与手机的产品型号对应。可以预先在数据库中建立映射表,然后将手机的产品型号和该产品型号匹配的二次开发的固件对应存储到该表中。当获取到移动终端的系统参数时,即可根据该系统参数在映射表中查找与之匹配的固件。
在一个实施例中,还包括固件库更新模块(图中未标示),可用于通过网络抓取的方式定期从网络上获取固件并更新到固件库中。固件发布者为了修复固件缺陷或添加新的功能,会定期通过网络发布新版本的固件。可通过网络爬虫(一种用于抓取和分析网页的网络抓取工具)抓取网页,然后获取网页上与固件相关的内容,然后从内容中提取出固件。提取固件时,可以检测网页上是否有附件形式的链接(以zip、apk、7z等结尾的链接),然后可通过关键字分析该链接的上下文是否包括与固件相关的描述,若有,则下载该固件并存储到固件库中。
脚本获取模块108,用于获取与固件对应的预设的升级指令序列。
升级指令序列用于表示固件升级的具体流程。升级指令序列中包含有按预设的顺序排列的升级指令,可以以脚本文件的形式存储,也可以存储于数据库中。在将固件写入移动终端进行升级时,通常需要将固件文件分多个步骤进行写入,在写入的过程中,还要对移动终端的系统参数进行判断,并根据判断结果进行相应的写入操作。升级指令序列通过升级指令表示了写入操作和判断操作。
升级指令序列与固件库中的固件具有预设的对应关系。例如对于android1.5平台的固件和android2.3平台的固件,升级流程不同。则这两种平台的固件分别对应了两种升级指令序列。
写入更新模块110,用于通过依次执行升级指令序列中的升级指令将固件写入移动终端。
由前所述,升级指令序列中按预设的顺序排列的升级指令将写入步骤和判断步骤指令化。写入更新模块110可用于将获取到的升级指令序列转换成脚本文件,然后通过预设的指令解释器对该脚本文件进行解释执行。
在android和ios平台中,只有获取root权限之后才能升级固件。在一个实施例中,升级指令序列的起始位置的升级指令为判断是否已获取移动终端的root权限,若未获取,则获取移动终端的root权限。
在一个实施例中,如图3所示,固件升级系统还包括备份模块112,用于将移动终端中的原始固件备份。原始固件为升级前移动终端中已存储的固件,通常版本较低。备份模块112还可用于当通过依次执行升级指令序列中的升级指令将固件写入移动终端失败时,根据备份将移动终端还原。
备份模块112可用于在将固件写入移动终端之前,先将原始固件拷贝并备份在缓存中。然后在升级指令序列中添加判断失败的指令,并在判断失败后添加将移动终端还原的指令。当指令解释器在解释执行升级指令序列时,即可通过执行相应的升级指令即可完成还原操作。
在一个实施例中,如图3所示,固件升级系统还包括病毒查杀模块114,用于对固件库进行查杀病毒扫描。通过网络抓取的固件由于缺乏第三方的认证,安全性上存在隐患。病毒查杀模块114可用于在将固件添加至固件库时对固件库进行查杀病毒扫描,也可用于在将固件写入移动终端之前对固件进行查杀病毒扫描。
在一个实施例中,如图3所示,固件升级系统还包括评分获取模块116,可用于获取用户输入的评价信息,并将评价信息存储。例如,在升级完毕后,评分获取模块116可用于向用户展示固件评价与升级反馈的界面。评分获取模块116可采用分值来表示用户对该固件的满意度。当某个固件被升级安装多次,具有多个用户的评价时,评分获取模块116可用于获取并存储其平均值。在获取和存储了用户输入的评价信息之后,可以将该分值展示,作为其他用户在升级固件时的参考。
上述固件升级方法及系统,通过固件库预存了与硬件型号匹配的固件,并通过预设的升级指令序列代替了传统技术中在升级固件时的人为操作。使得用户在进行固件升级时,只需要在连接好相应的硬件设备之后,输入简单启动指令(一个开关键),即可完成移动终端的固件升级,从而方便了用户升级固件。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。