一种Android App热更新方法技术

技术编号:18668013 阅读:1446 留言:0更新日期:2018-08-14 20:34
本发明专利技术提供一种Android App热更新方法。所述方法包括以下步骤:步骤S1,服务器端修改程序,并通过Gradle脚本进行编译,生成新的Dex可执行文件;步骤S2,通过新旧两个Dex文件生成差异patch.dex文件安装包;步骤S3,服务器端接收到客户的下载请求后,把所述差异patch.dex文件安装包发送到客户端自动安装执行热更新。本发明专利技术提供的Android App热更新方法,不需要客户端进行冷启动,而且支持四大组件的更新,使用了补丁技术后,App可以无感知的快速修复线上的bug,在线更新成功率高,更新时间短,用户体验好。

A method of Android App hot update

The invention provides a Android App hot update method. The method includes the following steps: first, modifying the program on the server side and compiling it through Gradle script to generate a new Dex executable file; second, generating a differential patch.dex file installation package from the old and new Dex files; and first, after receiving a client's download request, the server side receives the difference patch.dex The file installation package is sent to the client to automatically install and execute the hot update. The hot update method of Android App provided by the invention does not require the client to start cold, and supports the updating of four major components. After using the patch technology, App can quickly repair online bugs without perception, with high success rate, short update time and good user experience.

【技术实现步骤摘要】
一种AndroidApp热更新方法
本专利技术属于计算机
,涉及一种AndroidAPP热更新方法。
技术介绍
随着日新月异的互联网软件技术的发展,App(Application)也成为智能应用软件最流行的方式,给软件开发商和用户之间搭起了方便、快捷的沟通、应用桥梁。但是在App使用过程中也会出现这样那样的问题。例如一个App开发商在发布了一个AndroidApp之后,随着应用的深入进行,又发现了一个严重的bug影响App的性能和用户体验,需要对其进行紧急修复以便获得更好的应用性能和用户体验。这时候App开发商就需要对App软件进行修改、重新打包、测试、向各个应用市场和渠道换包、提示用户升级、用户下载、覆盖安装,这一系列的动作给开发商带来了比较大的工作量,而且给用户带来了一定的干扰。有时候仅仅是为了修改了一行代码,也要付出巨大的成本进行换包和重新发布。那么,对于这个影响面比较大的动作,是否有办法以补丁的方式动态修复紧急Bug,不再需要重新发布AndroidApp,而是在客户端以热更新的方式解决问题。为了实现这个目的,出现了各种热补丁动态修复技术来解决以上这些问题。目前市面上的更新方法有阿里的Sophix,微信的Tinker,饿了么的Amigo。关于Sophix、微信和饿了么的热修复技术对比表1如下。表1为Sophix与微信和饿了么的热修复技术对比表。由表1可见,三种更新方法中,微信的Tinker和饿了么的Amigo都需要冷启动修复,给客户带来了不便。而Sophix则不支持4大组件的新增。表1方案对比SophixTinkerAmigoDEX修复同时支持即时生效和冷启动修复冷启动修复冷启动修复资源更新差量包,不用合成差量包,需要合成全量包,不用合成SO库更新插桩实现,开发透明替换接口,开发不透明插桩实现,开发透明性能损耗低,仅冷启动情况下有些损耗高,有合成操作低,全量替换四大组件不能增加不能增加能增加生成补丁选择已编好的新旧包在本地生成编译新包时设基线包上传完整新包到服务端补丁大小小小大接入成本傻瓜式接入复杂一般Android版本全部支持全部支持全部支持安全机制加密传输及签名校验加密传输及签名校验加密传输及签名校验服务端支持支持服务端控制支持服务端控制支持服务端控制由于上述热更新方法都有各自的局限性,本专利技术拟提出一种AndroidApp热更新方法,其以补丁差量包的方式动态热修复紧急Bug,并通过hook系统的classload,支持4大组件的新增,不需要客户端冷启动,并且支持全部Android版本。
技术实现思路
本专利技术的目的在于提供一种办法,以补丁的方式动态修复紧急Bug,不再需要重新发布AndroidApp,提供一种Androidapp热更新方法。本专利技术提供一种AndroidApp热更新方法,所述方法包括以下步骤:步骤S1,服务器端修改程序,并通过Gradle脚本进行编译,生成新的Dex可执行文件;步骤S2,通过新旧两个Dex文件生成差异patch.dex文件安装包;步骤S3,服务器端接收到客户的下载请求后,把所述差异patch.dex文件安装包发送到客户端自动安装执行热更新。进一步地,所述方法是一种热补丁动态修复bug的方法,不需要客户端进行冷启动。进一步地,所述AndroidApp热更新方法支持Activity(组件)、Service(服务)、Broadcast(广播接收器)、ContentProvider(内容提供)4大组件的新增。进一步地,步骤S2中,所述patch.dex文件安装包单独放在一个后台进程patch中。进一步地,步骤S2中,根据BsDiff算法,通过新旧两个Dex文件生成差异文件patch.dex文件。进一步地,所述BsDiff算法的粒度是文件。进一步地,步骤S2中,根据DexDiff算法,利用Dex文件的格式来减小patch.dex的大小。进一步地,所述DexDiff算法的粒度是Dex格式的每一项。进一步地,在步骤S3中,服务器端接收到客户的下载请求后,判断客户端的App版本号,根据版本号发送对应的所述差异patch.dex文件安装包。进一步地,在步骤S3中,客户端在接收到的所述差异patch.dex文件安装包后,自动搜索原始安装包的旧Dex,二者合并还原为新的Dex执行文件,自动执行。本专利技术获得了非常明显的益处:本专利技术提供的AndroidApp热更新方法,克服了以往技术的缺点,不需要客户端进行冷启动,而且支持四大组件的更新,使用了补丁技术后,App可以无感知的快速修复线上的bug,在线更新成功率高,更新时间短,用户体验好。附图说明图1为本专利技术的流程示意图。图2为本专利技术补丁包在客户端执行示意图。具体实施方式以下结合附图和实施例,对本专利技术的具体实施方式进行更加详细的说明,以便能够更好地理解本专利技术的方案以及其各个方面的优点。然而,以下描述的具体实施方式和实施例仅是说明的目的,而不是对本专利技术的限制。本专利技术提供一种AndroidApp热更新方法,Android是一种以Linux操作系统与JAVA语言为基础的开放源代码操作系统,主要使用于便携设备。在优势方面,Android平台首先就是其开放性,开放的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开发放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。直观的说App就是应用软件现在主要指的都是ios、mac、android等系统下的应用软件。App开发的语言有很多种,目前来说主流语言有四种:iOS平台开发语言为Objective-C;安卓Android开发语言为java;微软Windowsphone7开发语言是C#;塞班symbian系统版本开发语言是C++。所述AndroidApp热更新方法是一种热补丁动态修复bug的方法,如图1所示,包括以下步骤:步骤S1,服务器端修改程序,并通过Gradle脚本进行编译,生成新的Dex可执行文件;步骤S2,通过新旧两个Dex文件生成差异patch.dex文件安装包;步骤S3,服务器端接收到客户的下载请求后,把所述差异patch.dex文件安装包发送到客户端自动安装执行热更新。Gradle是一个项目自动化构建工具,可以管理项目中的差异、依赖、编译、打包、部署。它使用一种基于特定领域语言来声明项目设置,面向Java应用为主。所述方法是一种热补丁动态修复bug的方法,不需要客户端进行冷启动。而且所述AndroidApp热更新方法支持Activity(组件)、Service(服务)、Broadcastreceiver(广播接收器)、ContentProvider(内容提供)4大组件的新增。Activity介绍:一个Activity通常就是一个单独的屏幕(窗口)。Activity之间通过Intent进行通信。Android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Acti本文档来自技高网
...

【技术保护点】
1.一种Android App热更新方法,所述方法包括以下步骤:步骤S1,服务器端修改程序,并通过Gradle脚本进行编译,生成新的Dex可执行文件;步骤S2,通过新旧两个Dex文件生成差异patch.dex文件安装包;步骤S3,服务器端接收到客户的下载请求后,把所述差异patch.dex文件安装包发送到客户端自动安装执行热更新。

【技术特征摘要】
1.一种AndroidApp热更新方法,所述方法包括以下步骤:步骤S1,服务器端修改程序,并通过Gradle脚本进行编译,生成新的Dex可执行文件;步骤S2,通过新旧两个Dex文件生成差异patch.dex文件安装包;步骤S3,服务器端接收到客户的下载请求后,把所述差异patch.dex文件安装包发送到客户端自动安装执行热更新。2.根据权利要求1所述的AndroidApp热更新方法,其特征在于,所述方法是一种热补丁动态修复bug的方法,不需要客户端进行冷启动。3.根据权利要求1所述的AndroidApp热更新方法,其特征在于,所述AndroidApp热更新方法,支持Activity、Service、Broadcast、ContentProvider4大组件的新增。4.根据权利要求1所述的AndroidApp热更新方法,其特征在于,步骤S2中,所述patch.dex文件安装包单独放在一个后台进程patch中。5.根据权利要求1所述的AndroidApp热更新方法,其特征在...

【专利技术属性】
技术研发人员:李锋
申请(专利权)人:深圳市华讯方舟软件信息有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1