裝置相容性總覽

Android 是專為許多不同裝置而設計,例如手機、 平板電腦和電視市面上的裝置種類繁多 吸引目標對象為了讓應用程式在所有裝置上都能順利運作,應用程式必須滿足以下條件 容許功能變化版本性,並提供可靈活調整的靈活使用者介面 也同樣適用於不同的螢幕設定

為協助裝置相容性,Android 提供動態應用程式架構 您可以在這裡提供特定設定 應用程式資源 檔案,例如適用於不同螢幕大小的不同 XML 版面配置。接著,Android 根據目前的裝置設定載入適用的資源。取代為 注重應用程式設計和其他應用程式資源,您可以 單一應用程式套件 (APK),可為各種類型的使用者體驗進行最佳化調整 以及各式各樣的裝置

不過,您可以視需求指定應用程式的功能需求,並 控管可透過 Google Play 商店安裝應用程式的裝置類型。 本文說明如何控制哪些裝置能存取 以及如何做好準備,確保應用程式能觸及合適的目標對象。

什麼是「相容性」?意思是什麼?

針對 Android 開發作業,有兩種相容性: 裝置相容性應用程式相容性

由於 Android 是一項開放原始碼專案,任何硬體製造商都可以 並打造執行 Android 作業系統的裝置但裝置 「與 Android 相容」前提是它可以正確執行針對 Android 執行環境。Android 裝置的 執行環境是由 Android 相容性計畫。每部裝置都必須通過 Compatibility Test Suite (CTS) 才視為相容。

應用程式開發人員不必擔心裝置 與 Android 相容,因為只有與 Android 相容的裝置包括 Google Play 商店。因此,如果使用者從 Google Play 商店安裝應用程式 使用與 Android 相容的裝置。

不過,您必須考量您的應用程式是否與各種平台相容 可能的裝置設定Android 可以在多種裝置上運作 部分功能可能無法在某些裝置上使用。舉例來說 裝置可能沒有指南針感應器。應用程式的核心功能 需要指南針感應器,因此您的應用程式只能與具備下列特性的裝置相容: 包括該功能

控管應用程式在裝置上的供應情形

Android 支援應用程式可透過平台使用的多項功能 相互整合部分功能是以硬體為基礎的功能,例如指南針感應器;有些是 以軟體為基礎的應用程式,例如應用程式小工具有些則取決於平台版本 並非所有裝置都支援所有功能,因此您可能需要控制應用程式的 根據應用程式的必要功能判斷要在哪些裝置上提供使用。

要盡可能為應用程式擁有最多使用者,請盡可能支援 輕鬆調整裝置設定。在大多數的情況下 方法是在執行階段停用選用功能 提供應用程式 不同設定的替代方案 適合不同螢幕大小的版面配置如有需要,您可以限制應用程式的 供應方式取決於下列條件: 裝置特性:

裝置功能

為了根據裝置功能管理應用程式的適用情形,Android 會定義 功能 ID:任何可能不存在的硬體或軟體功能 適用於所有裝置。比如,指南針感應器的特徵 ID 就是 FEATURE_SENSOR_COMPASS, 應用程式小工具的特徵 ID 是 FEATURE_APP_WIDGETS

必要時,您可以禁止使用者安裝您的應用程式 裝置並未使用 <uses-feature>敬上 顯示在應用程式的 資訊清單檔案

舉例來說,假設應用程式在沒有指南針的裝置上不適合使用 感應器,可以使用以下程式碼,將指南針感應器宣告為必要性 資訊清單標記:

<manifest ... >
    <uses-feature android:name="android.hardware.sensor.compass"
                  android:required="true" />
    ...
</manifest>

Google Play 商店會將應用程式所需的功能 功能判斷您的應用程式是否 與每部裝置相容如果裝置不支援 使用者無法安裝您的應用程式。

不過,如果應用程式的主要功能不需要 裝置功能,請將 required敬上 屬性為 "false",並在執行階段檢查裝置功能。 如果目前的裝置不支援應用程式功能,請優雅降級 相應的應用程式功能舉例來說,您可以查詢特徵 通話服務 hasSystemFeature() 輸入:

Kotlin

if (!packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device doesn't have a compass. Turn off the compass feature.
    disableCompassFeature()
}

Java

PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device doesn't have a compass. Turn off the compass feature.
    disableCompassFeature();
}

瞭解可用來控管可用性的所有篩選器 請參閱 Google Play 商店的 Google Play 篩選器 說明文件。

平台版本

不同裝置可能會搭載不同的 Android 平台版本,例如 例如 Android 12 或 Android 13每個連續平台版本通常會新增 API 這項新功能指出有一組 API 則每個平台版本都會指定 API 級別。 舉例來說,Android 12 是 API 級別 31,Android 13 則是 API 級別 33。

您必須指定 minSdkVersion敬上 和 targetSdkVersionbuild.gradle 檔案中的值:

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"

        // Defines the minimum API level required to run the app.
        minSdkVersion(30)

        // Specifies the API level used to test the app.
        targetSdkVersion(33)
        ...
    }
}

Groovy

android {
    defaultConfig {
        applicationId 'com.example.myapp'

        // Defines the minimum API level required to run the app.
        minSdkVersion 30

        // Specifies the API level used to test the app.
        targetSdkVersion 33
        ...
    }
}

如要進一步瞭解 build.gradle 檔案,請參閱 設定建構

每個連續版本的 Android 都能為建構的應用程式提供相容性 使用舊版平台版本的 API,這樣您的應用程式就能與 並同時使用實際版本的 Android API。

不過,如果應用程式使用在較新平台版本中添加的 API, 不需要這些元件的主要功能,請查看 並在收到 API 級別時妥善降級對應的功能 太低。在本例中,請將 minSdkVersion 設為最低值 那麼您可以比較目前系統的 版本 SDK_INT, 與 Build.VERSION_CODES 對應您要查看的 API 級別,如下所示 範例:

Kotlin

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // Running on something older than API level 11, so disable
    // the drag and drop features that use ClipboardManager APIs.
    disableDragAndDrop()
}

Java

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // Running on something older than API level 11, so disable
    // the drag and drop features that use ClipboardManager APIs.
    disableDragAndDrop();
}

畫面設定

Android 可在各種大小的裝置 (例如手機、平板電腦和電視) 上運作。目的地: 根據螢幕類型分類裝置,Android 定義了兩種裝置的特性 每部裝置:螢幕大小 (螢幕的實際大小) 和螢幕密度 (螢幕上的實際像素密度,稱為 DPI)。為了簡化 Android 會將這些變化版本一般分為不同群組 較容易鎖定:

  • 四種概略大小:小、中、大、特大
  • 數個一般化密度:mdpi (medium)、hdpi (高)、xhdpi (extra) 高)、xxhdpi (超高) 等等

根據預設,應用程式與所有螢幕大小和密度相容。 因為系統會調整 UI 版面配置和圖片資源 。為一般螢幕提供最佳化的點陣圖圖片 密度。

盡可能使用彈性的版面配置,以改善使用者體驗。 其中有大型設定變更的版面配置,例如直向和 橫向,或大至小的視窗大小,請考慮提供替代 可彈性調整設定中的版面配置。這可以 平板電腦、手機和折疊式裝置等板型規格的使用者體驗。這項服務 在多視窗模式下變更視窗大小時,這項功能也相當實用。

如要瞭解如何建立 以及如何在必要時將應用程式限制在特定螢幕大小 閱讀 螢幕相容性 總覽頁面,並查看 大螢幕應用程式 品質指南

基於業務考量控管應用程式的供應情形

除了根據裝置限制應用程式上架外 那麼你可能需要限制應用程式不適用於特定業務 或法律理由對於這類情況,Google Play 商店提供 利用 Play 管理中心的篩選選項,控管應用程式的 供非技術性因素使用,例如使用者語言代碼或無線網路 通訊業者

篩選技術相容性,例如必要的硬體 元件) 一律取決於 APK 或 AAB 中的資訊 檔案。但篩選非技術性原因 (例如地理位置) 語言代碼) 一律會在 Google Play 管理中心

其他資源:

應用程式資源總覽
Android 應用程式結構獨立應用程式的相關資訊 存取應用程式程式碼的相關資源,包括如何提供替代選項 管理特定裝置設定的資源
Google Play 篩選器
瞭解 Google Play 商店可透過哪些方式防止您的 在不同裝置上安裝應用程式。
Android 中的權限
Android 如何使用權限系統限制應用程式存取特定 API 規定,您的應用程式必須徵得使用者同意,才能使用這些 API。