208
技術社區[雲棲]
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