Корневые привилегии для приложения Android (полное приложение. Не только несколько команд)

Вопрос:

Как выполнить одно полное приложение с корневыми превалированиями (не только несколько команд)?


Сценарий:

Я работаю над корневым устройством Android.

В приложении для Android мне нужно воспроизвести поток H.264, полученный через eth0. Мне нужны привилегии root для открытия (raw open) eth0.

Соответствующий код находится в JNI. Поскольку существует много буферов, которые необходимо обменять между кодом JNI и кодом Java, исполняемый путь (Process.exec(su)) очень неудобен.


Идеальное решение:

Код JNI выполняется в том же контексте процесса, что и код Java. Поэтому предоставление прав root для моего процесса андроида должно решить мою проблему. Но я не уверен, как это сделать.


Я пробовал:

  • Создание приложения как system app/priv-app. Я думал, что это даст доступ к корневому файлу приложения. Но этого не произошло.

Ответ 1

Попробуйте перенести приложение из /system/app в /system/priv-app.

Приложения в /system/priv -app будут иметь доступ к системному уровню.

/система доступна только для чтения без использования root, поэтому она предотвращает удаление приложений из /system/app и/system/priv-app. Приложения, которые являются критическими, помещаются туда, чтобы их нельзя было удалить.

/system/priv-app позволяет приложениям, установленным там, использовать signatureOrSystem и другие привилегированные разрешения.