【Android】应用如何做到自动更新
2014-11-07 14:03
246 查看
一般app应用商店中提供了安卓软件的升级功能,但是很多app都在第三方商店升级之外增加了自己的升级方式。这是如何做到的呢?
“这是如何做到的呢?”这个问题是我们在搞android开发的时候容易进入误区的体现。其实抛开安卓这个概念,一个东西如果想更新版本其实都是一样的。
1.需要比对版本,判断是否需要更新。
2.如果有新版本出现则需要下载新版本。
3.新版本安装或者保存在自己的设备中。
而在安卓中无非是围绕如何实现这些步骤而已。
下面来谈谈实现的方法:
首先为了在任何地方都能比对版本,你必须要一个能提供最新版本信息的服务器,服务器的特定地址可以给出版本信息,一般都是web服务器。当然很多人不愿意为了更新版本就单独做一个网站,你可以不用自己的服务器,而把这些信息放到互联网的任何地方,只要能访问得到就行,甚至博客中,app根据一定的规则解析到需要的信息。因为已经有自己的网站,所以就直接放在网站上面,这样我可以在网站上集成发布app的功能。
版本比对信息中我会返回如下的信息,一般以json返回,方便客户端解析。
json {"url":"http://192.168.1.115:8080/xxx.apk","versionCode":2,"updateMessage":"版本更新信息"}
第一个为该apk的下载地址,第二个为版本号,安卓应用中可以读取当前的版本号和这个比较,如果当前应用版本号小于服务器说明有更新需要下载,第三个为更新说明。
而这三个信息其实是需要人工修改的,不是说你写完一个app上面的信息就自动变了。但如果你有自己的网站的话,可以让这个过程不那么痛苦,多花点时间在网站后台写个发布app的的功能。类似于下面这样的:
将这些信息保存在一个文件中,或者数据库中,然后在客户端访问版本信息的时候以json格式返回给客户端。
下面再说说客户端需要做的。
客户端需要向提供版本信息的地址发起请求,得到{"url":"http://192.168.1.115:8080/xxx.apk","versionCode":2,"updateMessage":"版本更新信息"}的json字符串。(当然这是通过开启一个线程来做的)
然后解析该字符串:
如果服务端版本号大于app中的版本号,则下载apk(
下载最好开启一个service来完成。
下载apk的过程很简单:
下载完成我们需要通知用户,这可以通过安卓消息栏的方式,也可以通过弹出对话框的方式。第一种方式是通过NotificationManager,第二种可以发送广播来通知客户端。
其实在github上已经有了一个比较完整的第三方库来实现app的更新,调用只需一句代码就可以搞定,不足之处是他将请求版本信息的地址放在了库文件的一个变量中,不能直接在外部传递。https://github.com/feicien/android-auto-update
转自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0304/1585.html
“这是如何做到的呢?”这个问题是我们在搞android开发的时候容易进入误区的体现。其实抛开安卓这个概念,一个东西如果想更新版本其实都是一样的。
1.需要比对版本,判断是否需要更新。
2.如果有新版本出现则需要下载新版本。
3.新版本安装或者保存在自己的设备中。
而在安卓中无非是围绕如何实现这些步骤而已。
下面来谈谈实现的方法:
首先为了在任何地方都能比对版本,你必须要一个能提供最新版本信息的服务器,服务器的特定地址可以给出版本信息,一般都是web服务器。当然很多人不愿意为了更新版本就单独做一个网站,你可以不用自己的服务器,而把这些信息放到互联网的任何地方,只要能访问得到就行,甚至博客中,app根据一定的规则解析到需要的信息。因为已经有自己的网站,所以就直接放在网站上面,这样我可以在网站上集成发布app的功能。
版本比对信息中我会返回如下的信息,一般以json返回,方便客户端解析。
json {"url":"http://192.168.1.115:8080/xxx.apk","versionCode":2,"updateMessage":"版本更新信息"}
第一个为该apk的下载地址,第二个为版本号,安卓应用中可以读取当前的版本号和这个比较,如果当前应用版本号小于服务器说明有更新需要下载,第三个为更新说明。
而这三个信息其实是需要人工修改的,不是说你写完一个app上面的信息就自动变了。但如果你有自己的网站的话,可以让这个过程不那么痛苦,多花点时间在网站后台写个发布app的的功能。类似于下面这样的:
将这些信息保存在一个文件中,或者数据库中,然后在客户端访问版本信息的时候以json格式返回给客户端。
下面再说说客户端需要做的。
客户端需要向提供版本信息的地址发起请求,得到{"url":"http://192.168.1.115:8080/xxx.apk","versionCode":2,"updateMessage":"版本更新信息"}的json字符串。(当然这是通过开启一个线程来做的)
然后解析该字符串:
int versionCode = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0).versionCode;可获得版本号)。
下载最好开启一个service来完成。
下载apk的过程很简单:
其实在github上已经有了一个比较完整的第三方库来实现app的更新,调用只需一句代码就可以搞定,不足之处是他将请求版本信息的地址放在了库文件的一个变量中,不能直接在外部传递。https://github.com/feicien/android-auto-update
转自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0304/1585.html
相关文章推荐
- Android 应用的自动升级、更新模块的实现
- Android中如何做到Service被关闭后又自动启动
- Android应用自动更新功能的实现!!!
- Android应用自动更新功能的代码实现
- Android应用自动更新功能的实现!!!
- Android应用自动更新功能的实现!!!
- Android应用的自动升级、更新模块的实现
- Android应用自动更新功能的实现!!! .(转自魏祝林博客)
- Android应用自动更新功能的实现!!! .(转自魏祝林博客)
- Android应用的自动升级、更新模块的实现
- Android中如何做到Service被关闭后又自动启动
- Android应用自动更新功能的实现
- Android应用的自动升级、更新模块的实现
- Android应用自动更新功能的实现!!!
- Android应用的自动升级、更新模块的实现
- Android中如何做到Service被关闭后又自动启动
- Android应用的自动升级、更新模块的实现
- Android中如何做到Service被关闭后又自动启动
- Android应用开发笔记(12):Android应用的自动升级、更新模块的实现
- Android应用自动更新功能的实现!!!