我正在使用 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
感谢您提供任何帮助!