一.服务器端
1.将需要更新的apk和版本信息文件发布到服务器,这里我使用的是本地tomcat中
2,。version.json版本的信息,里面有版本编号,客户端通过比较版本编号,来判断是否需要更新。
3.启动tomcat服务器
二.android客户端
得益于android系统的软件包管理和安装机制,我们可以方便的实现软件的自动更新。
1.得到现在使用程序的版本编号
在AndroidManifest.xml里定义了每个Androidapk的版本标识:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ericssonlabs"
android:versionCode="1"
android:versionName="1.0" >
其中,android:versionCode和android:versionName两个字段分别表示版本代码,版本名称。versionCode是整型数字,versionName是字符串。由于version是给用户看的,不太容易比较大小,升级检查时,可以以检查versionCode为主,方便比较出版本的前后大小。
那么,在应用中如何读取AndroidManifest.xml中的versionCode和versionName呢?可以使用PackageManager的API,参考以下代码:
publicstatic int getVerCode(Context context) {
intverCode = -1;
try {
verCode =context.getPackageManager().getPackageInfo(
"com.myapp",0).versionCode;
} catch(NameNotFoundException e) {
Log.e(TAG,e.getMessage());
}
returnverCode;
}
publicstatic String getVerName(Context context) {
StringverName = "";
try {
verName =context.getPackageManager().getPackageInfo(
"com.myapp",0).versionName;
} catch(NameNotFoundException e) {
Log.e(TAG,e.getMessage());
}
returnverName;
}
2. 从服务器获取版本信息文件,与现状的版本进行对比,如果版本vercode有发生变化,那么下载服务器上面的最新版本,并进行安装。
因为应用程序的安装时根据包名的,如果有相同包名的应用安装,那么就会替换。
注意:一般当有新的版本更新时,服务器会通过消息推送的形式,push给客户端,而不是需要每次程序启动时候,都去访问服务器。
源码下载:http://download.csdn.net/detail/kaka89757/5268674
参考文章:http://www.cnblogs.com/ylligang/articles/2277637.html