雖然最新版的 Android 常能為應用程式提供卓越的 API,但仍應繼續支援舊版 Android,直到更多裝置完成更新為止。本課程將說明如何使用最新的 API,同時繼續支援舊版。
使用 Android Studio「New Project」精靈找出搭載各 Android 版本的有效裝置分布情形。這個分布資料是根據造訪 Google Play 商店的裝置數量統計而來。一般來說,我們建議支援約 90% 的有效裝置,同時指定應用程式為最新版本。
提示:如要在多個 Android 版本之間提供最佳功能,請使用應用程式的「Android 支援資料庫」,以便在較舊版本中使用數個最新平台的 API。
指定最小 API 級別和目標 API 級別
AndroidManifest.xml 檔案會描述應用程式的詳細資料,並指出應用程式支援的 Android 版本。具體來說,<uses-sdk>
元素的 minSdkVersion
和 targetSdkVersion
屬性可識別應用程式相容的最低 API 級別,以及應用程式相容性和您設計且已測試過的最高 API 等級。
例如:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... > <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" /> ... </manifest>
隨著新版本的 Android 推出,某些樣式和行為可能會有所變動。
為了讓應用程式能夠充分運用這些異動,並確保應用程式符合每位使用者的裝置樣式,請配合當下可用的最新 Android 版本設定 targetSdkVersion
值。
在執行階段檢查系統版本
Android 會為 Build
常數類別中的每個平台版本提供專屬代碼。請在應用程式中使用這些程式碼來建構條件,確保只有在系統可使用這些 API 時,才會執行需要較高 API 級別的程式碼。
Kotlin
private fun setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { actionBar.setDisplayHomeAsUpEnabled(true) } }
Java
private void setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } }
注意:剖析 XML 資源時,Android 會忽略目前裝置不支援的 XML 屬性。因此,您可以放心地使用新版支援的 XML 屬性,不必擔心這些舊版本會中斷程式。舉例來說,如果您設定了 targetSdkVersion="11"
,您的應用程式就會在 Android 3.0 以上版本中預設納入 ActionBar
。如要將選單項目新增至動作列,您必須在選單資源 XML 中設定 android:showAsAction="ifRoom"
。在跨版本 XML 檔案中執行這項操作可避免發生問題,原因是舊版 Android 會忽略 showAsAction
屬性 (也就是說,您「不需要」在 res/menu-v11/
有獨立版本)。
使用平台樣式和主題
Android 提供使用者體驗主題,能讓應用程式提供作業系統的外觀和風格。這些主題可套用至資訊清單檔案中的應用程式。只要使用這些內建樣式和主題,您的應用程式在發布新版本時自然就會獲得 Android 的最新外觀和風格。
如要讓活動看起來像對話方塊:
<activity android:theme="@android:style/Theme.Dialog">
為了讓活動呈現透明背景:
<activity android:theme="@android:style/Theme.Translucent">
如何套用在 /res/values/styles.xml
中定義的自訂主題:
<activity android:theme="@style/CustomTheme">
如要為整個應用程式 (所有活動) 套用主題,請在 <application>
元素中加入 android:theme
屬性:
<application android:theme="@style/CustomTheme">
如要進一步瞭解如何建立及使用主題,請參閱「樣式和主題」指南。