API Guide:绪论-设备兼容性

来源:互联网 发布:安徽省癌症数据 编辑:程序博客网 时间:2024/06/06 18:42

注意:本人非专业翻译人员,编写此博客只是为了自学使用,如有疑问,请参考官方文档。


Android设计用于运行在许多不同类型的设备上,从手机到平板电脑和电视机。作为开发人员,各种设备为您的应用程序提供了巨大的潜在受众。为了使您的应用程序在所有这些设备上取得成功,它应该默认一些功能变化,并提供适应不同屏幕配置的灵活的用户界面。


为了方便实现您的目标,Android提供了一个动态应用程序框架,您可以在静态文件中提供配置专用app资源(例如不同的屏幕尺寸的不同XML布局)。然后,Android将根据当前设备配置加载相应的资源。因此,伴随一些预想到您的app设计和一些额外的app资源,您可以发布在各种设备上提供优化的用户体验的单个应用程序包(APK)。


不过,如有需要,您可以指定app的功能要求,并控制哪些类型的装置可以从Google Play商店安装你的app不过,如有需要,您可以指定apps的功能要求,并控制哪些类型的装置可以从Google Play商店安装apps。 本页说明如何控制哪些设备可以访问您的应用,以及如何准备应用程序来确保他们能够接触到正确的受众群体。 有关如何使应用适应不同设备的更多信息,请参阅支持不同的设备。



一、“兼容性”是什么意思?

当您阅读有关Android开发的更多信息时,您可能会在各种情况下遇到“兼容性”一词。 兼容性有两种:设备兼容性和应用程序兼容性。由于Android是一个开源项目,任何硬件制造商都可以构建运行Android操作系统的设备。 然而,只有在该设备可以正确运行为Android执行环境编写的应用程序时,该设备才是“Android兼容”。 Android执行环境的具体细节由Android兼容性程序定义,每个设备必须通过兼容性测试套件(CTS)才能被认为兼容。


作为应用开发者,您不必担心设备是否与Android兼容,因为只有Android兼容的设备才包含在Google Play商店中。 因此,您可以放心从Google Play商店安装您的app的用户一定是正在使用Android兼容设备的用户。


但是,您需要考虑您的应用程序是否与每个潜在的设备配置兼容。 由于Android运行在各种设备配置上,因此某些功能并非在所有设备上都可用。 例如,某些设备可能不包括罗盘传感器。 如果您的应用程序的核心功能需要使用罗盘传感器,那么您的应用程序只能与包含罗盘传感器的设备兼容。



二、控制您的应用程序的设备可用性

通过平台API,Android支持您的应用程序可以充分实现的各种功能。某些功能是基于硬件的(如罗盘传感器),有些功能是基于软件的(例如app widgets),有些功能取决于平台版本。不是每个设备都支持各个功能,因此您可能需要根据应用所需的功能来控制应用的可用性。


为了实现您的应用程序最大的用户群,您应该尽量使用单一的APK来支持尽可能多的设备配置。 在大多数情况下,您可以通过在运行时禁用可选功能,并为不同配置提供app资源(例如不同的屏幕尺寸的不同布局)来实现。 但是,如果需要,您可以根据以下设备特性,通过Google Play商店将应用程式的可用性限制在设备上:

I、设备功能

II、平台版本

III、屏幕配置


一)、设备功能

为了让您根据设备功能来管理应用的可用性,Android定义了所有设备可能无法使用的任何硬件或软件功能的功能ID。 例如,罗盘传感器的功能ID为FEATURE_SENSOR_COMPASS,应用程序小部件的功能ID为FEATURE_APP_WIDGETS。


如果需要,您可以通过在应用程序的清单文件中使用<uses-feature>元素声明该设备,从而避免用户安装app。


例如,如果您的应用在缺少罗盘传感器的设备上无效,则可以根据需要使用以下清单标签声明罗盘传感器:

<manifest ... >    <uses-feature android:name="android.hardware.sensor.compass"                  android:required="true" />    ...</manifest>

Google Play商店将您的应用所需的功能与每个用户设备上的功能进行比较,以确定您的应用是否与每个设备兼容。 如果设备没有提供您的应用所需的所有功能,则用户无法安装您的应用。


但是,如果您的应用程序的主要功能不需要设备功能,则应将required属性设置为“false”,并在运行时检查设备功能。如果应用功能在当前设备上不可用,则会适当地降低相应的应用功能。 例如,您可以通过调用hasSystemFeature()来查询功能是否可用:

PackageManager pm = getPackageManager();if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {    // This device does not have a compass, turn off the compass feature    disableCompassFeature();}


有关所有可以通过Google Play商店来控制用户应用程序的可用性的过滤器信息,请参阅Google Play上的过滤器文档。


注意:某些系统权限隐含地要求设备功能的可用性。 例如,如果您的应用程序请求访问BLUETOOTH的权限,则会隐式地需要FEATURE_BLUETOOTH设备功能。 您可以根据此功能禁用过滤,并通过在<uses-feature>标记中将所需属性设置为“false”,使您的应用程序可用于无蓝牙设备。 有关隐式需要的设备功能的更多信息,请阅读具有要求功能要求的权限。


二)、平台版本

不同的设备可能会运行Android平台的不同版本,例如Android 4.0或Android 4.4。 每个连续的平台版本通常会添加以前版本不存在的新的API。 要指出哪些API可用,每个平台版本都指定一个API级别。 例如,Android 1.0是API级别1,Android 4.4是API级别19。

API级别允许您使用<uses-sdk>清单标签及其minSdkVersion属性来声明应用程序兼容的最低版本。


例如,日历提供程序API已在Android 4.0(API级别14)中添加。 如果您的应用程序在没有这些API的情况下无法运行,则应将API级别14声明为应用程序的最低支持版本,如下所示:

<manifest ... >    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />    ...</manifest>

minSdkVersion属性声明您的应用程序兼容的最低版本,targetSdkVersion属性声明您已经优化了应用程序的最高版本。


每个连续的Android版本提供了使用以前平台版本的API构建的应用程序的兼容性,因此您的应用程序应始终与未来版本的Android兼容,同时使用已记录的Android API。


注意:targetSdkVersion属性不会阻止您的应用程序安装在高于指定值的平台版本上,但重要的是因为它向系统指出应用程序是否应该继承较新版本的行为更改。如果不将targetSdkVersion更新到最新版本,系统会假定您的应用程序在最新版本上运行时需要一些向后兼容的行为。例如,在Android 4.4中的行为更改中,使用AlarmManager API创建的警报默认情况下是不准确的,因此系统可以批量应用程序警报并保留系统电源,但如果您的目标API行为 水平低于“19”,系统将保留以前的API行为。


但是,如果您的应用程序使用在最新平台版本中添加的API,但不需要其主要功能,则应在运行时检查API级别,并在API级别太低时适当降低相应的功能。 在这种情况下,将minSdkVersion设置为应用程序主要功能的最低值,然后将当前系统的版本SDK_INT与Build.VERSION_CODES中与您要检查的API级别相对应的代码名称常量进行比较。 例如:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {    // Running on something older than API level 11, so disable    // the drag/drop features that use ClipboardManager APIs    disableDragAndDrop();}


三)、屏幕控制

Android在各种尺寸的设备上运行,从手机到平板电脑和电视。 为了按照屏幕类型对设备进行分类,Android为每个设备定义了两个特征:屏幕尺寸(屏幕的物理尺寸)和屏幕密度(屏幕上像素的物理密度,称为DPI)。 为了简化不同的配置,Android将这些变体概括为使它们更容易定位的组:

I、四种广义尺寸:小(small),正常(normal),大(large),超大(xlarge)。

II、和几个广义密度:mdpi(中),hdpi(hdpi),xhdpi(extra high),xxhdpi(extra-extra high)等。


默认情况下,您的应用程序与所有屏幕尺寸和密度兼容,因为系统会根据需要对每个屏幕进行适当的UI布局和图像资源调整。 但是,您应该通过为不同的屏幕尺寸添加专门的布局,并为通用的屏幕密度优化位图图像,以优化每个屏幕配置的用户体验。


有关如何为不同的屏幕创建替代资源的信息,以及如何在必要时将应用限制为某些屏幕尺寸,请阅读支持不同的屏幕。



三、控制你的app商业运行可能性

除了根据设备特性限制应用的可用性,您可能需要限制您的应用程序的可用性,以实现业务或法律原因。 例如,显示伦敦地铁列车时间表的应用程序不太可能对英国以外的用户有用。 对于这种情况,Google Play商店在开发者控制台中提供过滤选项,可让您以非技术性原因(如用户的区域设置或无线运营商)来控制应用的可用性。


技术兼容性的过滤(如所需的硬件组件)始终基于APK文件中包含的信息。 但是,由于非技术原因(如地理位置)的过滤总是在Google Play开发者控制台中处理。

0 0
原创粉丝点击