デバイス ターゲティングを使用すると、特定のデバイスに配信する App Bundle の部分をより細かく制御できます。たとえば、サイズの大きなアセットは RAM の多いデバイスにのみ配信したり、デバイスごとに異なるバージョンのアセットを配信したりできます。
ターゲットに設定できるデバイスのプロパティは次のとおりです。
- デバイスのモデル
- デバイス RAM
- システム機能
- システム オン チップ(API レベル 31 以上のデバイスの場合)
必要な手順の概要
デバイス ターゲティングを有効にするには、次の手順が必要です。
- デバイス グループを XML ファイルで定義します。
- バンドルのどの部分をどのデバイス グループに送信するかを指定します。
- [省略可] 構成をローカルでテストします。
- バンドル(XML ファイルを含む)を Google Play にアップロードします。
Android Gradle プラグインのバージョンを確認する
デバイス ターゲティングを使用するには、Android Gradle プラグイン(AGP)のバージョンが 8.10.0-alpha01 以降であることを確認してください。これは Android Studio Meerkat 2 以降にパッケージ化されています。
Android Gradle プラグインでデバイス ターゲティングを有効にする
デバイス ターゲティングは、gradle.properties
ファイルで明示的に有効にする必要があります。
android.experimental.enableDeviceTargetingConfigApi=true
デバイス ターゲティング構成の XML ファイルを作成する
デバイス ターゲティング構成ファイルは、カスタム デバイス グループを定義する XML ファイルです。たとえば、8 GB 以上の RAM を搭載したすべてのデバイスを含む high_ram
というデバイス グループを定義できます。
<config:device-targeting-config
xmlns:config="http://schemas.android.com/apk/config">
<config:device-group name="high_ram">
<config:device-selector ram-min-bytes="8000000000"/>
</config:device-group>
</config:device-targeting-config>
デバイス グループは、最大 5 つのデバイス セレクタで構成されます。デバイス グループに含まれるデバイスは、デバイス グループのデバイス セレクタのいずれかに一致するデバイスです。
デバイス セレクタには、1 つ以上のデバイス プロパティを設定できます。デバイスがセレクタのデバイス プロパティのすべてに一致する場合、そのデバイスが選択されます。
使用可能なデバイスのプロパティ
- device_ram: デバイスの RAM の要件
- min_bytes(包含的): 必要な最小 RAM(バイト単位)。
- max_bytes(排他的): 必要な最大 RAM(バイト単位)。
- included_device_ids: このセレクタに含めるデバイスモデル(グループあたり最大 10,000 個の device_ids)。このプロパティは、デバイスがリスト内のいずれかの device_id と一致する場合に満たされます。
- build_brand: デバイスのメーカー
- build_device: デバイスのモデルコード
- excluded_device_ids: このセレクタで除外するデバイスモデル(グループあたり最大 10,000 個の device_ids)。このプロパティは、デバイスがリスト内のどの device_id とも一致しない場合、満たされます。
- build_brand: デバイスのメーカー
- build_device: デバイスのモデルコード
required_system_features: デバイスがこのセレクタに含まれるために搭載している必要がある機能(グループあたり最大 100 個の機能)。このプロパティを満たすには、デバイスがこのリストにあるすべてのシステム機能を搭載している必要があります。
システム機能リファレンス
- name: システム機能
forbidden_system_features: このセレクタに含まれるために、デバイスが搭載してはいけない機能(グループあたり最大 100 個の機能)。デバイスがこのリスト内にあるシステム機能を搭載している場合、このプロパティを満たしていません。
システム機能リファレンス
- name: システム機能
system-on-chip: このセレクタに含めるシステム オン チップ。このプロパティを満たすには、デバイスにこのリストのいずれかのチップが搭載されている必要があります。システム オン チップは、API レベル 31 以上のデバイスでのみターゲットに設定できます。
- manufacturer: システム オン チップのメーカー
- model: System on chip model
1 つのセレクタに複数のプロパティを含めると、論理 AND が作成されます。次に例を示します。
<config:device-selector ram-min-bytes="7000000000">
<config:included-device-id brand="google" device="flame"/>
</config:device-selector>
この場合、RAM が 7 GB を超えていて、かつ Pixel 4 であるすべてのデバイスに当てはまる条件が作成されます。これは次のように記述することもできます。
OR 条件を使用する場合は、1 つのデバイス グループに個別のセレクタを作成します。次に例を示します。
<config:device-selector ram-min-bytes="7000000000"/>
<config:device-selector>
<config:included-device-id brand="google" device="flame"/>
</config:device-selector>
この場合、RAM が 7 GB を超えているか、または Pixel 4 であるすべてのデバイスに当てはまる条件が作成されます。これは次のように記述することもできます。
以下に、考えられるすべてのデバイス プロパティを示します。
<config:device-targeting-config
xmlns:config="http://schemas.android.com/apk/config">
<config:device-group name="myCustomGroup1">
<config:device-selector ram-min-bytes="8000000000">
<config:included-device-id brand="google" device="redfin"/>
<config:included-device-id brand="google" device="sailfish"/>
<config:included-device-id brand="good-brand"/>
<config:excluded-device-id brand="google" device="caiman"/>
<config:system-on-chip manufacturer="Sinclair" model="ZX80"/>
<config:system-on-chip manufacturer="Commodore" model="C64"/>
</config:device-selector>
<config:device-selector ram-min-bytes="16000000000"/>
</config:device-group>
<config:device-group name="myCustomGroup2">
<config:device-selector ram-min-bytes="4000000000" ram-max-bytes="8000000000">
<config:required-system-feature name="android.hardware.bluetooth"/>
<config:required-system-feature name="android.hardware.location"/>
<config:forbidden-system-feature name="android.hardware.camera"/>
<config:forbidden-system-feature name="mindcontrol.laser"/>
</config:device-selector>
</config:device-group>
</config:device-targeting-config>
デバイスのメーカーとデバイスモデルの公式コード
デバイスのメーカーとモデルコードの正しい形式を見つけるには、Google Play Console のデバイス カタログを使用して、次のいずれかを行います。
下記の例のように、デバイス カタログを使用して個々のデバイスを調べ、メーカーとモデルコードを見つけます(Google Pixel 4a の場合、メーカーは「Google」、モデルコードは「sunfish」となります)。
サポートされているデバイスの CSV をダウンロードし、build_brand と build_device にそれぞれメーカーとモデルコードを使用します。
デバイス ターゲティング構成ファイルをアプリバンドルに含める
メイン モジュールの build.gradle
ファイルに次の行を追加します。
android {
...
bundle {
deviceTargetingConfig = file('device_targeting_config.xml')
deviceGroup {
enableSplit = true // split bundle by #group
defaultGroup = "other" // group used for standalone APKs
}
}
...
}
device_targeting_config.xml
は、メイン モジュールを基準とした構成ファイルのパスです。これにより、構成ファイルがアプリバンドルにパッケージ化されます。
deviceGroup
句により、Bundle から生成された APK がデバイス グループごとに分割されます。
Play Feature Delivery のデバイス ターゲティング
Play Feature Delivery でデバイス ターゲティングを使用するには、条件付き配信のドキュメントをご覧ください。