天天看點

Manifest.xml 入門基礎 (三) <uses-sdk>标簽Manifest.xml 入門基礎 (三) <uses-sdk>标簽

用于表明應用程式與一個或多個版本 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 級别的限制。

繼續閱讀