注: Google Play は、サポート対象のテクスチャ圧縮形式を基準にアプリをフィルタし、テクスチャを適切に処理できるデバイスに限りインストールできるようにしています。テクスチャ圧縮フィルタリングは、GPU プラットフォームに基づいて特定のデバイスタイプをターゲットとする方法として使用できます。

Google Play が <supports-gl-texture> 要素をフィルタリングのベースとして使用する方法については、後述する Google Play とテクスチャ圧縮フィルタリングをご覧ください。

構文:
<supports-gl-texture
  android:name="string" />
上位の要素:
<manifest>
説明:
アプリがサポートする単一の GL テクスチャ圧縮形式を宣言します。

アプリが GL テクスチャ圧縮形式を「サポート」しているということは、アプリがデバイスにインストールされた後、対象の形式で圧縮されているテクスチャ アセットを提供できることを意味します。アプリは、圧縮アセットを .apk の内部からローカルで提供することも、実行時にサーバーからダウンロードすることもできます。

<supports-gl-texture> 要素は、サポート対象のテクスチャ圧縮形式を 1 つだけ宣言し、android:name 属性の値として指定します。アプリが複数のテクスチャ圧縮形式をサポートしている場合は、複数の <supports-gl-texture> 要素を宣言できます。次に例を示します。

<supports-gl-texture android:name="GL_OES_compressed_ETC1_RGB8_texture" />
<supports-gl-texture android:name="GL_OES_compressed_paletted_texture" />

<supports-gl-texture> 要素の宣言は情報提供用であり、Android システム自体は、インストール時に要素を検証せず、デバイス上でのサポートと合致しているか確認しません。しかし、他のサービス(Google Play など)またはアプリは、インストール対象のアプリの処理や操作の一環として、そのアプリの <supports-gl-texture> 宣言をチェックできます。そのため、アプリがサポートできるテクスチャ圧縮形式(下のリストに記載)をすべて宣言することが非常に重要です。

アプリとデバイスは通常、下に記載されているような既知の文字列セットを使用して、サポートする GL テクスチャ圧縮形式を宣言します。圧縮形式の文字列セットは、時間の経過とともに必要に応じて増えていく可能性があります。また、値は文字列であるため、アプリは必要に応じて他の圧縮形式を自由に宣言できます。

アプリが SDK Platform Tools r3 以降でビルドされている場合、<supports-gl-texture> 要素に基づくフィルタリングは、すべての API レベルで有効になります。

属性:
android:name
アプリがサポートする単一の GL テクスチャ圧縮形式を、記述子文字列として指定します。一般的な記述子の値は下表のとおりです。
テクスチャ圧縮形式記述子 コメント
GL_OES_compressed_ETC1_RGB8_texture Ericsson テクスチャ圧縮。OpenGL ES 2.0 内で指定されており、OpenGL ES 2.0 をサポートするすべての Android デバイスで利用できます。
GL_OES_compressed_paletted_texture 汎用パレット テクスチャ圧縮。
GL_AMD_compressed_3DC_texture ATI 3Dc テクスチャ圧縮。
GL_AMD_compressed_ATC_texture ATI テクスチャ圧縮。HTC Nexus One、Droid Incredible、EVO など、Adreno GPU 搭載デバイスで利用できます。最大限の互換性を確保するため、デバイスは、GL_ATI_texture_compression_atitc 記述子を使用して <supports-gl-texture> 要素を宣言していることもあります。
GL_EXT_texture_compression_latc 輝度アルファ テクスチャ圧縮。
GL_EXT_texture_compression_dxt1 S3 DXT1 テクスチャ圧縮。Motorala Xoom、Motorola Atrix、Droid Bionic など、NVIDIA Tegra2 プラットフォーム搭載デバイスでサポートされます。
GL_EXT_texture_compression_s3tc S3 テクスチャ圧縮。DXT バリアント固有の形式ではありません。Motorala Xoom、Motorola Atrix、Droid Bionic など、NVIDIA Tegra2 プラットフォーム搭載デバイスでサポートされます。アプリが特定の DXT バリアントを必要とする場合は、この記述子ではなく、対象の記述子を宣言します。
GL_IMG_texture_compression_pvrtc PowerVR テクスチャ圧縮。Motorola DROID シリーズ、Samsung Galaxy S、Nexus S、Galaxy Tab など、PowerVR SGX530 / 540 GPU 搭載デバイスで利用できます。
関連項目:

Google Play とテクスチャ圧縮フィルタリング

Google Play はユーザーに表示するアプリをフィルタするため、ユーザーは利用中のデバイスと互換性があるアプリだけを表示してダウンロードできます。アプリをフィルタする際、テクスチャ圧縮の互換性も基準の一つとなります。これにより、さまざまなデバイスに対してアプリを利用可能にするかどうかを、GPU の機能に基づいて制御できます。

ユーザーのデバイスがアプリのテクスチャ圧縮に対応しているかどうかを判断する際、Google Play は以下の 2 つを比較します。

  • アプリがサポートしているテクスチャ圧縮形式。アプリは、サポート対象のテクスチャ圧縮形式をマニフェスト内の <supports-gl-texture> 要素で宣言します。
  • デバイスの GPU がサポートしているテクスチャ圧縮形式。デバイスは、サポート対象の形式を読み取り専用システム プロパティとしてレポートします。

デベロッパーが Google Play Console にアプリをアップロードするたびに、Google Play は、アプリのマニフェスト ファイルをスキャンして、<supports-gl-texture> 要素を検索します。その要素から形式記述子を抽出して、それをアプリの .apk とアプリ バージョンに関連付けられたメタデータとして内部に格納します。

ユーザーが Google Play 上でアプリの検索や閲覧を行うと、Google Play は、アプリがサポートしているテクスチャ圧縮形式と、ユーザーのデバイスがサポートしている形式を比較します。この比較は、形式記述子文字列に基づいて行われ、完全一致する必要があります。

アプリがサポートしているテクスチャ圧縮形式のいずれかが、デバイスでもサポートされていた場合、Google Play は、ユーザーに対してアプリの表示やダウンロードを許可します。他方、アプリのサポート対象形式をデバイスがいずれもサポートしていなかった場合、Google Play は、アプリをフィルタしてダウンロードできないようにします。

アプリが <supports-gl-texture> 要素を宣言していなかった場合、Google Play は、GL テクスチャ圧縮形式に基づくフィルタリングを適用しません。