gpt4 book ai didi

android - Android NFC ISODep 支持有多成熟?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:32:51 26 4
gpt4 key购买 nike

我知道这是一个没有明确答案的“讨论”主题,但我真的很想得到一些反馈,了解在为 Android 开发 NFC 应用程序时会发生什么,特别是使用 IsoDep 与使用 APDU 帧的 DESFire 卡进行通信。

  • 我能否期望发送到特定 DESFire 卡的相同 APDU 帧在不同 Android 设备和版本之间做出相同的响应?
  • 我应该至少在哪些 Android 版本和设备上进行测试才能合理覆盖?
  • Android 驱动程序中的错误或回归是否很常见,或者我可以预期这些问题早就被根除了吗?
  • 为了避免太多麻烦,您建议支持的最低 Android 版本是什么?

到目前为止,我的体验出奇地复杂(3 种设备,3 种差异),我真的很想听听其他开发人员的意见。例如:适用于 S3(Android 4.1.2)的相同 APDU 命令不适用于 S4(Android 4.3)(第 3 次握手时出现“错误长度”失败,在此之前一切正常)。这些手机具有不同的 NFC 芯片组,但我没想到 APDU 帧的抽象级别存在差异。

最佳答案

这确实是一个讨论话题,但我仍然认为它与 Android NFC 开发人员相关,因此,我将在这里提供我的经验报告:

  • 我能否期望发送到特定 DESFire 卡的相同 APDU 帧在不同 Android 设备和版本之间做出相同的响应?

是的,但仅适用于满足 ISO/IEC 7816-4 要求但有一些额外限制的 APDU 命令(例如,并非所有设备都支持扩展长度的 APDU,某些设备似乎在使用 case-1 APDU 时存在问题)。

最新版本的 Broadcom NFC 堆栈中也存在一些已知错误(见下文)。

  • 我应该至少在哪些 Android 版本和设备上进行测试才能合理覆盖?

到目前为止,我遇到的最多问题是使用 Broadcom NFC 芯片组的三星设备。尽管与 APDU 无关,尤其是在使用 MIFARE Classic 时,它们的行为与其他采用 Broadcom 芯片组的设备完全不同。例如,S4 在系统级别阻止 MIFARE Classic 标签,因此不允许读取标签 (N)UID。 (无论如何,Broadcom 芯片组无法从 MF Classic 读取数据...)

因此,关于测试,我建议每个 NFC Controller 至少使用一个 Nexus 设备(即一个使用 NXP 芯片组,一个使用 Broadcom 芯片组),对一两个其他手机制造商也是如此。 (对于三星,带有 NXP 芯片组的设备的行为与 Nexus 设备非常相似,所以我猜你 Nexus S/Galaxy Nexus 和例如 S3 在 NFC 读写器模式体验方面可以被视为等同的。)

关于 Android 平台,我会坚持那些您拥有最多用户的平台。 (还有那些卸载率很高的平台。)

  • Android 驱动程序中的错误或回归是否很常见,或者我可以预期这些问题早就被根除了吗?

正如我之前提到的,Broadcom NFC 堆栈存在一些已知问题。特别是当涉及到 MIFARE DESFire 时,存在一个已知问题,即 NFC 堆栈将任意基于 APDU 的命令发送到卡后将其传递给应用程序。因此,这些命令可能会干扰卡和该应用程序之间正在进行的通信(例如,强制使用基于 APDU 的通信模式而不是 native 命令模式、更改应用程序/文件选择等)。看这个bug report还有这个stackoverflow question了解更多详情。

并查看 bug tracker ,肯定还有更多 Unresolved 问题。

  • 您建议支持的最低 Android 版本是什么,以免造成太多麻烦?

关于基于 APDU 的通信(使用 DESFire 或其他卡),API 10 (Android 2.3.3) 和更高版本工作正常。当谈到 NFC API 的可用性(除了简单的 APDU 交换)和漂亮的应用程序设计时,我会坚持使用 Android 4.0.3 及更高版本。但请记住,最新的平台,尤其是 Android 4.3 和 Android 4.4 引入了许多奇怪的行为/错误/(“功能”?)。

为了了解使用 NFC 设备的用户目前拥有哪些 Android 版本,我将分享当前设备安装分布 NFC TagInfo (尽管这可能略有偏差,因为 NFC TagInfo 不适用于普通用户):

  1. 安卓 4.1:36%
  2. 安卓 4.3:21%
  3. 安卓 4.2:19%
  4. 安卓 4.4:18%
  5. Android 4.0.3 - 4.0.4:4%
  6. 安卓 2.3.3 - 2.3.7:2%
  7. 安卓 4.0 - 4.0.2:0%
  8. 安卓 3.2:0%

关于android - Android NFC ISODep 支持有多成熟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20347132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com