文法
<uses-sdk android:minSdkVersion="integer"
android:targetSdkVersion="integer"
android:maxSdkVersion="integer" />
父元素
<manifest>
描述
通過整數型的API Level,採用一個或多個Android版本來讓你指定應用的相容性。這個由應用定義的API Level將同特定Android系統的API Level進行比較,它可以在不同的Android裝置間變化。
通過名稱我們可以看出,這個元素用來指定的是API Level,而不是SDK(software development kit)或Android的版本。這個API Level始終是整數。你不能從和它相關的Android版本號碼來派生出API Level(例如,它同主要版本號或主次版本的總和是不一樣的)。
你也可以閱讀關於Versioning Your Applications的文檔。
屬性
android:minSdkVersion
應用運行所需的最小API Level。如果系統的API Level比在這個屬性中指定的值更低,那麼Android系統將阻止使用者安裝這個應用。你應當始終聲明這個屬性。
注意:如果你沒有聲明這個屬性,那麼系統將分配一個預設值“1”,這意味著你的應用將相容所有的Android版本。如果你的應用不相容所有Android版本(例如,它使用的是API Level 3),而且你也沒有聲明minSdkVersion的話,那麼當在API Level 3以下的系統中安裝時,應用會在運行時期間嘗試訪問停用APIs時出現崩潰。正因如此,最好在minSdkVersion屬性中聲明相關的API Level。
android:targetSdkVersion
定義應用的目標API Level。如果沒有設定,那麼它的預設值同minSdkVersion給定的值相等。
這個屬性通知系統你已經在這個target version上測試了你的應用,系統不應該再啟用任何相容性動作來維持你應用的向下相容性。這個應用仍舊能夠在更老的版本(minSdkVersion以上)運行。
隨著Android新版本的不斷演變,某些動作可能改變。然而,如果由你應用的targetSdkVersion定義的版本沒有平台的版本高,那麼系統可能啟用相容性動作來確保你的應用繼續以你期望的方式工作。在應用運行時,你能通過指定targetSdkVersion匹配當前平台的API Level來禁用這個相容性動作。例如,將這個值設為“11”或更高,那麼當應用在Android 3.0或更高版本中運行時,就會允許系統應用新的預設主題(Holo)到你的應用,而且也能在運行在larger螢幕(因為對API Level 11的支援就隱含了支援larger螢幕)上時禁用screen compatibility mode。
有很多系統能啟用的基於你為這個屬性設定的值的相容性動作。在Build.VERSION_CODES引用中,這些動作中的某些由對應的平台版本號碼來描述。
為了保證你的應用能在每個Android發布的版本上運行,你應當增加這個值以匹配最新的API Level,然後在相應的平台上測試你的應用。
出處:API Level 4
android:maxSdkVersion
設計的應用能啟動並執行最大API Level。
在Android 1.5,1.6,2.0和2.0.1中,當安裝應用時,以及當系統更新後重新驗證這個應用時,系統會檢查這個屬性的值。有一種情況,如果應用的maxSdkVersion屬性比使用的系統API Level低,那麼系統就不會允許這個應用安裝。在系統更新後重新驗證時,這會有效地從裝置中回收你的應用。
為了說明在系統更新後這個屬效能如何影響你的應用,請看下面的例子:
在Google Play中發布的在manifest中聲明maxSdkVersion="5"的應用。一個正在運行Android 1.6的使用者裝置下載和安裝這個應用。幾周后,使用者收到更新系統到Android 2.0(API Level 5)的通知。在更新安裝後,系統會檢查這個應用的maxSdkVersion並且成功的重新驗證它。這個應用的功能正常。然而,一段時間後,裝置收到另一個系統更新,這次是更新到Android 2.0.1(API Level 6)。在這次更新後,由於系統自身的API Level (6)現在比應用(5)支援的最大 API Level更高,系統就不再能重新驗證應用。系統會阻止使用者看見這個應用,進而有效從裝置回收。
警告:不推薦聲明這個屬性。首先,當新版本發布時,不需要通過設定這個屬性來阻止你的應用部署在Android平台的新版本上。在設計上,平台的新版本完全可以向下相容。通過只使用標準APIs以及按照最佳開發實踐這種手段,你的應用能正常的工作在新版本上。其次,注意下述情況,聲明這個屬效能導致你的應用在系統更新到更高的API Level後從使用者的裝置上回收。你應用很可能安裝在大部分接收定期更新的裝置上,因此你應當在設定這個屬性之前考慮它所帶來的影響。
出處:API Level 4
在安裝或重新驗證時,Android的未來版本將不再檢測或執行這個maxSdkVersion屬性。然而,當為使用者提供可供下載的應用時,Google Play則會繼續使用這個屬性進行過濾。
出處
API Level 1