adb

Posted on By ᵇᵒ

一、Android 手机截屏

Android studio 自带截屏工具

在许多 Android 设备上,可以使用组合键截取屏幕截图:同时按住电源和调低音量键。 此外,还可以使用 Android Studio 截取屏幕截图:

  1. 在连接的设备或模拟器上运行您的应用。如果使用连接的设备,请确保您已启用 USB 调试。
  2. 在 Android Studio 中,依次选择 View > Tool Windows > Logcat 以打开 Logcat。
  3. 从窗口顶部的下拉菜单中选择设备和进程。
  4. 点击窗口左侧的 Screen Capture 图标 。 此时,屏幕截图便会显示在 Screenshot Editor 窗口中。
  5. (可选)更改图片:
    • Recapture:截取新的屏幕截图。
    • Rotate Left:将图片逆时针旋转 90 度。
    • Rotate Right:将图片顺时针旋转 90 度。
    • Frame Screenshot:选择一个设备,以便为屏幕截图加上真实设备的外框效果图。选中 Drop Shadow 和/或 Screen Glare 可以将这些效果添加到您的图片中。
  6. 点击 Save,指定位置和文件名,然后点击 OK。

adb shell screencap

adb shell screencap /sdcard/xx.png && adb pull /sdcard/xx.png && adb shell rm -f /sdcard/xx.png

adb shell screenrecord

adb shell screenrecord /sdcard/xx.mp4
adb pull /sdcard/xx.mp4
adb shell rm -f /sdcard/xx.mp4

screenrecord 命令仅支持 Android 4.4 及以上版本的系统

二、adb exec-out

在用adb pull从设备拉db之类的二进制文件的过程中,程序会自作主张的将\n转换成\r\n,最终导致得到的文件被修改,exec-out的意思是说,保留原汁原味,不要添加剂

# 截取一张图片并保存在当前目录下,其中exec-out命令声明原样输出数据,p参数即指定保存图片为 png 格式
adb exec-out screencap -p > screencap.png
# 录制 Android 设备屏幕,视频时长为15秒,分辨率为 720p,比特率为6Mbps,视频数据保存在 SD 卡的 screenrecord.mp4 文件里
adb shell screenrecord --time-limit 15 --size 1280x720 --bit-rate 6000000 /mnt/sdcard/screenrecord.mp4

三、adb run-as

run-as 可以用某个用户的权限来执行命令,这可以解决没有访问权限的问题,在不带这个参数时执行:

adb push sample.db /data/data/com.sample.foo/databases/sample.db

sample.db就不能被com.sample.foo访问,因为文件的用户和所在的组与com.sample.foo不一致,必须要经过chown修改用户和组后才能访问,而且由于每次app安装后获得的用户名不一致,没法将chown命令的参数批处理化,这是个很重要的缺陷。

带上run-as执行:

adb shell "run-as com.sample.foo sh -c 'cp /sdcard/sample.db /data/data/com.sample.foo/databases/sample.db'"

sample.db就变成com.sample.foo亲生的。如果你没有root权限,执行pull或者push时又提示Permission denied,不妨加上run-as参数看看。