注意: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 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 纹理压缩。适用于运行 Adreno GPU 的设备,包括 HTC Nexus One、Droid Incredible、EVO 等。为了最广泛的兼容性,设备还可以声明一个描述符为 GL_ATI_texture_compression_atitc
的<supports-gl-texture>
元素。GL_EXT_texture_compression_latc
亮度 Alpha 纹理压缩。 GL_EXT_texture_compression_dxt1
S3 DXT1 纹理压缩。支持运行 Nvidia Tegra2 平台的设备,包括 Motorala Xoom、Motorola Atrix、Droid Bionic 等。 GL_EXT_texture_compression_s3tc
S3 纹理压缩,不针对特定 DXT 变体。支持运行 Nvidia Tegra2 平台的设备,包括 Motorala Xoom、Motorola Atrix、Droid Bionic 等。如果您的应用需要特定的 DXT 变体,请声明该描述符而不是此描述符。 GL_IMG_texture_compression_pvrtc
PowerVR 纹理压缩。适用于运行 PowerVR SGX530/540 GPU 的设备,例如 Motorola DROID 系列;Samsung Galaxy S、Nexus S 和 Galaxy Tab;以及其他设备。
- 另请参阅
- 应用支持的纹理压缩格式,如其清单中
<supports-gl-texture>
元素所声明。 - 设备上 GPU 支持的纹理压缩格式。设备将其支持的格式作为只读系统属性进行报告。
Google Play 和纹理压缩过滤
Google Play 会过滤用户可见的应用,以便用户只能看到和下载与其设备兼容的应用。它过滤应用的一种方式是根据纹理压缩兼容性,让您可以根据设备的 GPU 功能控制应用在各种设备上的可用性。
为了确定应用与给定用户设备的纹理压缩兼容性,Google Play 会比较以下内容:
每次您将应用上传到 Google Play 管理中心时,Google Play 都会扫描应用的清单文件,查找任何 <supports-gl-texture>
元素。它从这些元素中提取格式描述符,并将其作为与应用 APK 和应用版本关联的元数据内部存储。
当用户在 Google Play 上搜索或浏览应用时,该服务会将应用支持的纹理压缩格式与用户设备支持的格式进行比较。比较基于格式描述符字符串,并且必须完全匹配。
如果设备也支持应用支持的任何纹理压缩格式,Google Play 就会让用户看到该应用并可能下载它。如果设备不支持应用的任何格式,Google Play 就会过滤该应用,使其无法下载。
如果应用未声明任何 <supports-gl-texture>
元素,则 Google Play 不会应用基于 GL 纹理压缩格式的任何过滤。