<supports-gl-texture>

注意:Google Play 会根据应用程序支持的纹理压缩格式对应用程序进行过滤,以便它们仅安装在能够正确处理其纹理的设备上。您可以使用纹理压缩过滤作为一种基于 GPU 平台定位特定设备类型的方法。

有关 Google Play 如何使用<supports-gl-texture>元素作为过滤依据的重要信息,请阅读Google Play 和纹理压缩过滤部分。

语法
<supports-gl-texture
  android:name="string" />
包含于
<manifest>
描述
声明应用支持的单个 GL 纹理压缩格式。

如果应用可以在设备上安装时提供以该格式压缩的纹理资产,则该应用“支持”GL 纹理压缩格式。

应用在本地提供压缩的资产,从 APK 内部提供,或者可以在运行时从服务器下载它们。

每个<supports-gl-texture>元素都声明一个支持的纹理压缩格式,作为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 平台工具 r3 或更高版本构建,则基于<supports-gl-texture>元素的过滤将针对所有 API 级别激活。

属性
android:name
将应用支持的单个 GL 纹理压缩格式指定为描述符字符串。下表列出了常见的描述符值。
纹理压缩格式描述符 注释
GL_OES_compressed_ETC1_RGB8_texture 爱立信纹理压缩。在 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 纹理压缩。在运行 Adreno GPU 的设备上可用,包括 HTC Nexus One、Droid Incredible、EVO 等。为了获得最广泛的兼容性,设备还可以声明一个具有描述符GL_ATI_texture_compression_atitc<supports-gl-texture>元素。
GL_EXT_texture_compression_latc 亮度阿尔法纹理压缩。
GL_EXT_texture_compression_dxt1 S3 DXT1 纹理压缩。在运行 Nvidia Tegra2 平台的设备上受支持,包括摩托罗拉 Xoom、摩托罗拉 Atrix、Droid Bionic 等。
GL_EXT_texture_compression_s3tc S3 纹理压缩,不特定于 DXT 变体。在运行 Nvidia Tegra2 平台的设备上受支持,包括摩托罗拉 Xoom、摩托罗拉 Atrix、Droid Bionic 等。如果您的应用需要特定的 DXT 变体,请声明该描述符而不是此描述符。
GL_IMG_texture_compression_pvrtc PowerVR 纹理压缩。在运行 PowerVR SGX530/540 GPU 的设备上可用,例如摩托罗拉 DROID 系列;三星 Galaxy S、Nexus S 和 Galaxy Tab 等。
另请参阅

Google Play 和纹理压缩过滤

Google Play 会过滤对用户可见的应用,以便用户只能看到和下载与其设备兼容的应用。它过滤应用的方法之一是通过纹理压缩兼容性,让您能够根据其 GPU 的功能控制应用对各种设备的可用性。

要确定某个应用的纹理压缩兼容性是否与特定用户的设备兼容,Google Play 会比较以下内容:

  • 应用支持的纹理压缩格式,如其清单文件中 <supports-gl-texture> 元素所声明。
  • 设备上的 GPU 支持的纹理压缩格式。设备会将它支持的格式报告为只读系统属性。

每次您将应用上传到 Google Play Console 时,Google Play 都会扫描应用的清单文件,并查找任何 <supports-gl-texture> 元素。它会从这些元素中提取格式描述符,并将它们作为与应用 APK 和应用版本关联的元数据存储在内部。

当用户在 Google Play 上搜索或浏览应用时,服务会将应用支持的纹理压缩格式与用户设备支持的格式进行比较。比较基于格式描述符字符串,并且匹配必须完全一致。

如果应用支持的任何纹理压缩格式也受设备支持,则 Google Play 会允许用户查看该应用并可能下载它。如果设备不支持应用的任何格式,则 Google Play 会过滤该应用,使其无法下载。

如果应用未声明任何 <supports-gl-texture> 元素,则 Google Play 不会根据 GL 纹理压缩格式应用任何过滤。