Как дать / dev / bus / usb permissions for libusb Android приложений?

Я разрабатываю приложение, которое использует Libusb через JNI. Это приложение в настоящее время нацелено только для укоренения, USB-хозяина Android 3+ машины.

Сценарий выглядит следующим образом:

<java Activity>
       loads <jni_wrapper.so>
               which wraps <my_main_lib.so>
                       that uses <libusb.so>
                               that needs rw access to: /dev/bus/usb/<device>

Все нативные библиотеки .so являются частью инфраструктуры, которую я устанавливаю (в виде корня) / System / lib, Что затем может быть использовано мероприятиями Java, управляемой простыми пользователями.

Это означает, что все USB-сообщение должно быть сделано из родной стороны.

Я получил все, чтобы работать нормально, за исключением одной проблемы - разрешения USB: Разрешения по умолчанию / DEV / шины / USB / записи (0660, UID = root, GID = USB).

Очевидно, что стандартный процесс Java, работающий на родном коде, не соответствует ни одному из вышеперечисленных требований, заставляя меня «CHMOD 666» соответствующей записи / DEV, чтобы получить эту работу.

Это решение не так хорошее, хотя, потому что он не выживает перезагрузку, либо отключение / отторжение устройства (разрешения возвращаются к 0660).

Решение, которое я ищу, нужно:

  • Перезагрузка / перезагрузка
  • быть установлена ​​~ один раз ~ к корню, и не включайте беспокойство пользователя каждый раз, чтобы получить разрешения
  • На всех (/ большинство) машинах Android 3+
  • [не обязательно] дает минимальные полномочия, необходимые

направления, которые я подумал о:

  • смена разрешений в /init.rc или /ueventd.rc -> оба переопределены на каждой перезагрузке
  • монтаж USBFS / Proc / Bus / USB с devmode = 0666 -> выживает восстановление, но не перезагружается
  • , что делает мой процесс присоединиться к группе «USB»? -> Я попробовал android.permission.access_USB, но он не работает / поддерживается ...: /

Любые идеи? : -)

Спасибо!

14
задан Nulldef 14 September 2011 в 11:10
поделиться