API級別是什么
當(dāng)你開發(fā)你的Android應(yīng)用程序時,了解該平臺API變更管理的基本方法和概念是很有幫助的。同樣的,知道API級別標識以及該標識如何保障你的應(yīng)用與實際硬件設(shè)備相兼容對于開發(fā)及后續(xù)的發(fā)布、維護都是有益的。API級別是一個整數(shù)值,它唯一標識了一個具體版本的Android平臺,及其框架的API的版本。
Android平臺提供了一套框架API,使得應(yīng)用程序可以與系統(tǒng)底層進行交互。該框架API由以下模塊組成:
- 一組核心的包和類
- 清單(manifest)文件的XML元素和屬性聲明
- 資源文件的XML元素和屬性聲明及訪問形式
- 各類意圖(Intents)
- 應(yīng)用程序可以請求的各類授權(quán),以及系統(tǒng)中包含的授權(quán)執(zhí)行
每個Android平臺的后續(xù)版本會包括它提供的更新的Andr??oid應(yīng)用程序框架的API。
該框架的API的更新設(shè)計,使高版本的API與早期版本兼容。也就是說,在新版本API中大多數(shù)都是新增功能,和引進新的或替代的功能。作為API的部分升級,老的替換的部分已過時,但不會從新版本中刪除,使得已有的應(yīng)用程序仍然可以使用它們。在極少數(shù)情況下,舊版本API的部分可能被修改或刪除,通常這種變化是為了保障API的穩(wěn)定性及應(yīng)用程序或系統(tǒng)的安全。所有其他早期版??本的API將不做修改的保留。
一個Android平臺提供的框架API,被指定一個整數(shù)標識符,稱為“API級別”。每一個版本的Android平臺只支持有一個API級別,雖然該支持是隱含地包括了所有早期的API級別(一直到API級別1級)。 Andr??oid平臺的最初版本提供的框架API級別是1級,隨后的版本依次遞增。
下表說明了具體平臺版本和支持的API級別的對應(yīng)關(guān)系。
平臺版本 |
API級別 |
Android 3.0 |
11 |
Android 2.3.3 |
10 |
Android 2.3 |
9 |
Android 2.2 |
8 |
Android 2.1 |
7 |
Android 2.0.1 |
6 |
Android 2.0 |
5 |
Android 1.6 |
4 |
Android 1.5 |
3 |
Android 1.1 |
2 |
Android 1.0 |
1 |
平臺版本 API級別
android 3.0 11
android 2.3.3 10
android 2.3 9
android 2.2 8
android 2.1 7
android 2.0.1 6
android 2.0 5
android 1.6 4
android 1.5 3 在Android中使用API級別
API級別標識為保證用戶和應(yīng)用程序開發(fā)者的最佳體驗,起了關(guān)鍵作用:
- 它讓Android平臺可以描述它支持的框架API的最高版本
- 它讓應(yīng)用程序可以描述它需要的框架API版本
- 它使得系統(tǒng)可以在硬件設(shè)備上安裝應(yīng)用程序時能夠檢查版本是否匹配,使得版本不兼容的應(yīng)用程序不會被錯誤安裝在設(shè)備之上.
每個版本的Android平臺都在其內(nèi)部存儲了自己的API級別標識。
應(yīng)用程序可以用框架API提供的清單文件元素 — <uses-sdk> 來描述該應(yīng)用程序可以運行的最小和最大API級別,以及應(yīng)用程序開發(fā)者設(shè)計期望運行的平臺版本。三種屬性分別描述如下:
android:minSdkVersion — 指明該應(yīng)用程序可以運行的API最低版本。默認是“1”。
android:targetSdkVersion — 指明該應(yīng)用程序設(shè)計時期望運行的目標API版本。這允許應(yīng)用程序使用目標API級別下定義的清單元素或行為,而不是只限于使用最低API級別定義的內(nèi)容。
android:maxSdkVersion — 指明該應(yīng)用程序可以運行的最高API級別。
用戶嘗試安裝一個應(yīng)用程序,或者在系統(tǒng)升級后重驗證應(yīng)用程序的時候,Android系統(tǒng)首先會檢查應(yīng)用程序的清單文件中的<uses-sdk>屬性,將其與系統(tǒng)內(nèi)部API級別對比。系統(tǒng)只有在滿足下列情況時才允許進行應(yīng)用程序安裝:
- 如果聲明了
android:minSdkVersion 屬性,其屬性值必須小于或等于該系統(tǒng)的API級別對應(yīng)的整數(shù)值。如果未聲明,系統(tǒng)會默認該應(yīng)用程序運行需要的最低API級別是1。
- 如果聲明了
android:maxSdkVersion 屬性,其屬性值必須等于或大于該系統(tǒng)的API級對應(yīng)的整數(shù)值。 如果未聲明,系統(tǒng)會默認該應(yīng)用程序沒有最高API級別限制。
應(yīng)用程序清單文件中聲明該屬性后, <uses-sdk> 元素看起來應(yīng)類似于下面的例子:
- API Levels" name=image_operate_69861311043279109 alt="[轉(zhuǎn)載]Android - API Levels" src="http://s14.sinaimg.cn/middle/48a45b95xa8630b496c5d&690" real_src="http://s14.sinaimg.cn/middle/48a45b95xa8630b496c5d&690">
這樣做的主要原因是,應(yīng)用程序會通過android:miniSdkVersion聲明的API級別來告知系統(tǒng)——該應(yīng)用程序使用的API是指定引入的API級別。假如沒有這種屬性聲明,一個應(yīng)用程序如果因為某些不知名的原因被安裝在低級別API系統(tǒng)之上,那么該應(yīng)用程序會在運行時因為嘗試訪問不存在的API而崩潰。為此,Android系統(tǒng)通過不允許應(yīng)用程序被安裝在不滿足其最低API級別要求的目標硬件上來防止此類結(jié)果發(fā)生。
例如,android.appwidget 類包是在 API 級別 3 中開始引入的。如果一個應(yīng)用程序使用了這個 API ,就必須通過指明 android:minSdkVersion 屬性為 3 來聲明運行的最低要求。于是,該應(yīng)用程序就可以在 Android 1.5 ( API 級別 3 級)、 Android 1.6 (API級別4級)等平臺上安裝,但是在Android 1.1 (API級別2級)和 Android 1.0 平臺(API級別1級)上卻是無法安裝的
|