0%

自定义 MacOS 上的 Android 手机截屏命令

背景

因为 UI 验收等需求的存在,我们经常需要将测试机上的屏幕截屏然后发送给其他小伙伴。所以需要快捷高效的方式来获取屏幕截图。

思路

  1. 以华为手机为例,华为系统截屏之后,图片保存在 /sdcard/Pictures/Screenshots/ 目录下,所以每次截屏之后,可以通过 adb pull 的方式把手机截屏导出,然后发送出去
  2. 利用 adb 自带的截屏命令直接截屏,并导出到电脑上,然后发送出去

这里采用方案2。

实现

~/.bash_profile 或者 ~/.zshrc 文件中添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 复制文件到剪贴板 (不限制文件是否是纯文本文件)
file-to-clipboard() {
osascript \
-e 'on run args' \
-e 'set the clipboard to POSIX file (first item of args)' \
-e end \
"$@"
}

# 复制文件到剪贴板
alias ftc='file-to-clipboard'

# 截屏命令
phoneshot() {
copy_to_clipboard=0
if [ $# -eq 0 ]
then
:
else
if [[ $1 == '-c' ]] || [[ $1 == '--copy' ]]; then
copy_to_clipboard=1
elif [[ $1 == '-h' ]] || [[ $1 == '--h' ]]; then
echo 'usage: '
echo 'phoneshot/pshot 将手机截屏并保存为 ~/Downlodas/screenshots.png'
echo 'phoneshot/pshot -c 将手机截屏并保存,然后复制图片到剪贴板'
return
fi
fi

name="screenshot.png"
adb shell screencap -p /sdcard/$name
out_file=~/Downloads/$name
adb pull /sdcard/$name $out_file
adb shell rm /sdcard/$name
echo "save screenshot to $out_file"

if [[ $copy_to_clipboard == 1 ]]; then
ftc $out_file
echo "copy screenshot file to clipboard"
fi
}

# 截屏命令,别名
alias pshot='phoneshot'

使用 source ~/.bash_profile 或者 source ~/.zshrc 重新加载 profile, 让自定义命令生效

使用

  1. phoneshot/pshot
    将手机截屏并保存为 ~/Downlodas/screenshots.png
  2. phoneshot/pshot -c
    将手机截屏并保存,然后复制图片到剪贴板

参考

  1. How to use terminal to copy a file to the clipboard?
  2. Using ADB to capture the screen