Google开始放出HCE的支持后,掀起了巨大的反响。 摆脱了SWP-SIM对运营商的依赖,摆脱了eSE对手机厂商的依赖,其对于产业生态的影响不言而喻。网上基于HCE的前景和应用讨论的不亦乐乎,但技术层面的资料却乏善可陈。现我们就通过一个具体的实现来揭秘HCE,同时给出一个技术层面的理解。
首先,需要的环境:
一个支持Android 4.4.2 SDK的开发环境:可以是eclipse插件或者ADT工具。可以到google的网站上去下载:http://developer.android.com/sdk/index.html 。 (此处攻略漫天飞,搞不定的同学自己搜)
一个支持HCE的测试手机:目前可以确定使用了NXP PN547作为CLF的NFC手机已经打通了HCE。市面上可见的目前有Sony Xperia Z2 和 Samsung Galaxy S5。本次测试使用Xperia Z2。(CLF芯片不包含在手机发布的资料里,最终确定Z2的CLF芯片还是依靠网上流出的拆机图)
一份参考资料:http://developer.android.com/guide/topics/connectivity/nfc/hce.html 里面写的非常细致,我摘要一下:
1. HCE工作在ISO 7816-4也就是ISO-DEP层面。(想模拟Mifare标签的同学洗洗睡吧)
2.命令的派发是基于系统接管SelectbyName指令,以及HCE服务注册到系统的AID来完成的。HCE的派发高于SE,不支持logic channel,也不支持GP的AID部分匹配。
3.HCE以Android服务的方式启动,通过接口函数响应APDU。可以配置多个AID&#