В настоящее время я переношу коммуникационную библиотеку C++ с Linux на Android с помощью JNI/NDK. Устройство представляет собой USB-детектор для проведения научных измерений. Это просто необработанный HID, который отображается как «/dev/hidraw0».
Мне нужно получить дескриптор файла ('_fileHandle') на устройство, что я делаю через:
_fileHandle = open(_devicePath.c_str(), O_RDONLY | O_NONBLOCK);
где _devicePath — это узел устройства «/dev/hidraw0». К сожалению, у меня возникла проблема с Android (скорее всего, с разрешениями/SELinux), и я получаю следующую ошибку в своем логарифме сразу после попытки выполнить команду open(...):
type=1400 audit(0.0:41): avc: denied { read } for name="hidraw0" dev="tmpfs" ino=229381 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:device:s0 tclass=chr_file permissive=0
«ls -l» в «/dev/hidraw0»:
crw------- 1 root root 229
Как заставить устройство открываться?
Я попытался просто изменить разрешения на узле, и изменения не сохраняются (Android сразу отменяет их).
Спасибо!