TShopping

 找回密碼
 註冊
搜索
查看: 2198|回復: 0
打印 上一主題 下一主題

[教學] Android Build.VERSION.SDK_INT兼容介紹

[複製鏈接]
跳轉到指定樓層
1#
發表於 2015-10-26 07:27:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
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代碼
  1. if(Build.VERSION.SDK_INT <= 4)
  2. {
  3. Toast.makeText(this, "version" + Build.VERSION.RELEASE+ " :" + Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show();
  4. }
  5. else
  6. {
  7. Toast.makeText(this, "version" + Build.VERSION.RELEASE+ " :" + Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show();
  8. }
複製代碼

轉自:http://www.linuxidc.com/Linux/2011-11/48325.htm

Java代碼



android.os.Build
  1. Build.BOARD // 主板
  2. Build.BRAND // android系統定製商
  3. Build.CPU_ABI // cpu指令集
  4. Build.DEVICE // 設備參數
  5. Build.DISPLAY // 顯示屏參數
  6. Build.FINGERPRINT // 硬件名稱
  7. Build.HOST
  8. Build.ID // 修訂版本列表
  9. Build.MANUFACTURER // 硬件製造商
  10. Build.MODEL // 版本
  11. Build.PRODUCT // 手機製造商
  12. Build.TAGS // 描述build的標籤
  13. Build.TIME
  14. Build.TYPE // builder類型
  15. Build.USER
  16. // 運行結果
  17. /*
  18. board: unknown
  19. brand: generic
  20. cpu abi: armeabi
  21. device: generic
  22. display: google_sdk-eng 2.1 ERD79 22607 test-keys
  23. finger print: generic/google_sdk/generic/:2.1/ERD79/22607:eng/test-keys
  24. host: genki.mtv.corp.google.com
  25. id: ERD79
  26. manufacturer: unknown
  27. model: google_sdk
  28. product: google_sdk
  29. tags: test-keys
  30. time: 1261185425000
  31. type: eng
  32. user: android-build
  33. */
  34. Build.BOARD // 主板
  35. Build.BRAND // android系統定製商
  36. Build.CPU_ABI // cpu指令集
  37. Build.DEVICE // 設備參數
  38. Build.DISPLAY // 顯示屏參數
  39. Build.FINGERPRINT // 硬件名稱
  40. Build.HOST
  41. Build.ID // 修訂版本列表
  42. Build.MANUFACTURER // 硬件製造商
  43. Build.MODEL // 版本
  44. Build.PRODUCT // 手機製造商
  45. Build.TAGS // 描述build的標籤
  46. Build.TIME
  47. Build.TYPE // builder類型
  48. Build.USER
  49. // 運行結果
  50. /*
  51. board: unknown
  52. brand: generic
  53. cpu abi: armeabi
  54. device: generic
  55. display: google_sdk-eng 2.1 ERD79 22607 test-keys
  56. finger print: generic/google_sdk/generic/:2.1/ERD79/22607:eng/test-keys
  57. host: genki.mtv.corp.google.com
  58. id: ERD79
  59. manufacturer: unknown
  60. model: google_sdk
  61. product: google_sdk
  62. tags: test-keys
  63. time: 1261185425000
  64. type: eng
  65. user: android-build
  66. */
  67. Build.VERSION
  68. Java代碼
  69. // 當前開發代號
  70. Build.VERSION.CODENAME
  71. // 源碼控製版本號
  72. Build.VERSION.INCREMENTAL
  73. // 版本字符串
  74. Build.VERSION.RELEASE
  75. // 版本號
  76. Build.VERSION.SDK
  77. // 版本號
  78. Build.VERSION.SDK_INT
  79. // 結果
  80. /*
  81. REL
  82. 22607
  83. 2.1
  84. 7
  85. 7
  86. */
  87. // Build.VERSION.SDK_INT可與switch搭配用
  88. switch (Build.VERSION.SDK_INT) {
  89. case Build.VERSION_CODES.BASE: // 1.0
  90. break;
  91. case Build.VERSION_CODES.BASE_1_1: // 1.1
  92. break;
  93. case Build.VERSION_CODES.CUPCAKE: // 1.5
  94. break;
  95. case Build.VERSION_CODES.CUR_DEVELOPMENT: // current dev version
  96. break;
  97. case Build.VERSION_CODES.DONUT: // 1.6
  98. break;
  99. case Build.VERSION_CODES.ECLAIR: // 2.0
  100. break;
  101. case Build.VERSION_CODES.ECLAIR_0_1: // 2.0.1
  102. break;
  103. case Build.VERSION_CODES.ECLAIR_MR1: // 2.1
  104. break;
  105. }
  106. // 當前開發代號
  107. Build.VERSION.CODENAME
  108. // 源碼控製版本號
  109. Build.VERSION.INCREMENTAL
  110. // 版本字符串
  111. Build.VERSION.RELEASE
  112. // 版本號
  113. Build.VERSION.SDK
  114. // 版本號
  115. Build.VERSION.SDK_INT
  116. // 結果
  117. /*
  118. REL
  119. 22607
  120. 2.1
  121. 7
  122. 7
  123. */
  124. // Build.VERSION.SDK_INT可與switch搭配用
  125. switch (Build.VERSION.SDK_INT) {
  126. case Build.VERSION_CODES.BASE: // 1.0
  127. break;
  128. case Build.VERSION_CODES.BASE_1_1: // 1.1
  129. break;
  130. case Build.VERSION_CODES.CUPCAKE: // 1.5
  131. break;
  132. case Build.VERSION_CODES.CUR_DEVELOPMENT: // current dev version
  133. break;
  134. case Build.VERSION_CODES.DONUT: // 1.6
  135. break;
  136. case Build.VERSION_CODES.ECLAIR: // 2.0
  137. break;
  138. case Build.VERSION_CODES.ECLAIR_0_1: // 2.0.1
  139. break;
  140. case Build.VERSION_CODES.ECLAIR_MR1: // 2.1
  141. break;
  142. }
複製代碼

Android SDK 版本

下列表格為2015年6月時執行特定 Android 版本的裝置分布比例, 資料來源為 Android Developers.


Code name
Version number
Initial release date
API level
Security patches[1]
(No codename)[2]1.0September 23, 20081Unsupported
(Internally known as "Petit Four")[2]1.1February 9, 20092Unsupported
Cupcake1.5April 27, 20093Unsupported
Donut[3]1.6September 15, 20094Unsupported
Eclair[4]2.0 – 2.1October 26, 20095 – 7Unsupported
Froyo[5]2.2 – 2.2.3May 20, 20108Unsupported
Gingerbread[6]2.3 – 2.3.7December 6, 20109 – 10Unsupported
Honeycomb[7]3.0 – 3.2.6February 22, 201111 – 13Unsupported
Ice Cream Sandwich[8]4.0 – 4.0.4October 18, 201114 – 15Unsupported
Jelly Bean[9]4.1 – 4.3.1July 9, 201216 – 18Unsupported
KitKat[10]4.4 – 4.4.4October 31, 201319 – 20Unsupported[11]
Lollipop[12]5.0 – 5.1.1November 12, 201421 – 22Supported (except 5.0.x)
Marshmallow[13]6.0 – 6.0.1October 5, 201523Supported
Nougat[14]7.0 – 7.1.2August 22, 201624 – 25Supported
Oreo[15]8.0 – 8.1August 21, 201726 – 27Supported

從表格中的分布比例可以發現, 即使有較新的版本, 執行較舊版本的裝置也不會立即升級或更換.

相容性

要有較多的使用者, 程式就要能執行在多種版本上. 要能執行在多種版本上, 相容性就是一個重要的議題.

Android 專案中通常有幾個 SDK 版本要設定.

minSdkVersion

位在 AndroidManifest.xml 中, 作業系統會拒絕安裝程式在低於 minSdkVersion 的裝置上.

targetSdkVersion

位在 AndroidManifest.xml 中, 程式主要的目標版本. 通常 targetSdkVersion 是最新版的 SDK, 除非當新版的 SDK 釋出時, 還無法確認程式在新版的 SDK 上運作正常, 才會降低 targetSdkVersion 到已確認過的版本上.

compileSdkVersion

依開發工具不同, 位在特定的專案設定檔中, 開發工具用來建置專案的 SDK 版本, 通常是最新版的 SDK.

minSdkVersion 和 compileSdkVersion 之間的差異可能會產生相容性的問題. 舉例來說, 假如程式使用了 minSdkVersion 之後的版本才有的功能, 當程式執行在 minSdkVersion 的裝置上時, 程式就會當掉.

 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-4-20 01:09 , Processed in 0.105275 second(s), 22 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表