一种基于Android应用软件的增量升级方法

文档序号:6369799阅读:155来源:国知局
专利名称:一种基于Android应用软件的增量升级方法
技术领域
本发明涉及一种软件的升级方法,尤其涉及一种基于Android应用软件的增量升级方法,属于通信领域。
背景技术
Android是谷歌公司开发的基于Linux的开源操作系统,由于其开源的性质,其受欢迎程度很高,随之而来的便是Android系统的的电子终端及其用户群的广泛增长,用户群的增长也令该平台上的应用软件与日俱增。同时,Android上的应用软件产品也日臻完善,有些软件的大小甚至达到几十兆,且随着科技的发展,软件推陈出新的速度也愈发加快,现有的应用软件更新方式大多都为完整更新,即重新下载一个完整的APK进行覆盖安装的模式。然而,有的时候软件的更新仅仅是功能上的一种小改动,而选择完整更新方式将 造成用户更多的等待和流量的耗费,虽然同样能在实际功能上完成升级,但就一些小改动要做出如此大的牺牲,显然是没必要的。

发明内容
发明目的鉴于上述的缺陷不足,本发明的目的在于提供一种Android系统上应用软件的增量升级方法,能够使得应用软件就一些功能和资源上能增量升级,同时升级更为高效快捷。技术方案本发明通过如下技术手段加以实现—种基于Android应用软件的增量升级方法,包括以下步骤I)比较当前版本和服务器最新版本;2)由版本差异下载相应的增量升级插件包;3)安装并运行增量升级插件包;4)由包内设定的增量升级方式,修改应用程序包;其中,对应用程序包的修改包括对包内的功能文件修改及对包内资源文件的修改。对更新后的应用程序包重新进行签名。所述的增量升级插件包定义了 Insert、Update、Delete三种方式组合支持升级。所述的功能文件为assets目录下加密的dex文件,所述的资源文件为res目录下的工程资源文件。对包内功能文件的升级包括以下步骤I)读取包内原加密的功能文件;2)将解密后的功能文件写在终端内置的存储空间上;3)动态加载功能文件类;4)执行功能;5)删除解密后的文件。
所述步骤3中利用Dalvik虚拟机对功能文件进行动态加载。有益效果本发明将增量升级的内容,分为了两种不同的文件对象,一为功能文件,二为资源文件。这能够让增量升级插件包内尽量只包含更改过的升级文件。藉此,Android应用程序能够进行一些功能和资源上能增量升级,也减少了用户等待和流量耗费,更为高效快捷。


图I是本发明的增量升级流程图。图2是本发明的升级插件工作流程图。
图3是本发明的功能文件升级流程图。
具体实施例方式下面结合说明书附图对本发明内容进行进一步详述应用开发者开发的Android应用程序,最后会被编译打包成一个单独的后缀为.apk的文件发布。其中包含了应用程序的签名信息、二进制代码、资源文件、配置文件等。APK文件其实是zip格式的,在Android上安装时会被存放到系统的app目录下。发布应用程序的APK文件,主要包含了以下部分I. META-INF目录用于存放签名信息。以保证apk的完整性和系统安全。2. assets目录用于存放资源文件。以原格式保存,不会经过编译修改。3. res目录用于存放资源文件。包括图片,字符串等等。4. AndroidManifest. xml :描述应用程序的名字、版本、权限等等的信息。5. classes, dex Java编译后删除的java字节码文件。6. resources, arse :编译后的二进制资源文件。一般而言,软件升级主要是改变前3个目录,因此升级时只需要按需要升级前3个文件的相应内容即可。本发明提供了一种基于Android应用软件增量升级的方法,具体而言,由如下步骤组成I)比较当前版本和服务器最新版本;2)由版本差异下载相应的增量升级插件包;3)安装并运行增量升级插件包;4)由包内设定的增量升级方式,修改应用程序包;其中,对应用程序包的修改包括对包内的功能文件修改及对包内资源文件的修改。具体而言,在服务器端提供功能文件升级插件包与资源文件插件升级插件包,并公开其版本号,安装有应用软件的终端读取应用软件中AndroidManifest. xml里的版本号,而后与服务器上的对应文件的版本号进行比对,如果版本号一致,则不进行下载;如果功能文件的版本号低于服务器上的版本号,则对功能文件进行下载;若资源文件版本号低于服务器上的版本号,则下载资源文件;若均低于服务器上的版本号,则两个均进行下载。下载完毕后,利用升级包内的文件对应用程序进行相应修改。
在软件升级结束后,更新后的应用程序包重新进行签名,具体的说,是改变META-INF目录下的文件,以保证下次更新的顺利进行。本发明中,所述的增量升级插件包定义了 Insert、Update、Delete三种方式组合支持升级。所述的功能文件为assets目录下加密的dex文件,所述的资源文件为res目录下的工程资源文件。对包内资源文件的升级采用完全替换方式,即利用升级包内的新的数据对res目录下的工程资源文件进行替换即可,而对包内功能文件的升级需要进行如下步骤I)读取包内原加密的dex文件;
2)将解密后的dex文件写在终端内置的存储空间上;3)动态加载功能文件类;4)执行功能;5)删除解密后的文件。上述步骤中,加密在于保证功能文件的安全性;使用dex文件则是用于Dalvik虚拟机进行动态加载。但是在assets目录下,解压后可被直接看到源码。若直接在Java层进行解密,dex反编译后很容易被找到解密过程,因此建议在Native层进行解密,更保障安全性。当然,dex文件存放在其他位置也行,只要能够读取到。dex文件也可以不进行加密,上述步骤中,将解密后的dex文件写在终端内置的存储空间上是由于之后的动态加载步骤必须传路径给Dalvik虚拟机内核,将解密后的文件删除是为了避免功能文件类被直接看到而利用。
权利要求
1.一种基于Android应用软件的增量升级方法,其特征在于包括以下步骤 1)比较当前版本和服务器最新版本; 2)由版本差异下载相应的增量升级插件包; 3)安装并运行增量升级插件包; 4)由包内设定的增量升级方式,修改应用程序包; 其中,对应用程序包的修改包括对包内的功能文件修改及对包内资源文件的修改。
2.根据权利要求I所述的一种基于Android应用软件的增量升级方法,其特征在于对更新后的应用程序包重新进行签名。
3.根据权利要求I所述的一种基于Android应用软件的增量升级方法,其特征在于所述的增量升级插件包定义了 Insert、Update、Delete三种方式组合支持升级。
4.根据权利要求I所述的一种基于Android应用软件的增量升级方法,其特征在于所述的功能文件为assets目录下加密的dex文件,所述的资源文件为res目录下的工程资源文件。
5.根据权利要求I所述的一种基于Android应用软件的增量升级方法,其特征在于对包内功能文件的升级包括以下步骤 1)读取包内原加密的功能文件; 2)将解密后的功能文件写在终端内置的存储空间上; 3)动态加载功能文件类; 4)执行功能; 5)删除解密后的文件。
6.根据权利要求5所述的一种基于Android应用软件的增量升级方法,其特征在于所述步骤3中利用Dalvik虚拟机对功能文件进行动态加载。
全文摘要
本发明涉及一种基于Android应用软件的增量升级方法,包括以下步骤 1)比较当前版本和服务器最新版本; 2)由版本差异下载相应的增量升级插件包; 3)安装并运行增量升级插件包; 4)由包内设定的增量升级方式,修改应用程序包;其中,对应用程序包的修改包括对包内的功能文件修改及对包内资源文件的修改。本发明将增量升级的内容,分为了两种不同的文件对象,一为功能文件,二为资源文件。这能够让增量升级插件包内尽量只包含更改过的升级文件。藉此,Android应用程序能够进行一些功能和资源上能增量升级,也减少了用户等待和流量耗费,更为高效快捷。
文档编号G06F9/445GK102707977SQ20121015338
公开日2012年10月3日 申请日期2012年5月17日 优先权日2012年5月17日
发明者吴少刚, 唐科, 张斌, 张珩, 张福新, 赵勇 申请人:江苏中科梦兰电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1