如何调试Android的NFC实现?

如何调试Android的NFC实现?,android,gdb,nfc,Android,Gdb,Nfc,这个问题可以分解成多个较小的问题。 最终的结果是能够在Galaxy Nexus(Android 4.1)设备的C/C++NFC实现中设置断点,使用gdb之类的调试器检查其内部状态 是否可以将Galaxy Nexus设备上的库替换为包含调试符号的库 是否可以使用gdb调试Android设备的C/C++实现 有可能交叉编译Android的NFC实现吗 有没有人尝试过类似的东西,可能是在另一个图书馆 更新:,总体运行良好,有一些小错误。事实上,libnfc makefile中有一些在通信时支持扩展输出

这个问题可以分解成多个较小的问题。 最终的结果是能够在Galaxy Nexus(Android 4.1)设备的C/C++NFC实现中设置断点,使用gdb之类的调试器检查其内部状态

  • 是否可以将Galaxy Nexus设备上的库替换为包含调试符号的库
  • 是否可以使用gdb调试Android设备的C/C++实现
  • 有可能交叉编译Android的NFC实现吗
  • 有没有人尝试过类似的东西,可能是在另一个图书馆
  • 更新:,总体运行良好,有一些小错误。事实上,libnfc makefile中有一些在通信时支持扩展输出

    但是,仍然存在调试问题。要调试libnfc(external/libnfc-nxp),我必须使用最有可能是Nfc管理器(packages/apps/Nfc)的库将自己连接到进程。要调试应用程序,我必须设置。 如果我重建Nfc管理器,则签名与设备上已安装的签名不匹配,这意味着
    adb安装-r
    将无法工作
    adb卸载com.android.nfc
    也不起作用。使用简单地从
    /system/app
    中删除apk的硬方法,在我尝试安装新的apk时会产生错误
    安装失败\u共享\u用户不兼容
    。在这一点上,Nfc根本不起作用了,我不得不重新刷新股票形象


    还有其他关于如何调试libnfc库的想法吗?

    一般来说,答案是肯定的。完整的安卓NFC实现是整个系统的一部分。对问题具体部分的回答:

  • 是的,您需要解锁引导加载程序并为您的设备设置根目录,以便能够以读/写模式装载系统分区,这样您就可以替换NFC库
  • 是的,您应该能够使用gdb进行远程调试。不过,我从来没有这样做过
  • 是的,只需下载Android源代码并编译NFC堆栈的相关部分。相关部分位于
    软件包/应用程序/Nfc
    (Nfc管理器)、
    外部/libnfc-nxp
    (C库)、
    框架/base/core/java/android/Nfc
    (java-Nfc-API)和
    供应商/nxp
    (Nfc芯片固件)
  • 是,请参见,例如,或。(这个问题可能也很相关:)

  • 如果您已经构建了一个完整的Jelly Bean映像,为什么不使用
    adb-reboot-bootloader将其闪存到设备上;fastboot flashall
    ?你可以完全控制设备。是的,这是一个选项。虽然如果有一种干扰较小的方式,将大部分设备交付给最终用户,我还是更喜欢这种方式。毕竟,我只是想密切监视而不是修改。你可以在上找到确切的源代码标记。如果您选择了正确的图像(请在手机上的“设置”->“关于手机”中选择正确的标签),您可以重新创建与手机上当前图像完全相同的图像。这在“理论上”是正确的。让我怀疑的第一件事是xda帖子中的一句话:“这不会制作一个功能齐全的ROM”。经验还告诉我,在这样一个大项目中,可能会有相当大的差异,从专有的google应用程序不属于AOP开始,到我不知道是什么结束。因此,我仍然在寻找一种解决方案,它不涉及100%的替换率,因为我对1%的替换率感兴趣。坦率地说,我不认为你有什么问题。构建一个AOSP映像通常会产生一个功能齐全的ROM。我曾在一个团队工作,该团队在Android中集成了NFC,并实现了NFCAPI,这就是我们的工作方式。如果你真的需要谷歌应用,你可以从下载一个包含它们的zip文件。