Сбой libusb на устройстве/эмуляторе Android ARM

Я использую NDK для компиляции libusb (оба из готовых, поставляемых по адресу: https://github.com/monaka/libusb-android), а также используя его изменения для компиляции последней доступной версии (libusb-1.0.8). Кажется, он загружается, и первоначальный вызов «init()» не возвращает ошибку. Однако, когда я пытаюсь сделать простой вызов библиотеки для получения списка устройств (из примера кода lsusb, включенного в libusb), я получаю сбой. Используя предоставленную NDK «arm-eabi-addr2line» и адрес, указанный в дампе в качестве ошибки, я обнаружил, что метод списка устройств в libusb получает «неизвестный статус» от устройства, которое он находит. приводит к вызову метода usbi_log(), внутри которого происходит сбой. Инструменты NDK не дают мне номера строк, так что это все, что у меня есть, о том, где возникает ошибка.

Репозиторий исходного кода libusb: http://git.libusb.org/?p=libusb.git;a=summary;js=1

Я делаю простой вызов JNI в libusb из очень простого действия, хотя у меня нет причин думать, что это часть проблемы. Это очень простой файл .h (из javah) и файл .c, который копирует действие предоставленной примерной программы «lsubs», а класс Action ничего не делает, кроме вызова метода onLoad().

Я также получаю сбой при запуске в эмуляторе. Также отключите устройство (Nexus One), чтобы отключить отладку (также отключено в Приложениях-> Разработка на устройстве) и чтобы шина USB (теоретически) была пустой (по крайней мере, от внешних физических устройств) и получил тот же сбой.

Устройство и эмулятор Версия Android: 2.2
Версия NDK: r5b
Версия ADK: r10
Хост-ОС: OSX

Спасибо за любую помощь, которую вы можете предоставить!


person Skywalker5446    schedule 08.04.2011    source источник


Ответы (1)


Если вы установите демон ssh на телефон, вы можете подключиться к нему по ssh с переадресацией портов, запустить gdbserver и подключиться к нему из gdb на ПК.

Вы можете сначала создать исполняемый тест командной строки, прежде чем подключать его к своему java-приложению.

person Chris Stratton    schedule 01.05.2011
comment
Я хочу сделать это на стандартных телефонах / устройствах, без рутирования, которое, как я полагаю, требуется для sshd. Из-за этой задержки я уже перешел к решению gdb, так как моя потребность в любом случае была связана с сетью. Спасибо. - person Skywalker5446; 02.05.2011
comment
рутирование не потребуется, если вы запустите sshd на более высоком, чем обычно, (т.е. непривилегированном) порту, но если вы уже нашли способ запустить gdb, отлично. - person Chris Stratton; 02.05.2011