支援不同的平台版本

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

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

提示:如要在多個 Android 版本之間提供最佳功能,請使用應用程式的 Android 支援資料庫,以便在較舊版本中使用數個最新平台的 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 推出,某些樣式和行為可能會有所變動。 為了讓應用程式能夠利用這些異動,並確保應用程式符合每位使用者的裝置樣式,請設定 targetSdkVersion 值以符合最新的 Android 版本。

在執行階段檢查系統版本

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">

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