今天做了下APK版本更新的功能。其实关于APK版本更新相关的文章网上挺多的,功能实现上也并不难。基本思路就是讲当前APK的版本号和服务器上保存的最新APK包的版本号进行对比,如果当前版本小于最新版本,则进行下载更新。流程图如下:
引用的第三方jar包有okhttp,okio(为了支持okhttp)和gson:
compile 'com.squareup.okio:okio:1.5.0' compile 'com.squareup.okhttp:okhttp:2.4.0' compile 'com.google.code.gson:gson:2.3'PC端里APK版本列表的数据结构如下:
APK版本列表(APK_VERSION)
PK |
字段名称 |
字段别名 |
字段类型 |
字段长度 |
是否允许为空 |
True |
id |
标识码 |
NUMBER |
(10) |
False |
False |
apk_name |
apk名称 |
NVARCHAR2 |
(500) |
False |
False |
apk_version |
apk版本 |
NVARCHAR2 |
(100) |
False |
False |
apk_size |
apk文件大小(M) |
NVARCHAR2 |
(50) |
False |
False |
apk_path |
apk打包文件存放路径 |
NVARCHAR2 |
(2000) |
False |
False |
app_time |
apk数据记录时间 |
NVARCHAR2 |
(20) |
False |
False |
app_desc |
apk版本更新说明 |
NVARCHAR2 |
(500) |
True |
False |
remark |
备注 |
NVARCHAR2 |
(500) |
True |
对应的Android端的数据抽象类为:
public class APKVersionBean { private String apkversion; private String apkname; private String apksize; private String apkpath; private String apptime; private String apkdesr; private String remark; public String getApkversion() { return apkversion; } public void setApkversion(String apkversion) { this.apkversion = apkversion; } ... }
首先是进行版本验证功能,每个APP版本设置是在AndroidManifest文件里,如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.diit.okhttptest" android:versionCode="1" android:versionName="测试版本">versionCode就是版本号,要获取它可以采用 getPackageManager的方法,代码为:
public int getVerCode(Context context){ int verCode = -1; try { verCode = context.getPackageManager().getPackageInfo("com.diit.okhttptest", 0).versionCode; } catch (PackageManager.NameNotFoundException e) { // TODO Auto-generated catch block Log.