如何调试Android的NFC实现?

时间:2012-08-26 15:50:26

标签: android gdb nfc

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

  1. 是否可以将Galaxy Nexus设备上的库替换为包含调试符号的库?
  2. 是否可以使用gdb调试Android设备的C / C ++实现?
  3. 是否可以交叉编译Android的NFC实现?
  4. 有没有人尝试过与其他图书馆类似的东西?
  5. 更新: Rooting the devicecompiling Jellybean总体上发生了一些小错误。事实上,libnfc makefile中有一些very nice flags,可以在通信时启用大量输出。

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

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

1 个答案:

答案 0 :(得分:10)

总的来说,答案是肯定的。完整的Android NFC实施是Android Open Source Project的一部分。您问题的具体部分的答案:

  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. 是的,请参阅例如How to debug an App on Android with GDBSERVER?https://www.google.com/search?q=remote+gdb+android。 (这个问题也可能是相关的:Remote debugging with Android emulator