Nexus 5 + Android L: запуск профиля <PROCESS_ID> am <TRACE_FILE> из приложения приводит к ошибке app_process

Я пытаюсь выполнить "Начало профиля" в моем приложении для Android, чтобы профилировать другой PID. Из ADB все работает нормально, например: adb shell am profile 5397 start /sdcard/my.app.trace работает. Но попытка выполнить "am" или "pm", или что-либо, что выполняет app_process, выдает следующую ошибку:

/ system / bin / am [8]: app_process: невозможно выполнить: разрешение запрещено

Также не работает эмулятор терминала, такая же ошибка. Если я выполняю его (как на adb, так и на устройстве) с root, возникает ошибка сегментации, как здесь: Ошибка сегментации, выполняющая pm на android. Ответы там не решили мою проблему с доступом к "я" с root, однако я хотел бы решить проблему, чтобы запустить команду без root. Существует проблема с выполнением app_process на устройстве, которую я не могу решить. Я использую укорененный Nexus 5 с Android L Preview. В моем старом укорененном Motorola Milestone команды запускаются на эмуляторе терминала. Вот код для простой попытки выполнить команду "am" в моем приложении, которая должна перечислить параметры этой команды, но выдает ошибку выше.

    try {

        String outputString;
        String command = "am";

        Log.d(TAG, "EXECUTING CMD: " + command);
        // execute command and read output
        process = Runtime.getRuntime().exec(command);

        BufferedReader stdError = new BufferedReader(new InputStreamReader(
                process.getErrorStream()));

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


        while ((outputString = stdInput.readLine()) != null) {
            Log.d(TAG, " EXECUTING CMD Here is the standard output of the command (if any):\n");
            Log.d(TAG, outputString);
        }


        while ((outputString = stdError.readLine()) != null) {
            Log.d(TAG, "EXECUTING CMD Here is the standard error of the command (if any):\n");
            Log.d(TAG, outputString);
        }
        Log.d(TAG, "****** / " + sCmd + " *******");
    } catch (IOException exception) {
        exception.printStackTrace();

    }

0 ответов

Другие вопросы по тегам