来自 macOS 应用程序 运行 脚本的 adb 屏幕截图

Screenshots with adb from script which is run form macOS application

我正在尝试在 Android-device/emulator 上截取屏幕截图,这应该从 macOS 应用程序中触发。

我已经创建了一个 bash 脚本 - 如果我从终端 运行 它运行良好。

但是,当我从我的 macOS 应用程序 运行 它时,当我尝试 pull 来自设备的图像时出现错误。

ADB=""
DEVICE=""
PATH=""
FILENAME=""

$ADB -s "$DEVICE" shell screencap -p "/sdcard/${FILENAME}"
$ADB -s "$DEVICE" pull "/sdcard/${FILENAME}"

我收到以下错误:

adb: error: cannot create './EBC34F20-4624-4435-806B-15D844F4540C.png': Read-only file system

为什么它与我在终端中 运行 时不同?我已经尝试查看哪个用户正在通过 adb 执行,并且所有用户都返回相同的信息。

我已经从我的 macOS 应用程序中移除了沙盒并加固了 运行time 以避免它的干扰。

如果我在模拟器上更改位置(不是/sdcard)似乎也没关系。

我不知道你设备上的文件系统的实际问题是什么,但我会完全避免使用文件系统,直接将屏幕截图传输到标准输出并通过 adb 传输到你的 Mac.

删除以下两行:

$ADB -s "$DEVICE" shell screencap -p "/sdcard/${FILENAME}"
$ADB -s "$DEVICE" pull "/sdcard/${FILENAME}"

并用这一行替换它们:

$ADB -s "$DEVICE" exec-out screencap -p > ${FILENAME}

没有 adb pull 因此文件系统完全没有问题。

命令取自以下答案: