|
Android Build.VERSION.SDK_INT兼容介紹
儘管Android向下兼容不好,但是一個程序還是可以在多個平台上跑的。向下兼容不好,接口改變,新的平台上不能用舊的API,舊的平台更不可能用新的API,不等於一個平台需要一個APK。可以在高SDK上開發,並在程序中作版本判斷,低版本運行環境使用舊的API。 例如要開發一個顯示通話記錄的程序,需要兼容1.6~2.2,我們知道不同的平台SDK level不同,1.5是3,1.6是4,2.2是8。對應的可以使用android.os.Build進行判斷。源代碼如下:
Java代碼
- if(Build.VERSION.SDK_INT <= 4)
- {
- Toast.makeText(this, "version" + Build.VERSION.RELEASE+ " :" + Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show();
- }
- else
- {
- Toast.makeText(this, "version" + Build.VERSION.RELEASE+ " :" + Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show();
- }
複製代碼
轉自:http://www.linuxidc.com/Linux/2011-11/48325.htm
Java代碼
android.os.Build
Android SDK 版本
下列表格為2015年6月時執行特定 Android 版本的裝置分布比例, 資料來源為 Android Developers.
Code name | Version number | Initial release date | API level | | (No codename)[2] | 1.0 | September 23, 2008 | 1 | Unsupported | (Internally known as "Petit Four")[2] | 1.1 | February 9, 2009 | 2 | Unsupported | Cupcake | 1.5 | April 27, 2009 | 3 | Unsupported | Donut[3] | 1.6 | September 15, 2009 | 4 | Unsupported | Eclair[4] | 2.0 – 2.1 | October 26, 2009 | 5 – 7 | Unsupported | Froyo[5] | 2.2 – 2.2.3 | May 20, 2010 | 8 | Unsupported | Gingerbread[6] | 2.3 – 2.3.7 | December 6, 2010 | 9 – 10 | Unsupported | Honeycomb[7] | 3.0 – 3.2.6 | February 22, 2011 | 11 – 13 | Unsupported | Ice Cream Sandwich[8] | 4.0 – 4.0.4 | October 18, 2011 | 14 – 15 | Unsupported | Jelly Bean[9] | 4.1 – 4.3.1 | July 9, 2012 | 16 – 18 | Unsupported | KitKat[10] | 4.4 – 4.4.4 | October 31, 2013 | 19 – 20 | Unsupported[11] | Lollipop[12] | 5.0 – 5.1.1 | November 12, 2014 | 21 – 22 | Supported (except 5.0.x) | Marshmallow[13] | 6.0 – 6.0.1 | October 5, 2015 | 23 | Supported | Nougat[14] | 7.0 – 7.1.2 | August 22, 2016 | 24 – 25 | Supported | Oreo[15] | 8.0 – 8.1 | August 21, 2017 | 26 – 27 | Supported |
| 從表格中的分布比例可以發現, 即使有較新的版本, 執行較舊版本的裝置也不會立即升級或更換.
相容性
要有較多的使用者, 程式就要能執行在多種版本上. 要能執行在多種版本上, 相容性就是一個重要的議題.
Android 專案中通常有幾個 SDK 版本要設定.
minSdkVersion
位在 AndroidManifest.xml 中, 作業系統會拒絕安裝程式在低於 minSdkVersion 的裝置上.
targetSdkVersion
位在 AndroidManifest.xml 中, 程式主要的目標版本. 通常 targetSdkVersion 是最新版的 SDK, 除非當新版的 SDK 釋出時, 還無法確認程式在新版的 SDK 上運作正常, 才會降低 targetSdkVersion 到已確認過的版本上.
compileSdkVersion
依開發工具不同, 位在特定的專案設定檔中, 開發工具用來建置專案的 SDK 版本, 通常是最新版的 SDK.
minSdkVersion 和 compileSdkVersion 之間的差異可能會產生相容性的問題. 舉例來說, 假如程式使用了 minSdkVersion 之後的版本才有的功能, 當程式執行在 minSdkVersion 的裝置上時, 程式就會當掉.
|
|