Я использую 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
Спасибо за любую помощь, которую вы можете предоставить!