这个问题可以分解成多个更小的问题。
最终结果是能够使用 gdb 等调试器在 Galaxy Nexus (Android 4.1) 设备的 C/C++ NFC 实现中设置断点,以检查其内部状态。
- 是否可以将 Galaxy Nexus 设备上的库替换为包含调试符号的库?
- 是否可以使用 gdb 来调试 Android 设备的 C/C++ 实现?
- 是否可以交叉编译Android的NFC实现?
- 有没有人在另一个图书馆尝试类似的事情的例子?
Update: 植根设备 http://forum.xda-developers.com/showthread.php?t=1614827 and 编译 Jellybean http://forum.xda-developers.com/showthread.php?t=1762641总体进展顺利,但有一些小错误。事实上有一些非常漂亮的旗帜 http://omapzoom.org/?p=platform/external/libnfc-nxp.git;a=blob;f=Android.mk;hb=HEAD#l114在 libnfc makefile 中,它在通信时启用大量输出。
但仍然存在调试问题。要调试 libnfc (external/libnfc-nxp),我必须使用最有可能是 Nfc 管理器 (packages/apps/Nfc) 的库将自己附加到进程。要调试应用程序,我必须设置可调试标志 http://developer.android.com/guide/topics/manifest/application-element.html#debug。
如果我重建 Nfc 管理器,签名与设备上已安装的签名不匹配,这意味着adb install -r <file>
行不通的。adb uninstall com.android.nfc
也不行。使用简单的方法删除apk/system/app
创建错误INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
当我尝试安装新的时。此时 Nfc 根本不再工作,我不得不重新刷新库存图像。
关于如何调试 libnfc 库还有其他想法吗?
一般来说,答案是肯定的。完整的 Android NFC 实现是Android 开源项目 http://source.android.com/source/downloading.html。对您问题的具体部分的回答:
- 是的,您需要解锁引导加载程序并 root 设备才能以读/写模式挂载系统分区,以便您可以替换 NFC 库。
- 是的,您应该能够使用 gdb 进行远程调试。不过,我从来没有真正这样做过。
- 是的,只需下载 Android 源代码并编译 NFC 堆栈的相关部分即可。相关部分位于
packages/apps/Nfc
(NFC 管理器),external/libnfc-nxp
(C 库),frameworks/base/core/java/android/nfc
(Java NFC API)和vendor/nxp
(NFC 芯片固件)。
- 是的,参见例如如何使用 GDBSERVER 调试 Android 上的应用程序? https://stackoverflow.com/questions/2056717/how-to-debug-an-app-on-android-with-gdbserver or https://www.google.com/search?q=remote+gdb+android https://www.google.com/search?q=remote+gdb+android。 (这个问题也可能相关:使用Android模拟器进行远程调试 https://stackoverflow.com/questions/1754162/remote-debugging-with-android-emulator)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)