用于表明應用程式與一個或多個版本 android 平台的相容性,以整數型的 api 級别來表示。 應用程式聲明的 api 級别将與給定的 android 系統進行比較,不同 android 裝置的 api level 可能各不相同。
不要去理會名稱(指 uses-sdk),本元素是用于指定 api 級别 的,而不是指 sdk (軟體開發包)或 android 平台的版本号。 api 級别總是以一個整數值來表示。 api 級别是無法從相應的 android 版本号推導出來的(比如,它既不是主版本号,也不是主版本号加小版本号)。
整數值,指定運作應用程式所需的最低 api 級别。 如果系統 api 級别低于本屬性設定的值, android 系統将阻止使用者安裝此應用程式。 本屬性必需指定。
提醒: 如果未聲明本屬性,系統假定預設值為“1”,這表示應用程式與所有版本的 android 相容。 如果應用程式無法相容所有版本(比如,用到了 api 級别 3 才開始引入的 api ), 也沒有聲明正确的 android:minsdkversion, 那麼安裝在低于 api 級别 3 的系統中後,一旦在運作過程中試圖通路不可用的 api,應用程式就會崩潰。 是以,請確定在 minsdkversion 屬性中聲明正确的 api 級别。
整數值,指定應用程式的目标 api 級别。如果不設定本屬性,預設值等于已給定的 minsdkversion。
本屬性将告知系統應用程式已經針對此目标版本進行了測試,系統不會啟用任何與此目标版本相關的向前相容特性。 應用程式仍然能夠在較低版本(最低至 minsdkversion)的系統上運作。
随着 android 的版本更新,某些特性甚至元件外觀都會發生變化。 不過,當平台的 api 級别高于應用程式聲明的 targetsdkversion時,系統會啟用相容性特性,應用程式仍然可以按預計方式運作。 通過把 targetsdkversion 設定為所需的平台版本,你可以禁用相容特性。 比如,将本值設定為大于等于“11”,當運作于 android 3.0 以上版本時, 系統就能在應用程式上使用新加入的預設主題(holo),并且在大螢幕裝置上時還會禁用 螢幕相容模式 (因為 api 級别 11 隐含了對大螢幕的支援)。
根據本屬性設定的值,有系統可能會啟用很多相容性特性。 有相當多的特性在參考文檔 build.version_codes 中分版本進行了說明。
為了能随着 android 版本的釋出而對應用程式進行維護,你應該及時調大學屬性值以比對最新的 api 級别, 然後在對應版本的平台上對程式進行充分的測試。
整數值,指定應用程式設計可運作的最高 api 級别。
為了說明本屬性在系統更新後對應用程式的影響,請參閱以下例子:
某應用程式在 manifest 中聲明了 maxsdkversion=”5” ,并已在 google play 進行了釋出。 有一個使用者下載下傳并安裝了此應用程式,他的裝置運作的是 android 1.6 (api 級别 4)。 幾星期後,使用者通過無線系統把系統更新到了 android 2.0(api 級别 5)。 更新完成後,系統會檢查應用程式的 maxsdkversion 并成功進行了重新校驗,應用程式能夠正常工作。 但是一段時間之後,裝置又收到了另一個系統更新,這次是更新到 android 2.0.1(api 級别 6)。 這次更新後系統無法再對應用程式進行重新校驗了,因為目前系統的 api 級别 (6)已經高于應用程式支援的最大版本(5)了。 系統會阻止使用者使用此應用程式,實際上将會從裝置上删除它。
警告: 不建議聲明本屬性。 首先,沒有必要用本屬性來阻止應用程式在新版本 android 平台上的使用。 理論上講,新版本的平台完全是向後全相容的。 應用程式應該可以在新版本平台上正常運作,新版本不僅提供标準的api,還能開發最佳的體驗。 其次請注意,在某些場合聲明本屬性,可能會 導緻系統更新到高版本 api 後把應用程式删除。 大多數裝置都會通過無線網絡定期接收到系統更新,是以在設定本屬性之前,你應該考慮對應用程式的影響。
api 級别是一個整數值,它唯一辨別了某版本 android 平台所提供的 api 的版本。
android 平台提供了一整套 api,應用程式可以用這些 api 與底層系統進行互動。 這套api由以下部分組成:
核心包和類
聲明和通路資源時所用的 xml 格式的元素和屬性
一些預設的 intent
應用程式可請求的權限以及系統預設的權限
android 平台每個較高版本都會包含之前的 api 更新。
api 的更新機制使得新版本的 api 可以與早期版本保持相容。 也就是說,大部分的 api 改動都是新增功能,或是引入新 api ,或是替代原有功能。 作為 api 更新過程中的一部分工作,被替換的舊功能被視為過時功能但不會被删除。 是以,現有的應用程式仍然可以使用這些過時的功能。 在極少數情況下,一部分 api 可能會被修改或删除,通常這種改動隻是為了確定 api 的穩定性及應用程式或系統的安全性。 早期版本的 api 剩餘部分都将原封不動地帶入新版本。
當使用者嘗試安裝某應用程式時,或者在系統更新後對應用程式重新校驗時, android 系統首先會檢查應用程式 manifest 中的 <uses-sdk> 屬性, 并将其值與系統内部的 api 級别進行比較。 隻有滿足以下條件時,系統才會允許應用程式的安裝:
如果聲明了android:minsdkversion屬性,則其值必須小于等于目前系統的 api 級别值。
如果未聲明,系統就會假定該應用程式運作需要的最低 api 級别是 1 。
如果聲明了android:maxsdkversion屬性,則其值必須大于等于目前系統的 api 級别值。
如果未聲明,系統就會假定該應用程式沒有最高 api 級别的限制。