閱讀208 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Android應用程序版本號管理.(官方文檔中文版)

在應用程序的 升級/維護 策略中, 版本是一個關鍵的組成部分.

  • 用戶需要了解在他們的設備上所安裝的應用程序的版本的特定信息, 以及已安裝程序的升級版本可用的情況.
  • 其他應用程序 - 作為同一個套件中發布的其他應用程序 - 需要從係統中查詢你的應用程序的版本號, 來確認兼容性和識別依賴情況.
  • 發布應用所依存的服務平台(如Android Market)也可能需要查詢你的應用程序的版本號, 然後可以向用戶顯示版本號. 它們也可能需要通過檢查應用的版本號來確認兼容性, 並建立升級/降級的關係.

Android係統本身並不檢查應用程序版本信息, 比如在升級,兼容性等等上, 不作強製限製. 取而代之的是, 僅由用戶或應用程序自身負責對版本做任何的強製限製.

Android係統根據其manifest文件中minSdkVersion屬性進行版本兼容性檢查. 這允許一個應用程序指定兼容的最小係統API版本.

設置應用程序版本號.

在應用程序的manifest文件中定義應用程序版本信息.
2個必須同時定義的屬性:

  • android:versionCode — 整型, 相對於其他種類的版本號而言, 表示應用程序代碼的版本. 其值是個整型,因此其他應用程序可以在程序編碼中判斷它, 例如檢查升級或降級關係. 可以對其設置任何值, 然而應當確保每一個後續發布的應用程序使用更大的值. 盡管係統並不強製執行這種規則, 但是每個後續版本使用增加的數字值是標準作法. 典型做法是, 你發布的第一個版本的versionCode為1, 然後以後的每個發布版本單調遞增, 而不管這個發布版本是否是一個主要或者次要的發布版本. 這表示 android:versionCode 值沒有必要與用戶可見的應用程序發布版本號有特別的相似之處. 同時,應用程序和發布平台不應將此版本值呈現給用戶.
  • android:versionName --- 字符串值,向用戶顯示的應用程序代碼的發布版本號.  此值是一個字符串, 因此可以用<major>.<minor>.<point>的形式描述應用程序版本, 或者以任何其他類型的絕對或相對版本號標識的形式. 相對於 android:versionCode, 除了讓應用程序向用戶顯示它以外, 係統不打算將這個值用於任何內部使用目的. 應用發布平台可能會將 android:versionName 值解析出來顯示給用戶. 在manifest文件的<manifest>元素中同時定義這些個版本相關屬性.

例子如下:

 <?xml version="1.0" encoding="utf-8"?> 
 <manifest xmlns:android="https://schemas.android.com/apk/res/android"   package="com.example.package.name" 
     android:versionCode="2" 
  android:versionName="1.1"
  <application android:icon="@drawable/icon" android:label="@string/app_name"> 
    ... 
  </application> 
 </manifest> 

在例子中, 注意 android:versionCode 值顯示當前的.apk包含了應用程序代碼的第二個發布, android:versionName字符串表現的是一個小的後繼發布版本. 

Android 提供了一個API以讓應用程序向係統查詢版本信息. 使用 PackageManager 的 getPackageInfo(java.lang.String, int)方法.

指定應用程序的係統API需求.

如果應用需要指定一個Android平台的最小版本號, 或者是設計為僅支持一個特定的Android平台版本範圍, 可以在應用程序的manifest文件中以API Level標識符形式指定. 這麼做確保應用可以僅被安裝在運行著兼容版本的Android設備中.

要指定API Level, 在應用程序的manifest文件中添加一個<uses-sdk>元素, 然後指定一個或多個以下這些屬性:

  • android:minSdkVersion — 應用程序運行的最小Android平台版本, 由平台的API Level標識指定.
  • android:targetSdkVersion — 指定應用設計運行的API Level. 在一些情況下, 這允許應用程序使用目標API Level中的manifest元素或者行為, 而不是被限製在僅使用最小API Level中的元素.
  • android:maxSdkVersion - 應用設計運行的Android平台的最大版本, 由平台的API Level標識指定. 重要: 在使用這個屬性之前, 請閱讀 <uses-sdk> 文檔.

當準備安裝應用時, 係統檢查這些個屬性的值, 並與係統版本比較. 如果 android:minSdkVersion 的值比係統版本號要高, 係統將中斷應用程序的安裝. 類似地, 係統僅在應用程序的 android:maxSdkVersion 和平台版本兼容的的情況下安裝應用程序.

如果在manifest中沒有指定這些屬性, 係統會假設應用程序和所有平台版本兼容, 沒有最大API Level的限製.

若要為應用程序指定最小平台版本, 需要在<manifest>下添加一個<uses-sdk>子元素, 然後定義android:minSdkVersion屬性.

更多的信息, 請參見 <uses-sdk> manifest元素和API Level的文檔.

最後更新:2017-04-02 06:51:50

  上一篇:go 同時進入公司的三個同學,薪水為什麼如此不同?
  下一篇:go Android 應用程序獲得版本號