使用 Android API Level
在 uses-sdk 中,除了 android:minSdkVersion 以外,還有 android:targetSdkVersion 和 android:maxSdkVersion,雖然名為 uses-sdk,但是用的卻是 API Level,而不是 SDK 版本或者 Android 平台版本。
- minSdkVersion - 執行該 Android 應用程式所需最小的 Android 平台版本,Android 系統會依據這個設定決定該 Android 平台是否可以安裝該 Android 應用程式,所以這個設定值是必須的,如果未設定則使用預設值「1」。
targetSdkVersion - 標注經過測試的版本,到底有什麼用途?看不懂。
maxSdkVersion -
執行該 Android 應用程式所需最大的 Android 平台版本,如果 Android 平台自動更新後超過maxSdkVersion 設定值,
Android 平台會自動將該 Android 應用程式移除。
不建議使用maxSdkVersion
,因為 Android 平台向後相容所有 Android 應用程式,或者說 Android 應用程式向前相容所有 Android 平台,甚至當 Android 應用程式有自動更新功能時,會因為maxSdkVersion
自動移除而失效。
在 Android 2.0.1 以後,Android 平台在安裝或更新時不再檢查maxSdkVersion 設定值,
maxSdkVersion 只保留給
Android Market 過濾可安裝的 Android 應用程式使用。
版本相容
Android 平台的功能是累加的,所以一定能向前相容,也就是說 API Level 8 的應用程式一定能執行在 8 以後(9、10、11)的所有平台,新版本的平台一定包含舊版本的功能,再加上新功能。
因為 Android 平台有自動更新的功能(OTA, over-the-air),所以 Android 應用程式一定要能向前相容,不能因為平台更新導致原本可正常使用的 Android 應用程式掛掉。
Android 不支援向後相容,也就是依據新版本而寫的應用程式無法執行在舊版本的平台上,尤其使用到新增加的功能。
在開發 Android 應用程式時,應該盡可能支援較舊的版本,該值即為 AndoridManifest.xml 裡 <uses-sdk android:minSdkVersion="..." /> 所指定的值,也是 Android Virtual Device(AVD)裡的 target 設定值。
android:minSdkVersion 決定了可安裝該 Android 應用程式的機器 Android 平台最小版本。
除了使用 android:minSdkVersion 指定的版本建立 AVD 進行測試外,也必須另外建立所有較新版本的 AVD 進行完整的相容性測試。
可以在 Eclipse > Android SDK and AVD manager 下載最新版本的 Android 平台。
開發尚未 release 的 Android 版本
尚未 release 的 Android 版本不會有一個數值的 API Level,只會有一個文字的代碼,僅能用於開發環境與模擬機上,不能安裝到真正的機器上。
如何在 Android Reference(API Docs)裡使用 API Level?
在 Android Reference 裡預設是顯示最新版本的 API,但是在頁面右上角可以看到一個 checkbox,提供 Filter by API Level 的功能。
勾選後,選取想要的 API Level,頁面會立即將不相容的 API 灰階顯示,不相容指的多半是較新的版本才有的功能。
Android Reference 並未提供單一頁面顯示特定 API Level 的所有 API,只能從各個頁面的右上角看到 Since: API Level xxx 資訊。
這邊的 Filter by API Level 所要選定的值就是 AndoridManifest.xml 裡 <uses-sdk android:minSdkVersion="..." /> 所指定的值。
資料來源
沒有留言:
張貼留言