Declaring application requirements 声明应用的需求
-------------------------------------------------------------------------------
有各种各样的设备都是基于Android系统运行的,但是他们提供不相同的特性和性能。为了防止你的应用被安装在一个缺乏你的应用所必须特性的设备上,在你的manifest文件中声明硬件和软件需求来明确的定义你的应用所支持设备的类型参数是非常重要的。大多数的声明仅仅是一些报告信息,系统是不可见的。但是像Google Play这样的其他一些设备就可以读取这些信息,当用户从这些设备上下载应用的时候它就可与为用户提供筛选功能(译者注:筛选出适合用户手机等使用的应用)。例如,如果你的应用运行时需要一个相机,并且是基于Android2.1(API Level7),那么你应该在你的manifest文件中声明这些需求。这样的话,那些没有相机或者基于Android2.1一下系统的设备就不能从Google Play上安装你的应用。
然而,你也可以声明你的应用需要使用一个相机但是并不是必须的。这样,你的应用在运行时必须进行检验来确保该设备是否有相机,如果没有相机或者相机不可用那么就会禁止掉应用中的一些特性(译者注:禁止使用相机的特性,但是应用仍然可以运行,这个和上边所说的声明成"必须"还是不一样的哈)。
以下是你设计开发你的应用时应该考虑的一些设备特性:
Screen size and density屏幕大小和密度
为了通过屏幕的类型来分类设备,Android系统为每一个设备定义了两个特性:屏幕大小(屏幕的物理大小)和屏幕密度(屏幕上像素的物理密度,或者dpi-每英寸的点数)。为了简化所有不同类型的屏幕配置,Android系统把它们分为可选的组别,这样就更容易定位了。屏幕大小:small、normal、large和extra large。
屏幕密度:low desity、medium desity、high desity 和extra high desity。
默认情况下,你的应用是兼容所有屏幕大小和密度的,因为Android系统会对你的UI布局和图像资源做出适当的调整。然而,你应该为某些屏幕尺寸创建出专门的布局,并为某些密度的设备提供专门的图片资源,使用可选的布局资源,并且通过在manifest文件中使用<support-screems>元素明确声明你的应用支持的屏幕大小。
想要了解更多信息,请看Supporting Multiple Screems 文档。
Input configurations输入配置
很多设备提供了不同类型的用户输入途径,比如硬件键盘,轨迹球,或者five-way导航pad。如果你的应用需要一个特别的输入硬件设备,那么你应该在manifest文件中用<uses-configuration>元素声明出来。然而,一个应用需要特殊的输入配置是很少见的。
Device features设备特性
在一个Android系统的设备上可能存在有很多硬件和软件特性,比如照相机、光传感器、蓝牙、某个特定版本的OpenGL或者触摸屏的精度。你不应该假设所有的Android系统的设备某个特性都是可用的(除了标准的Android库),因此你应该在你的应用中使用<uses-feature>元素声明你的应用支持的所有特性。
Platform Version平台版本
不同的Android设备经常运行在不同版本的Android平台上,Android1.6或者Android2.3。每一个连续的版本经常包含了前一个版本中不可用的APIs。为了指明哪一些APIs是可用的,每一个版本的平台都指定一个API Level(例如,Android1.0对应着API Level1,Android2.3对应着API Level9)。如果你使用的APIs是1.0以后的,那么你应该使用<uses-sdk>元素声明出最小级别的API。
为你的应用声明所有的这些需要时非常重要的。因为当你在Google Play上发布了你的应用,Google Play会根据这些声明过滤出每一个设备可以使用的应用程序。这样你的应用就仅仅对那些满足了所有你应用需求的设备可用。
想要了解更多有关Google Play如何基于这些需求来过滤应用,请参看Filter on GooglePlay文档。
转发请表明:大飞_Rflyee:http://blog.csdn.net/rflyee/article/details/14089857