ADB学习记录

一、安装

本人系统为Ubuntu20.08 LTS,使用命令行语句安装ADB:
首先更新一下软件源:sudo apt-get update
之后安装ADB:sudo apt-get install android-tools-adb
可以使用adb version来检查是否安装成功,如果成功了会返回ADB的安装信息;

二、ADB启动

(1)手机端的准备

本次测试使用的是荣耀手机,操作系统均为Magic OS 8.0(其实我另外试了Harmony系统的两台华为手机,但是没有screenrecord录屏功能,只有screencap截屏功能,可以使用adb shell ls /system/bin/查看有哪些具体功能),首先进入设置-关于手机,点击五次系统版本号,进入开发者模式,之后进入设置-系统与更新-开发人员选项,打开“USB调试”和““仅充电”模式下允许ADB调试”;

(2)电脑端

在终端输入sudo adb start-server,启动成功会返回提示,之后使用数据线连接手机和电脑,手机界面会弹出一个“是否允许USB调试”的提示,点击允许;可以使用adb devices查看连接的设备,另外如果想重启应用可以用sudo adb kill-server杀死这次连接,然后重新开始连接;

三、ADB操作

(1)录制视频

录制视频其实是指手机的录屏,并不是用手机录制别的事物,而只是录制手机的界面,所以无法录入声音,并且也有时间限制,只能录三分钟,如果想要提前终止可以使用CTRL+C。

当电脑连接多个设备时需要指定序列号,可以通过adb devices查看,也可以通过手机的“设备-关于手机-状态信息”查看。

单个设备:adb shell screenrecord /sdcard/test1.mp4
多个设备:adb -s XXXFUT1B26011504 shell screenrecord /sdcard/test1.mp4

注意,在运行录制视频的命令时,一定要让手机界面处于相机应用下,不一定是录像模式,拍照或者夜景等其他模式也都可以,不然会报错“Encoder failed (err=-38)”,但可以在录制过程中打开别的APP。

(2)传输视频到电脑指定文件夹(但是我图片、视频都没有传输成功)

单个设备:adb pull /sdcard/test1.mp4  /home/amax/Documents/File/LG-record-videos/videos
多个设备:adb -s XXKUVB1B08014332 pull /sdcard/test1.mp4  /home/amax/Documents/File/LG-record-videos/videos

四、通过WIFI连接

主要参考:使用adb connect命令连接多个Android设备(WIFI方式)

首先为每个设备指定端口,如:adb -s  XXXFUT1B26011504 tcpip 5555,5555 端口是默认端口,也可以用其他端口,如5556等;
之后输入adb connect 192.XXX.XX.XXX:5555进行连接,注意一定要连接同一wifi或处于同一局域网才可以进行连接,IP地址可以通过手机的“设备-关于手机-状态信息”查看,如果返回connected to 192.XXX.XX.XXX:5555说明连接成功。这时候输入adb devices列表会增加一个设备:

这时候断开数据线设备和电脑也已经通过WiFi进行了连接;
还有一点,如果只通过WiFi进行连接,那指定设备时就不能再使用序列号,应改为IP+端口号,此时录制视频的命令就变成了:adb -s 192.XXX.XX.XXX:5555 shell screenrecord /sdcard/test1.mp4;

五、使用脚本对多个设备进行操作

我的要求是让多个设备同时录制视频,视频名称采用录制开始时间+设备编号,保存在/sdcard文件夹下,所以使用脚本来解决多个操作,脚本内容如下:

#!/bin/bash

# 设备序列号和编号的对应关系字典
declare -A devices

#使用数据线连接
#devices["XXBFUT1B26011504"]=1
#devices["XXKUVB1B08014332"]=2

#使用WiFi连接
devices["192.XXX.XX.XXX:5556"]=1
devices["192.XXX.XX.XXX:5555"]=2

# ...根据实际情况添加更多设备


# 获取当前时间作为时间戳
timestamp=$(date +"%Y%m%d_%H%M%S")

# 录制视频的函数
record_video() {
    local device=$1
    local number=$2
    local video_name="recording_${timestamp}_device_${number}.mp4"

    # 启动 screenrecord 命令录制视频
    echo "开始录制设备 $device 编号 $number"
    adb -s "$device" shell screenrecord "/sdcard/$video_name" &
}

# 存储录制进程的数组
record_procs=()

# 遍历设备字典,对每个设备执行 screenrecord 命令
for device in "${!devices[@]}"; do
    number=${devices[$device]}
    record_video "$device" "$number"
    record_procs+=($!) # 保存屏幕录制进程的PID
done

# 等待所有录制进程完成或接收到中断信号
trap 'kill ${record_procs[@]}; echo "录制已中断"; exit' INT

wait ${record_procs[@]}
echo "所有设备的视频录制完成。"

脚本首先写在txt文件里,之后改后缀为.sh,执行下列语句:

转换文件行结束符:dos2unix  adb-record-video-script.sh
赋予文件执行权限:chmod +x adb-record-video-script.sh
执行脚本:./adb-record-video-script.sh

六、退出

电脑端:输入exit命令;

手机端:进入手机的“设置-系统与更新-开发人员选项”,关闭开发人员选项;

七、其他问题

(1)为什么harmony OS没有录屏功能?

(2)鸿蒙系统的专门的调试工具——Harmony Debug Client

鸿蒙 HDC 命令合集 (awesome-hdc)

八、总结

还有很多问题没有解决,比如传输视频到电脑失败,比如无法录制声音,因此这个方法最终肯定也不会被采纳,但是我也算是学了点东西吧。

  • 28
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值