0

我从官方 android 网站 https://developer.android.com/about/versions/kitkat.html了解到,“ Android 4.4 通过主机卡仿真 (HCE) 引入了对基于 NFC 的安全交易的新平台支持,用于付款,... ”我们不能在低于 Android Kit-Kat 4.4.x 的设备中使用 HCE。

但我想问一下,我们是否可以在版本低于Android Kit-Kat 4.4.x的设备上下载使用/包含 HCE 及其相关类的 Android 应用程序?

我的项目清单文件有android:minSdkVersion="14"android:targetSdkVersion="21"但我的项目清单使用的 HCE SDK 有android:minSdkVersion="19"android:targetSdkVersion="21". 那么我的项目实际上android:minSdkVersion设置为 14 还是 19?

4

2 回答 2

2

我认为主机卡仿真 (HCE) 需要更改驱动程序/较低级别的框架。因此,如果设备支持低于 KitKat (4.4) 的 HCE,这可能是设备制造商投入的特殊内容,类似于仅 Marshmallow (6.0) 具有指纹读取器 API 但三星在其 SDK 中为其设备使用它的 API。

TL;DR:如果没有 Android 框架提供的通用 API,任何此类应用程序都需要实现每个供应商的 NFC HCE SDK,然后仅适用于支持每个供应商 SDK 的设备。

于 2015-10-01T07:45:45.653 回答
1

我可以将使用 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 之前的设备。

于 2015-10-07T05:39:44.463 回答