NFC学习—— code编译和code结构

原文地址::http://blog.csdn.net/nxh_love/article/details/8721596


相关文章

1、NFC学习——NfcService开机自启动----http://blog.csdn.net/nxh_love/article/details/8721018

2、NFC学习——NfcService 启动过程分析----http://blog.csdn.net/nxh_love/article/details/8725466

3、 NFC学习——NFC Enable 过程分析(一)----http://blog.csdn.net/nxh_love/article/details/8771200

4、NFC学习——NFC Enable 过程分析(二)----http://blog.csdn.net/nxh_love/article/details/8776049

5、NFC学习——NFC Enable 过程分析(三)----http://blog.csdn.net/nxh_love/article/details/8776152

6、NFC 基础----http://blog.csdn.net/nxh_love/article/details/8808455



  对于NFC代码编译,目前为止,我见过两家不同方案商的书写方式,都是在device下的XXXX.mk文件中书写,XXXX不同的方案商不同的产品名称不同。下面具体来看:

方式A:

[html]  view plain copy
  1. PRODUCT_COPY_FILES += \  
  2. frameworks/native/data/etc/android.hardware.nfc.xml:system/etc/permissions/android.hardware.nfc.xml  
[html]  view plain copy
  1. # NFC packages  
  2. PRODUCT_PACKAGES += \  
  3.                 libnfc \  
  4.                 libnfc_jni \  
  5.                 Nfc \  
  6.                 Tag  

方式B:

[html]  view plain copy
  1. #NXP NFC   
  2. PRODUCT_COPY_FILES += \  
  3. frameworks/native/data/etc/android.hardware.nfc.xml:system/etc/permissions/android.hardware.nfc.xml  
[html]  view plain copy
  1. PRODUCT_PACKAGES += \  
  2.         nfc.XXXX \  
  3.         libnfc \  
  4.         libnfc_jni \  
  5.         Nfc \  
  6.         Tag   

       对比这两种方式,可以很明显发现其中的不同点nfc.XXXX,下面就两者的不同之处在分析:

       nfc.XXXX 是nfc_hw.c 编译生成的nfc.XXXX.so包,在out/目录下。方式A中并没有把nfc.XXXX放进去,它放在modules.mk中编译。nfc_hw.c不同的方案也具体放在不同的位置。总之,它的目的是生成nfc.XXXX.so以供调用。

         除了上述之外的东西,还需要在init.rc中配置:

[html]  view plain copy
  1. # NFC  
  2.     setprop ro.nfc.port "I2C"  
         至此,NFC编译部分都配置完毕了。

         通过以上的分析,NFC 在android 中的code 结构都差不多出来了,下面分析下:  

 客户端:android提供了两个API包给apk,分别是android.nfc.techandroid.nfc,实现了NFC的应用接口,代码路径frameworks/base/core/java/android/nfc/techframeworks/base/core/java/android/nfc

 服务端:packages/apps/Nfc是一个类似电话本的应用,这个程序在启动后自动运行,并一直运行,作为NFC的服务进程存在,是NFC的核心。

在这个程序代码中,有个JNI库,供NfcService调用,代码路径是packages/apps/Nfc/jni/.编译文件中,还有个Tag部分,代码路径是packages/apps/Tag.

  库文件:代码路径是external/libnfc-nxp,C编写的库文件,有两个库,分别是libnfc.solibnfc_ndef.solibnfc.so是一个主要的库,实现了NFC stack的大部分功能,主要提供NFC的服务进程调用。libnfc_ndef是一个很小的库,主要是实现NDEF消息的解析,供framework调用

    nfc_hw.c:这个文件的具体路径不确定。

    pn544.c:这个文件是具体nfc芯片的驱动,一般都是drivers下。


由于本人初学,能力有限,有错误的地方欢迎指出。

参考文章:

NFC framework introduce(一)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值