我尝试在我的 Android 应用程序中执行“am profile start”来分析另一个 PID。从亚行一切正常,例如: adb shell am profile 5397 start /sdcard/my.app.trace 工作。但尝试执行“am”或“pm”,或任何执行 app_process 的操作都会出现以下错误:
/system/bin/am[8]:app_process:无法执行:权限被拒绝
它也不适用于终端仿真器,同样的错误。如果我使用 root 执行它(无论是在 adb 上还是在设备上),就会出现像这里这样的分段错误:Segmentation Fault execution pm on android。那里的答案并没有解决我使用 root 访问“am”的问题,但是我想解决这个问题以在没有 root 的情况下运行命令。在我无法解决的设备上执行 app_process 时出现问题。我正在使用带有 Android L 预览版的 Nexus 5。使用我老的摩托罗拉里程碑,命令在终端仿真器上运行。这是仅尝试在我的应用程序中执行“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();
}