Android应用程序更新或升级

若是更新或者升级后系统内置应用,遇到重启Android系统后内置应用被还原,那是由于手动安装的APK版本号和系统内置API版本号同样。java

一、Android系统应用更新机制
系统为每一个应用在AndroidMainfest.xml提供了versionName、versionCode两个属性。
spa

versionName:String类型,用来给应用的使用者来查看版本,表明应用程序的版本信息,须要显示给用户。设计

与versionCode同样,系统不会为了任何内部的目的使用这个值,除了显示给用户外。发布的服务也须要提取这个值来显示给用户。code

versionCode:Int类型,做为系统判断应用是否能升级的依据。表明应用程序代码的相对版本,也就是版本更新过多少次。xml

整数值有利于其它程序比较,检查是升级仍是降级。你能够把这个值设定为任何想设的值,可是,你必须保证后续更新版的值要比这个大。系统不会强制要求这一行为,可是随着版本更新值也增长是正常的行为。开发

通常来讲,发布的初版程序的versionCode设定为1,而后每次发布都会相应增长,无论发布的内容是较大仍是较小的。这意味着versionCode不像应用程序的发布版本(versionName)那样显示给用户。应用程序和发布的服务不该该显示这个版本值给用户。get

二、Android系统内置应用更新判断代码io

/**
	 * 获取当前客户端版本信息
	 */
	private void getCurrentVersion() {
		
		try {
			PackageInfo info = mContext.getPackageManager().getPackageInfo(
					mContext.getPackageName(), 0);
			curVersionName = info.versionName;
			curVersionCode = info.versionCode;
		} catch (NameNotFoundException e) {
			e.printStackTrace(System.err);
		}
	}

从上面代码能够知道:更新系统应用时,若是新的versionCode大于当前安装的版本,更新将被执行。程序设计

三、开发者误区 class

对Android应用更新机制不熟悉的开发者,错误地把versionName做为应用更新的依据,以至于在更新程序出现一些问题:
一、更新程序设计时必须把versionName设置小数形式,如2.1,当设置为2.2.1时程序就很差判断是否该更新版本。
二、可能致使系统内置应用没法升级,不断被还原。

相关文章
相关标签/搜索