Как открыть / dev / diag с правами суперпользователя? - PullRequest
1 голос
/ 19 марта 2019

Я разрабатываю приложение для One Plus 6. Это приложение использует общую библиотеку (lib.so) для выполнения некоторой задачи. Для этого нужно сначала открыть dev / diag, а затем отправить несколько команд через код. Ниже приведен код для открытия dev / diag:

fd = open("/dev/diag", O_RDWR|O_LARGEFILE|O_NONBLOCK);
if (fd < 0) {
    perror("open diag dev");
    return -8002;
}

Я могу построить исполняемый файл с include $(BUILD_EXECUTABLE), написанным на Android.mk и с командой ndk-build. Я могу запустить открытый dev / diag с размещением исполняемого файла в / system папке Android.

Сбой в том, чтобы сделать то же самое с приложением для Android. Я пробовал следующее:

  • Rooted the One Plus 6
  • Звоните Runtime.getRuntime().exec("su") в MainActivity::onCreate.
  • Дайте <uses-permission android:name="android.permission.ACCESS_SUPERUSER"/> в манифесте.
  • Затем вызовите требуемую функцию jni.

Подскажите, пожалуйста, как мне разрешить доступ su для функции, которая открывает мне dev / diag?

Я также пытался сделать то же самое с запуском исполняемых команд с использованием исполняемого файла ndk-build в / system, например

для чтения:

    // Run the command
    Process process = Runtime.getRuntime().exec("su -c /system/lib get key");

    BufferedReader bufferedReader = new BufferedReader(
            new InputStreamReader(process.getInputStream()));

    // Grab the results
    StringBuilder log = new StringBuilder();
    String line;
    while ((line = bufferedReader.readLine()) != null) {
        log.append(line).append("\n");
    }

    String allLogs = log.toString();

Для ЗАПИСИ:

    Process suProcess = Runtime.getRuntime().exec("su");
    DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());

    os.writeBytes("/system/lib set key " + value);
    // Close the terminal
    os.writeBytes("exit\n");

    os.flush();

и работает нормально. Тем не менее мне интересно, как сделать то же самое с общей библиотекой. Любая помощь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...