一种Android智能终端系统软件热修复的方法与流程

文档序号:11590040阅读:222来源:国知局

本发明涉及一种android智能终端系统软件热修复的方法,属于安卓系统技术领域。



背景技术:

当android智能终端设备(手机、平板、电视等)的系统版本在发布之后,往往有个别系统软件会在使用中出现问题,此时需要立即对该系统软件进行修复,一般做法即将修复后的安卓应用整体打包成安卓安装包,并生成ota(over-the-airtechnology,空中下载技术)版本。系统开发测试部门则随后对ota版本进行测试,在测试通过后向用户推送ota升级包,用户下载ota升级包后手动完成安装更新。对系统软件问题的解决,某些情况下仅是修改若干代码,但仍需按上述过程生成ota版本,继而对终端系统进行更新,实际上ota版本绝大部分内容保持不变,这导致了不必要的系统开销和时间浪费,大大降低了用户使用体验。

中国专利文献cn106095502a公开了一种安卓应用的热修复方法。该方法包括:获取指定安卓应用的补丁包,补丁包中包括指定安卓应用中的修复后的指定类文件;当指定安卓应用启动时,加载该补丁包;当指定安卓应用需要调用指定的类文件时,从该补丁包中调用修复后的指定类文件以执行相应功能。但该方法存在以下缺陷:对于智能终端及系统提供者来讲,它无法对不同型号及不同区域终端设备的某个系统软件进行控制,比如对于某个系统软件来讲,大陆地区和港澳台地区是不同的;而终端设备型号不同,系统软件也会不同。



技术实现要素:

为克服上述背景技术所存在的缺陷和不足,本发明提出了一种android智能终端系统软件热修复的方法。当智能终端中系统软件出现问题时,软件工程师针对问题修改完毕后,仅生成该软件的补丁包,并将补丁包根据匹配信息匹配在服务器端。当用户打开该系统软件后,其将从服务器端把补丁包下载到终端,并判断补丁包中的匹配信息和终端的具体设备信息是否相同,若相同,系统软件在下次用户打开应用时动态加载,从而完成对软件的修复。

本发明的技术方案如下:

一种android智能终端系统软件热修复的方法,依次通过四个模块来完成,该四个模块包括patch文件获取模块、patch文件匹配模块、终端下载模块和动态加载模块,该方法具体步骤如下:

1)patch文件获取模块:

该模块输入端是两个apk,包括原apk和更新后的apk,原apk即是需要修复的原版本系统软件,更新后的apk即是已修复完成的系统软件,一般已修复完成的系统软件版本号比原系统软件版本号高1,apk文件实际可看成一个zip文件,其包括res资源文件和class.dex文件,通过差分比较可以将有差别的文件部分保存到一个hashset集合变量中,然后通过编译打包生成patch文件,具体步骤为:

①将原apk和更新后的apk进行差分算法比较,将有差别的文件部分保存到一个集合变量中;

②通过编译并打包可生成patch文件;

2)patch文件匹配模块:

在服务器端将patch文件进行匹配,匹配信息包括终端型号、终端系统版本号、终端网络区域、android版本及内核版本,匹配结果用flag表示,flag初始值为false,匹配成功后修改flag标识为true,服务器端将匹配信息注入到patch文件中,然后进行patch文件的下发,具体步骤为:

①获取patch文件所含系统应用的信息,包括应用名称、应用包名、应用签名;

②服务器端根据匹配信息进行patch文件下发前的匹配,包括终端型号、终端系统版本号、终端网络区域、android版本、内核版本匹配属性;

③匹配结果用flag表示,flag初始值为false,匹配成功后修改flag标识为true;

④服务器端将匹配信息注入到patch文件中,然后进行patch文件的下发,将patch文件推送至智能终端;

3)终端下载模块:

当用户打开该系统应用时,首先判断终端当前连接的网络是否为本地网络,如果否,则自动配置本地网络,如果是,则不用配置本地网络;随后再判断此时终端处理器是否处于空闲时段,当终端处理器处于空闲时段时,终端从服务器获取匹配标识flag的值和patch文件,并在后台自动下载,具体步骤为:

①判断当前终端连接的网络是否为本地预设网络,如果是,则直接转入步骤②;如果否,则自动配置本地预设网络,然后转入步骤②;

②判断处理器此时是否处于忙时阈值之下,如果是,则转入步骤③;如果否,则转入步骤②,此时说明处理器正进行多任务执行,不适宜再为处理器增加任务,这样可避免处理器崩溃;

③智能终端从服务器获取flag的值和patch文件,并在后台自动下载;

4)动态加载模块:

patch文件下载后,首先终端获取patch文件中的匹配信息,将匹配信息和终端的具体设备信息进行校验,判断patch文件中的匹配信息和终端的具体设备信息是否相同,如果前后信息相同则校验成功,若不同则说明此终端不在修复范围之内,则将patch文件删除;校验成功后,待用户第二次启动该系统应用时,或该系统应用通过广播或服务被唤醒重新加载时,系统会先加载patch文件中的class文件,而不再加载原apk中的class文件,完成软件修复,具体步骤为:

①终端获取patch文件中的匹配信息和终端的具体设备信息;

②将步骤①中的匹配信息和具体设备信息进行对比,校验二者是否相同,若相同,则转到步骤③;若不同,则删掉该patch文件,流程结束;

③待用户重启该系统软件或者该系统软件被broadcast(广播)或者service(服务)所唤醒重新加载,系统会加载patch文件中的class文件而不去加载原apk中的class文件,软件完成修复,流程结束。

所述的apk是androidpackage的缩写,即android安装包(apk)。

所述的patch多指补丁的意思比如文件补丁、内存补丁等,是电脑命令程序的一种。

所述的zip文件是用zip计算机压缩算法进行压缩而产生的压缩文件。

所述的class文件是一种二进制流文件,它由java源文件编译后所产生。

本发明方法的有益效果为:

1,本发明无需通过生成ota,即可实现对不同型号终端设备系统软件对应的修复,节约了大量成本;

2,本发明免除了ota系统版本的下载与安装,在用户无感知情况下静默完成修复,在解决问题的同时又不影响用户使用体验。

附图说明

图1为本发明方法的实施例中的总流程图。

图2为本发明方法的实施例中patch文件获取模块示意图。

图3为本发明方法的实施例中patch文件匹配模块流程图。

图4为本发明方法的实施例中终端下载模块流程图。

图5为本发明方法的实施例中动态加载模块流程图。

具体实施方式

下面结合说明书附图和实施例对本发明作进一步说明,但不限于此。

实施例:

一种android智能终端系统软件热修复的方法,如图1-5所示,依次通过四个模块来完成,该四个模块包括patch文件获取模块、patch文件匹配模块、终端下载模块和动态加载模块,该方法具体步骤如下:

1)patch文件获取模块:

该模块输入端是两个apk,包括原apk和更新后的apk,原apk即是需要修复的原版本系统软件,更新后的apk即是已修复完成的系统软件,一般已修复完成的系统软件版本号比原系统软件版本号高1,apk文件实际可看成一个zip文件,其包括res资源文件和class.dex文件,通过差分比较可以将有差别的文件部分保存到一个hashset集合变量中,然后通过编译打包生成patch文件,具体步骤为:

①将原apk和更新后的apk进行差分算法比较,将有差别的文件部分保存到一个集合变量中;

②通过编译并打包可生成patch文件;

2)patch文件匹配模块:

在服务器端将patch文件进行匹配,匹配信息包括终端型号、终端系统版本号、终端网络区域,比如终端型号为h60-l02,终端系统版本号为h60-l02v100r001chnc00b317,终端区域为山东济南;意思是终端型号为h60-l02且终端系统版本号为h60-l02v100r001chnc00b317且终端网络区域为山东济南的终端才能收到此patch文件。匹配信息不仅包括上述匹配属性还包括android版本、内核版本匹配属性,匹配结果用flag表示,flag初始值为false,匹配成功后修改flag标识为true,服务器端将匹配信息注入到patch文件中,然后进行patch文件的下发,具体步骤为:

①获取patch所含系统应用的信息,包括应用名称、应用包名、应用签名;

②服务器端根据匹配信息进行patch文件下发前的匹配,包括终端型号、终端系统版本号、终端网络区域、android版本、内核版本匹配属性;

③匹配结果用flag表示,flag初始值为false,匹配成功后修改flag标识为true;

④服务器端将匹配信息注入到patch文件中,然后进行patch文件的下发,将patch文件推送至智能终端;

3)终端下载模块:

当用户打开该系统应用时,首先判断终端当前连接的网络是否为本地网络,如果否,则自动配置本地网络,若是,则不用配置本地网络;随后再判断此时终端处理器是否处于空闲时段,当终端处理器处于空闲时段时,终端从服务器获取匹配标识flag的值和patch文件,并在后台自动下载,具体步骤为:

①判断当前终端连接的网络是否为本地预设网络,如果是,则直接转入步骤②;如果否,则自动配置本地预设网络,然后转入步骤②;

②判断处理器此时是否处于忙时阈值之下,如果是,则转入步骤③;如果否,则转入步骤②,此时说明处理器正进行多任务执行,不适宜再为处理器增加任务,这样可避免处理器崩溃;

③智能终端从服务器获取flag的值和patch文件,并在后台自动下载;

4)动态加载模块:

patch文件下载后,首先终端获取patch文件中的匹配信息,将匹配信息和终端的具体实际信息进行校验,判断patch文件中的匹配信息和终端的具体实际设备信息是否相同,比如获取的patch文件中的匹配信息是上述patch匹配模块中的匹配信息,那么需要将终端的具体设备信息和此匹配信息进行比较:此终端型号是否为h60-l02,终端系统版本号是否为h60-l02v100r001chnc00b317,终端区域是否为山东济南,但不仅局限于此匹配属性。如果前后信息都相同则校验成功,若不相同则说明此终端不在修复范围之内,则将patch文件删除;校验成功后,待用户第二次启动该系统应用时,或者该系统应用通过broadcast(广播)、service(服务)被唤醒重新加载时,系统就会先加载patch文件中的class文件,而不再加载原apk中的class文件,完成软件修复,具体步骤为:

①终端获取patch文件中的匹配信息和终端的具体设备信息;

②将步骤①中的匹配信息和具体设备信息进行对比,校验二者是否相同,若相同,则转到步骤③;若不同,则删掉该patch文件,流程结束;

③待用户重启该系统软件或者该系统软件被broadcast(广播)或者service(服务)所唤醒重新加载,系统会加载patch文件中的class文件而不去加载原apk中的class文件,完成软件修复,流程结束。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1