AndroidManifest.xml文件詳解(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_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平臺的設備,包括Motorala Xoom、Motorola Atrix、Droid Bionic等。
GL_EXT_texture_compression_s3tc S3紋理壓縮,不特定指DXT變種。在運行Nvidia Tegra2平臺的設備上被支持,包括Motorala Xoom、Motorola Atrix、Droid Bionic等。如果應用程序需要一個特定的DXT變種,就要用那個變種的描述符來代替這個描述符。
GL_EXT_texture_compression_pvrtc PowerVR紋理壓縮。在運行PowerVr SGX530/540 GPU的設備中有效。如Motorola的DRIOID系列,Samsung Galaxy S,Nexus S,和Galaxy Tab等。

Google Play和紋理壓縮過濾

Google Play對應用程序的過濾,對用戶來說是可見的,以便用戶能夠看到並隻下載那些跟設備兼容的應用程序。它過濾應用程序的方法之一就是通過紋理壓縮的兼容性,它會基於GPU的能力來控制應用程序在各種設備上的可用性。

Google Play會通過以下內容的比較,來判斷應用程序的紋理壓縮與用戶設備的兼容性:

1.  應用程序支持的紋理壓縮格式—應用程序會在它的清單文件的<supports-gl-texture>元素中聲明它所支持的紋理壓縮格式;

2.  設備上GPU所支持的紋理壓縮格式—設備會把作為它所支持的隻讀系統屬性來報告。

每次把應用程序發佈到Google Play的發佈網站上時,Google Play會掃描該應用程序的清單文件,並查看<supports-gl-texture>元素,它從這個元素中提取格式描述符,並把它作為跟應用程序的.apk和版本關聯的內部元數據來保存。

如果應用程序所支持的任何一種紋理壓縮格式也是設備所支持的,那麼Google Play就允許用戶看到這個應用程序並可下載它。否則,如果應用程序所支持的格式都不被設備所支持,那麼Google Play就會過濾掉這些應用程序,使其不能下載。

如果應用程序沒有聲明任何<supports-gl-texture>元素,那麼Google Play不會使用任何基於紋理壓縮格式的過濾。

 

摘自 FireOfStar的專欄

 

發佈留言