【问题标题】:ADB exec-out not working亚行执行不工作
【发布时间】:2017-03-02 19:52:52
【问题描述】:

我正在尝试使用 ADB 命令捕获我的 android 模拟器屏幕,但是当我执行命令时没有任何反应,没有错误也没有图像,这是我正在运行的命令:

adb exec-out screencap -p /sdcard/Pictures/test.png

我尝试使用“adb shell....”,但对我来说太慢了。

我需要一些东西来运行“执行输出”吗?还是我做错了什么?

【问题讨论】:

  • 您可以尝试引用子命令吗? adb "exec-out screencap -p /sdcard/Pictures/test.png",另外,两个版本的返回码是什么?运行命令后,echo $?
  • ADB 版本 1.0.31,我才意识到直接从命令行运行命令,它列出了所有 adb 命令,这有点意味着“exec-out”不存在,我需要安装一些东西吗还有吗?
  • 你弄明白了吗?我有完全相同的问题。 "exec-out" 确实存在,因为 'adb exec-out pwd' 打印 'error: closed' - NOT 'command not found' 或类似的东西。

标签: android adb


【解决方案1】:

你只需要一行:

adb exec-out screencap -p > [path]

例子:

adb exec-out screencap -p > d:\screenshot.png

【讨论】:

  • @Chris623 - 'exec-out' 在更高版本的 Android 中作为命令添加到 adb。我不记得了,但 Android
【解决方案2】:

"adb exec-out" 给出二进制输出。

您可以使用以下命令来保存屏幕

adb shell screencap -p /sdcard/screencap.png

adb pull /sdcard/screencap.png C:\\Users\\<username>\\Pictures\\screencap.png

更多信息:

Read binary stdout data from adb shell?

【讨论】:

  • 正如我在第一篇文章中所说,我确实使用了“adb shell screencap...”,但它太慢了,创建 .png 文件需要大约 500 毫秒,太慢了。
  • @Kyore 你找到解决方案了吗?我也需要这方面的帮助。
  • 不是真的,exec-out 从来没有用过,我在互联网上找不到任何有用的东西,所以我现在放弃了哈哈哈
  • @Kyore 如果你是windows,试试adb exec-out "screencap -p | base64" 然后用base64解码输出。
  • @lan Hu:我收到错误:“base64:未找到”。如果我删除引号:“'base64' 不被识别为内部或外部命令、可运行程序或批处理文件。”
【解决方案3】:

adb exec-out screencap 是一种生成位图格式屏幕截图的安全方法。

您可以使用管道读取该原始数据。前 4 个字节标记宽度的小端整数。接下来的 4 个字节是高度。接下来的 4 个字节表示图像格式。以下字节是 RGBA8888 等图像的原始数据。

注意: 不要使用来自adb shell screencap 的原始数据。 shell 将插入一些换行符,因此数据可能会中断。

参考: https://github.com/aosp-mirror/platform_system_core/blob/46f281edf5e78a51c5c1765460cddcf805e88d48/adb/daemon/framebuffer_service.cpp#L88-L91

【讨论】:

  • 它创建图像文件。但是说无效。
  • @Vivek MVK 这不是标准图像文件。您需要读取原始缓冲区并根据 RGB 数据构建图像。
  • adb shell screencap 可以使用 sed 's|\r\r$||' 删除换行符。
【解决方案4】:

如果您发现adb exec-out screencap 对您的情况来说太慢或有问题,您可以尝试CulebraTester2-public,这会更快。

您甚至可以使用curl 或任何其他 HTTP 客户端来截取这样的屏幕截图

curl -sf -H 'accept: image/png' -H 'Content-Type: application/json' -X GET 'http://localhost:9987/v2/uiDevice/screenshot' > img.png

请参阅take-screenshot 上的完整示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    相关资源
    最近更新 更多