我正在使用NDK编译libusb(两者都来自在https://github.com/monaka/libusb-android提供的预构建的)以及使用他的更改来编译最新的可用(libusb-1.0.8)。它似乎加载并且初始调用“init()”不会返回错误。但是,当我尝试将基本调用放入库中以列出设备时(来自libusb中包含的示例lsusb代码),我遇到了崩溃。使用NDK提供的“arm-eabi-addr2line”和转储提供的地址作为错误,我已经将其跟踪为libusb中的设备列表方法从它找到的设备获得“未知状态”导致调用“usbi_log()”方法,在该方法中发生崩溃。 NDK工具没有给我行号,所以我所有关于错误发生的详细信息。
libusb源代码:http://git.libusb.org/?p=libusb.git;a=summary;js=1
我正在从一个简单的Action中对libusb进行简单的JNI调用,尽管我没有任何理由认为这是问题的一部分。它是一个非常基本的.h(来自javah)文件和.c文件,它复制了提供的“lsubs”示例程序的动作,Action类只做了onLoad()方法的调用。
在模拟器中运行时,我也遇到了崩溃。还有未插入设备(Nexus One)以禁用调试(在应用程序 - >设备上进行开发时也禁用)并使USB总线(理论上)为空(至少是外部物理设备)并且同样崩溃。
设备和模拟器Android版本:2.2
NDK版本:r5b
ADK版本:r10
主机操作系统:OSX
感谢您提供任何帮助!
答案 0 :(得分:0)
如果你在手机上安装了一个ssh守护进程,那么你可以通过端口转发来运行它并运行gdbserver并从PC上的gdb连接到它。
您可能需要首先构建命令行可执行测试,然后再将其连接到您的Java应用程序。