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時程序就很差判斷是否該更新版本。
二、可能致使系統內置應用沒法升級,不斷被還原。

相關文章
相關標籤/搜索