如何在Mac OS for Android设备上以Java编程方式执行ADB命令

时间:2018-05-31 09:00:48

标签: java android adb appium appium-android

大家好! 我正在尝试在真实设备上使用Appium,java,TestNG for Android应用程序为我的测试框架编写监听器。 我想通过我的测试使用一些ADB命令,例如截屏,录制视频,获取logcat文件,e.t.c。

所以我有: 苹果系统 Android设备小米,安卓版7.0 ADB ANdroid SDK 的java

如果我在终端使用命令:adb exec-out screencap -p> /Users/dmytro/Documents/other/1.png - 屏幕截图已成功保存在相应的文件夹中。其他命令也可以在我的IntelijIDEA的终端和终端中手动输入。

如果我使用Runtime类以编程方式使用相同的命令:

Runtime.getRuntime().exec(adb exec-out screencap -p > /Users/dmytro/Documents/other/1.png"); // Save screenshot to Mac machine

Runtime.getRuntime().exec("adb logcat > /Users/dmytromynziak/Documents/other/log.txt"); //Save logical file

Runtime.getRuntime().exec("db exec-out screencap -p > /sdcard/1.png"); // Save screenshot to scared of android device

它不起作用,截图未保存到Mac机器甚至在Android设备上找不到。

我收到的任何错误,看起来一切正常。从调试模式看截图。screenShot from debug mode

实际上,一些adb命令在WIndows操作系统上工作正常,但在Mac上却没有。

请帮我用java代码执行ADB命令。

1 个答案:

答案 0 :(得分:2)

adb命令正在成功,但未按预期重定向到文件。使用Java Runtime.getRuntime().exec(),重定向的>将无效。可以从此StackOverflow问题中找到对此的说明:Runtime's exec() method is not redirecting the output

adb logcat本身也有-f标志,告诉进程写入文件,如本讨论中所述:Catch LogCat programmatically or export it to file?