说明:Android APP的版本可以在androidmainfest.xml中定义,主要有android:versionCode和android:versionName。
Androidmainfest.xml文件中内容,如下例子
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx.xxx"
android:versionCode="2"
android:versionName="1.1.1">
......
- android:versionCode
主要用于版本升级,是INT类型的,第一个版本定义为1,以后递增,这样只要判断该值就能确定是否需要升级,该值不显示给用户。 - android:versionName
这个是说明的版本号,由三部分组成..,该值是个字符串,可以显示给用户。
补充说明:
versionCode是给设备程序识别(升级)用的,必须是一个interger值,整数,代表app更新过多少次;
versionName是给用户看的,可以写1.1 , 1.2,1.2.1等等版本,代表app当前是什么版本。
服务端
说明:一般情况下是有版本控制模块的
a.首先在服务器项目下建立一个文件夹来存放APK安装文件:
b.设计数据库(表字段:ID 、apk_versionCode、apk_versionName、apk_name、apk_path、apk_describe、apk_uploader、apk_STime)
客户端
a.首先获取服务端最近一次APK上传的版本信息(关键字段是apk_versionCode,apk_path)
b.其次获取当前客户端APK的版本信息
//版本名
public static String getVersionName(Context context) {
return getPackageInfo(context).versionName;
}
//版本号
public static int getVersionCode(Context context) {
return getPackageInfo(context).versionCode;
}
//包信息
private static PackageInfo getPackageInfo(Context context) {
PackageInfo pi = null;
try {
PackageManager pm = context.getPackageManager();
pi = pm.getPackageInfo(context.getPackageName(),
PackageManager.GET_CONFIGURATIONS);
return pi;
} catch (Exception e) {
e.printStackTrace();
}
return pi;
}
c.版本比较,如果版本不相同,则执行更新,相同则退出更新操作(一般是对话框)。
d.异步下载APK。
e.安装APK。