【问题标题】:libusb crash on Android ARM device/emulatorAndroid ARM 设备/模拟器上的 libusb 崩溃
【发布时间】:2011-04-08 18:22:10
【问题描述】:

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

感谢您提供的任何帮助!

【问题讨论】:

    标签: android java-native-interface arm libusb


    【解决方案1】:

    如果您在手机上安装了 ssh 守护程序,那么您可以通过端口转发 ssh 进入它并运行 gdbserver 并从 PC 上的 gdb 连接到该守护程序。

    您可能希望先构建一个命令行可执行测试,然后再将其连接到您的 java 应用程序。

    【讨论】:

    • 我希望在股票电话/设备上执行此操作,无需生根,我认为这是 sshd 所必需的。由于这个问题,我已经转向了 gdb 解决方案,因为无论如何我的需求都是与网络相关的。谢谢。
    • 如果您在比平常更高的端口(即非特权)上启动 sshd,则不需要 root,但如果您已经找到了运行 gdb 的方法,那就太好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 2016-02-21
    • 1970-01-01
    相关资源
    最近更新 更多