支援不同的平台版本

雖然最新版的 Android 常能為應用程式提供卓越的 API,但仍應繼續支援舊版 Android,直到更多裝置完成更新為止。本課程將說明如何使用最新的 API,同時繼續支援舊版。

使用 Android Studio「New Project」精靈找出搭載各 Android 版本的有效裝置分布情形。這個分布資料是根據造訪 Google Play 商店的裝置數量統計而來。一般來說,我們建議支援約 90% 的有效裝置,同時指定應用程式為最新版本。

提示:如要在多個 Android 版本之間提供最佳功能,請使用應用程式的「Android 支援資料庫」,以便在較舊版本中使用數個最新平台的 API。

指定最小 API 級別和目標 API 級別

AndroidManifest.xml 檔案會描述應用程式的詳細資料,並指出應用程式支援的 Android 版本。具體來說,<uses-sdk> 元素的 minSdkVersiontargetSdkVersion 屬性可識別應用程式相容的最低 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">

如要進一步瞭解如何建立及使用主題,請參閱「樣式和主題」指南。