3

我正在使用 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

我正在从一个非常简单的操作对 libusb 进行简单的 JNI 调用,尽管我没有任何理由认为这是问题的一部分。它是一个非常基本的 .h(来自 javah)文件和 .c 文件,它复制了所提供的“lsubs”示例程序的操作,并且 Action 类除了在 onLoad() 方法中进行调用之外什么都不做。

在模拟器中运行时我也会崩溃。还拔下设备(Nexus One)以禁用调试(也在应用程序->设备上的开发中禁用)并使 USB 总线(理论上)为空(至少是外部物理设备)并获得相同的崩溃。

设备和模拟器 Android 版本:2.2
NDK 版本:r5b
ADK 版本:r10
主机操作系统:OSX

感谢您提供任何帮助!

4

1 回答 1

0

If you install an ssh daemon on the phone, then you can ssh into it with port forwarding and run gdbserver and connect to that from gdb on the pc.

You may want to build a command line executable test first, before hooking it up to your java app.

于 2011-05-01T05:01:31.173 回答