“adb shell date > date.txt”命令执行在 Mac 中使用 Process exec 不起作用

Posted

技术标签:

【中文标题】“adb shell date > date.txt”命令执行在 Mac 中使用 Process exec 不起作用【英文标题】:"adb shell date > date.txt" command execution not working in Mac using Process exec 【发布时间】:2018-10-14 12:44:56 【问题描述】:

我有一个用 java 编写的自动化脚本。这是代码示例。

 String command = "adb shell date > date.txt";
 Process process = Runtime.getRuntime().exec(command);

在 windows 中执行代码时,它工作正常,但是当我在 mac 中运行它时,它无法正常工作。 后来我发现,在 Windows 中,这个命令执行是在我的本地 PC 项目目录中创建文件。但是在 Mac 的情况下,它在尝试在设备目录中创建文件并显示错误时失败。虽然从 Mac 终端它工作正常。

我的问题是为什么不能在我的 mac 机器上工作,为什么文件没有在我的本地 PC 中创建?

【问题讨论】:

您是否将任何设备与您的 PC 连接?并确保“adb devices”在终端中显示设备 我可以认为这是 android 调试桥吗?并且您已经在 Windows 系统和 Mac 上都安装了它? 是的。这是正确的。使用终端也可以正常工作 您确定可以从 JVM 进程创建文件(权限问题)吗?你得到的错误是什么?它是链接到adb shell date 还是echo foobar > test.txt 做同样的事情。能否请您尝试更具体一点,这太宽泛了,有很多可能性。 是的,这是我发现问题时首先检查的。现在主要问题是这个命令试图在设备目录中创建文件并最终失败。 【参考方案1】:

Java Runtime 环境不一定会采用与您使用 macOS 终端时相同的环境变量、命令路径和别名。

您可以尝试在终端中输入which adb 并查看返回的路径(如果有)。如果您确实获得了明确的路径,请尝试从 Java 执行该完整路径,而不仅仅是 adb

【讨论】:

试过但没用。我的问题不在于 adb 路径,它基本上是此命令尝试在设备中创建文件时的问题。为什么文件没有在我的本地 PC 而不是设备中创建?

以上是关于“adb shell date > date.txt”命令执行在 Mac 中使用 Process exec 不起作用的主要内容,如果未能解决你的问题,请参考以下文章