我可以将使用 HCE 功能的应用程序下载到 KitKat 之前的设备吗?
是的,如果您的应用程序指定android:minSdkVersion
低于 19 (Android 4.4) 并且您的应用程序不需要HCE 功能(即,如果您不指定
<uses-feature android:name="android.hardware.nfc.hce" android:required="true" />
在应用程序清单中)。
如果我使用的任何库设置更高android:minSdkVersion
怎么办?
在这种情况下,构建您的应用程序应该会失败。清单合并工具应该发现应用程序android:minSdkVersion
和库依赖项android:minSdkVersion
属性之间的不匹配。但是,您可以通过显式覆盖特定库的 SDK 要求来覆盖它,如下所示:
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19"
tools:overrideLibrary="package.name.of.the.library" />
使用它时,您的应用程序将能够以较低的 API 版本为目标。但是,如果库使用不属于设备 API 版本的 API 调用,这些调用将导致错误/异常。
如果我使用的任何库设置android:required
了 HCE 功能的属性怎么办?
在这种情况下,所有android:required
属性都与逻辑OR组合。因此,如果一个清单表明需要 HCE 功能,您的整个应用程序将需要该属性。因此,该应用程序将不适用于 KitKat 之前的设备(例如,Play 商店将仅列出具有 HCE 功能的设备,这实际上限制了 Android 4.4+ 设备的可用性)。
让一个使用 HCE 的应用程序可用于 KitKat 之前的设备是否有意义?
这取决于您的应用程序的功能。HCE 不适用于 KitKat 之前的设备。因此,如果 HCE 是您的应用程序的核心组件,并且如果没有它,应用程序将无法使用,那么让该应用程序可用于 KitKat 之前的设备是没有意义的。
但是,如果应用程序可以切换到 KitKat 之前设备的其他通信机制(例如反向阅读器模式、点对点模式、二维码/条形码),那么android:minSdkVersion
低于 19 可能是有意义的(并标记HCE 功能与 ) 一起作为可选功能,android:required="false"
以使您的应用程序可用于 KitKat 之前的设备。