如何调试Android的NFC实现?

mib*_*lma 6 android gdb nfc

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

  1. 是否可以用包含调试符号的库替换Galaxy Nexus设备上的库?
  2. 是否可以使用gdb来调试Android设备的C/C++实现?
  3. 是否可以交叉编译Android的NFC实现?
  4. 有没有人尝试过与其他图书馆类似的东西?

更新: 根据设备生根编译Jellybean总体上有一些小错误.事实上,libnfc makefile中有一些非常好的标志,可以在通信时实现大量输出.

但是仍然存在调试问题.要调试libnfc(external/libnfc-nxp),我必须使用最可能是Nfc Manager(packages/apps/Nfc)的库将自己附加到进程.要调试应用程序,我必须设置debuggable标志.如果我重建Nfc Manager,则签名与设备上已安装的签名不匹配,这意味着adb install -r <file>无法使用.adb uninstall com.android.nfc也不起作用.当我尝试安装新的时,使用简单地删除apk的困难方法/system/app会产生错误INSTALL_FAILED_SHARED_USER_INCOMPATIBLE.此时Nfc根本不再工作,我不得不重新刷新股票图像.

任何其他想法如何调试libnfc库?

NFC*_*guy 10

一般来说,答案是肯定的.完整的Android NFC实施是Android开源项目的一部分.您问题的具体部分的答案:

  1. 是的,您需要解锁引导加载程序并根设备以便能够以读/写模式安装系统分区,这样您就可以更换NFC库.
  2. 是的,您应该能够使用gdb进行远程调试.不过,我从未真正做过这件事.
  3. 是的,只需下载Android源代码并编译NFC堆栈的相关部分即可.相关部分位于packages/apps/Nfc(NFC管理器),external/libnfc-nxp(C库),frameworks/base/core/java/android/nfc(Java NFC API)和vendor/nxp(NFC芯片固件).
  4. 是的,请参阅例如如何使用GDBSERVER在Android上调试应用程序?https://www.google.com/search?q=remote+gdb+android.(这个问题也可能是相关的:使用Android模拟器进行远程调试)