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();
}