デバイスの適合性の概要

Android は、スマートフォン タブレット、テレビ幅広いデバイスに対応できるため、 アプリの対象ユーザーですアプリがすべてのデバイスで成功するには、以下の要件を満たす必要があります。 機能のばらつきを許容し、適応性に優れたユーザー インターフェースを 画面構成を変更できます。

デバイスの互換性を維持するため、Android には動的アプリ フレームワークが用意されています。 構成固有の値を指定できる アプリリソース(静的) XML レイアウトを画面サイズごとに調整することもできます。Android の場合は、 現在のデバイス構成に基づいて適切なリソースを読み込みます。あり 追加のアプリリソースを検討している場合は、 単一のアプリケーション パッケージ(APK)で、さまざまなプラットフォームでのユーザー エクスペリエンスを最適化 。

ただし、必要に応じてアプリの機能要件を指定し、 Google Play ストアからアプリをインストールできるデバイスの種類を指定できます。 このドキュメントでは、ユーザーのアクセス権を 適切なオーディエンスにリーチするためのアプリの準備について ご説明します

「適合性」とは

Android 開発に関しては、次の 2 種類の互換性があります。 デバイスの互換性アプリの互換性

Android はオープンソース プロジェクトなので、 Android オペレーティング システムを搭載したデバイスをビルドします。しかし、デバイスは 「Android 対応」アプリケーション用に作成されたアプリを適切に実行できる場合のみ、 Android 実行環境。Android 4.0 の 実行環境が定義されている Android 互換性プログラムをご覧ください。各デバイスは互換性テストスイートに合格する必要があります (CTS)が互換性を持つと見なされます。

アプリ デベロッパーは、デバイスが動作しているかどうかを Android 対応。Android 互換のデバイスのみが、 Google Play ストア。そのため、ユーザーが Google Play ストアからアプリをインストールすると、 Android 互換デバイスを使用しています。

ただし、アプリが できます。Android はさまざまなデバイスで動作するため デバイスによっては一部の機能をご利用いただけない場合があります。たとえば、 コンパス センサーが搭載されていないデバイスもあります。アプリのコア機能が コンパス センサーが必要な場合、アプリは 必要があります。

デバイスへのアプリの公開を管理する

Android は、アプリがプラットフォームを通じて利用できるさまざまな機能をサポートしています APIコンパス センサーなど、一部の機能はハードウェア ベースです。一部は アプリ ウィジェットなど、ソフトウェア ベースプラットフォームのバージョンによって異なるものもあります。 すべてのデバイスがすべての機能をサポートしているとは限らないため、アプリの アプリの必須機能に応じて、デバイスに表示するかどうかを選択できます。

アプリのユーザーベースを最大限まで拡大するには、できるだけ多くの 1 つの APK または AAB を使用してできる限り多くのデバイス構成を行うことができます。ほとんどの場合 そのためには、実行時にオプション機能を無効にして、 提供アプリ リソースのさまざまな構成の代替手段が用意されており、 さまざまな画面サイズに 対応できるようになります必要に応じて、アプリのリソースへのアクセスを 以下に基づいて Google Play ストアから特定のデバイスで利用可能に デバイスの特性:

デバイスの機能

デバイスの機能に基づいてアプリの利用可否を管理するために、Android では 機能 ID: 有効ではないハードウェアまたはソフトウェアの機能の 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 でのフィルタ ご覧ください

<ph type="x-smartling-placeholder">

プラットフォームのバージョン

デバイスが異なれば、Android プラットフォームのバージョンも異なります。 たとえば Android 12 や Android 13 などですプラットフォームの後続バージョンごとに API が追加されることが多い 以前のバージョンでは使用できませんでしたどの API セットが バージョンごとに 1 つずつ API レベル。 たとえば、Android 12 は API レベル 31、Android 13 は API レベル 33 です。

必ず minSdkVersion および targetSdkVersion build.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 を引き続きリリースする必要があります。

<ph type="x-smartling-placeholder">

ただし、最新のプラットフォーム バージョンで追加された API をアプリで使用する場合は、 主な機能にそれらが不要な場合は、API レベルを 対応する機能のグレースフル デグラデーションを行い、API レベルが 低すぎます。この場合は、minSdkVersion を最小値に設定します。 主な機能を比較してから、現在のシステムの バージョン、 SDK_INT, コードネーム定数 Build.VERSION_CODES 対応する API レベル 1 つを 例:

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 はこれらのバリアントをグループに一般化して、 ターゲティングしやすい:

  • 4 つの汎用サイズ: Small、normal、large、xlarge
  • 汎用的な密度: mdpi(中)、hdpi(高)、xhdpi(エクストラ (高)、xxhdpi(超超高)、その他

デフォルトでは、アプリはあらゆる画面サイズと画面密度に対応しており、 システムによって UI レイアウトと画像リソースが調整されるため、 自動的に最適化されます。共通画面用に最適化されたビットマップ画像を提供する あります。

可能な限り柔軟なレイアウトを使用して、ユーザー エクスペリエンスを最適化します。 縦向きや横向きなど、構成の大幅な変更に対応したレイアウトがある (横長、横長、大小のウィンドウ サイズに対応) 構成の小さな変更に柔軟に対応できるレイアウト。これにより、 タブレット、スマートフォン、折りたたみ式デバイスなどのフォーム ファクタでのユーザー エクスペリエンス。これは、 マルチ ウィンドウ モードでウィンドウ サイズが変わる場合にも有効です。

異なるリソースに対して代替リソースを作成する方法については、 必要に応じてアプリを特定の画面サイズに制限する方法 読む 画面の互換性 概要を確認し、 大画面のアプリ 品質ガイドラインに違反しています

ビジネス上の理由でアプリを利用できるかどうかを管理する

デバイスに基づいてアプリの利用を制限することに加え、 ビジネスでのアプリの利用を制限する必要が生じる場合があります。 判断できます。このような場合は、Google Play ストアから Google Play Console のフィルタ オプションで、アプリの ユーザーの言語やワイヤレスなど、技術面以外の理由での可用性 使用します。

技術的な互換性(必要なハードウェアなど)のフィルタリング (常に APK または AAB 内に含まれる情報に基づく) 表示されます。ただし、技術的な理由(地域や国など)でフィルタすると、 (常に Google Play Console:

関連ドキュメント:

アプリリソースの概要
Android アプリが個別のアプリとして構成される仕組みに関する情報 (代替リソースを提供する方法など)も参照してください。 リソースを定義できます。
Google Play 上のフィルタ
Google Play ストアで、 アプリが別のデバイスにインストールされないようにできます。
Android での権限
Android が権限システムを使用して特定の API へのアプリのアクセスを制限する仕組み アプリでこれらの API を使用するためにユーザーの同意を必要とするもの。