清单文件——supports-gl-texture

语法(SYNTAX):

<supports-gl-textureAndroid:name="string"/>

被包含于(CONTAINED IN):

<manifest>

说明(DESCRIPTION):

这个元素用于声明一个应用程序所支持的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>是一种信息,这就意味着应用程序在安装时,系统本身并不检查这个元素,以确保与设备的支持相匹配。但是,其他的服务(如Google Play)或应用程序能够检查你的应用程序的<supports-gl-texture>的声明,把它作为与你的应用程序进行交互和处理的一部分。由于这个原因,在你的应用程序中声明所有支持的纹理压缩格式的能力是至关重要的。

通常,应用程序和设备会使用相同的已知的字符串(如下表所示)来声明它们所支持的纹理压缩格式。下表中的格式字符串会根据需要随着时间来增长,并且因为值是字符串,所有应用程序可根据需要自由的声明其他的格式
假设应用程序是建立在SDK平台工具r3或更高的版本上,那么基于<supports-gl-texture>元素的过滤对所有的API级别都是有效的。

属性(ATTRIBUTES):

  • android:name
    这个属性用描述字符串给指定一个由应用程序支持的一个GL纹理压缩格式,通用的描述符的值在下表中被列出。
纹理压缩格式描述符注释
GL_OES_compressed_ETC1_RGB8_texture爱立信纹理压缩。在OpenGL ES2.0中被指定,并且在所有支持OpenGL ES2.0的Android设备上都是有效的。
GL_OES_compressed_paletted_texture通用的调试版纹理压缩。
GL_AMD_compressed_3DC_textureATI 3Dc纹理压缩
GL_AMD_compressed_ATC_textureATI纹理压缩。在运行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_dxt1S3 DXT1纹理压缩。支持运行Nvidia Tegra2平台的设备,包括Motorala Xoom、Motorola Atrix、Droid Bionic等。
GL_EXT_texture_compression_s3tcS3纹理压缩,不特定指DXT变种。在运行Nvidia Tegra2平台的设备上被支持,包括Motorala Xoom、Motorola Atrix、Droid Bionic等。如果应用程序需要一个特定的DXT变种,就要用那个变种的描述符来代替这个描述符。
GL_EXT_texture_compression_pvrtcPowerVR纹理压缩。在运行PowerVr SGX530/540 GPU的设备中有效。如Motorola的DRIOID系列,Samsung Galaxy S,Nexus S,和Galaxy Tab等。

Google Play和纹理压缩过滤

Google Play对应用程序的过滤,对用户来说是可见的,以便用户能够看到并只下载那些跟设备兼容的应用程序。它过滤应用程序的方法之一就是通过纹理压缩的兼容性,它会基于GPU的能力来控制应用程序在各种设备上的可用性。

Google Play会通过以下内容的比较,来判断应用程序的纹理压缩与用户设备的兼容性:

  • 应用程序支持的纹理压缩格式---应用程序会在它的清单文件的元素中声明它所支持的纹理压缩格式;

  • 设备上GPU所支持的纹理压缩格式---设备会把作为它所支持的只读系统属性来报告。
    每次把应用程序发布到Google Play的发布网站上时,Google Play会扫描该应用程序的清单文件,并查看<supports-gl-texture>元素,它从这个元素中提取格式描述符,并把它作为跟应用程序的.apk和版本关联的内部元数据来保存。

如果应用程序所支持的任何一种纹理压缩格式也是设备所支持的,那么Google Play就允许用户看到这个应用程序并可下载它。否则,如果应用程序所支持的格式都不被设备所支持,那么Google Play就会过滤掉这些应用程序,使其不能下载。

如果应用程序没有声明任何<supports-gl-texture>元素,那么Google Play不会使用任何基于纹理压缩格式的过滤。

Copyright© 2020-2022 li-xyz 冀ICP备2022001112号-1