ADB常用指令及使用场景

adb简介
大家好,我是卖女孩的小火柴~
adb全称Android Debug Bridge(安卓调试桥)点击下载adb , 用作PC端连接到移动端 , 方便日常的开发和调试.
adb功能十分强大 , 本文仅针对EasyClick自动化测试工具 , 列出了一部分常用指令 查看视频讲解
配置环境变量
设置adb变量值
我的电脑 -> 右击属性 -> 高级系统设置 -> 系统变量 -> 新建 -> 变量名 -> 变量值 -> 完成步骤
设置path变量值
选中path -> 编辑 -> 新建 -> %变量名% -> 确定 -> 全部完成
adb常用指令
adb start-server
启动ADB服务
adb kill-server
关闭ADB服务
adb devices
列出所有设备
adb connect 192.168.100.1:5555
connect 表示连接到设备
192.168.100.1:5555 表示设备地址(address)和端口号(dport)adb disconnect
断开所有连接
adb reboot
重启设备
adb reboot recovery
重启设备到Recovery
adb reboot bootloader
也就是常说的BL锁
adb shell wm size
size 表示获取当前设备屏幕的分辨率
adb shell wm size 1080x1920
size 1080x1920 表示设定屏幕分辨率为1080x1920
注意 : 1080x1920中的x,是字母x(艾克斯)adb shell wm size reset
size reset 表示重置当前设备的屏幕分辨率恢复到默认
adb shell wm density
wm density 表示获取当前屏幕密度
adb shell wm density 300
wm density 300 表示设置当前设备屏幕密度为300
adb shell wm density reset
wm density reset 表示重置当前设备的屏幕密度恢复到默认
adb shell
进入shell模式
exit
退出shell模式
su
切换到Root用户
adb -s emulator-5554 shell
-s 表示指定某个设备
emulator-5554 表示设备名称ls
列出当前目录下的所有可见文件及文件夹
ls -a
列出当前目录下的所有文件和文件夹(包括隐藏的文件/文件夹,其中-a表示的意义是all,所有全部)
ls -l dir
列出指定目录的文件/文件夹属性
clear
清空历史记录
cd dir
进入到指定目录
cd ..或者 cd ../../..
返回上一级目录或者多级目录
cd a;cd b;cd c;cd d
同时执行多个命令,用英文分号";"隔开
adb install -g -r .\easyclick.apk
install 表示安装
-g 表示赋予所有权限
-r 表示覆盖安装
.\wechat.apk 表示需要安装的apk路径支持相对和绝对路径adb shell pm list package -3
pm 表示Package Manager(包管理器)
list 表示列表,列出
package 表示包
-3 表示第三方应用(即用户自行安装的应用)
-s 表示系统应用
-3可省,列出设备所有包名adb shell pm path com.gibb.easyclick
pm 表示Package Manager(包管理器)
path 表示安装路径
com.gibb.easyclick 表示包名,此指令的执行结果,即显示出微信安装包所在的位置路径adb shell pm clear com.gibb.easyclick
pm 表示Package Manager(包管理器)
clear 表示清空
com.gibb.easyclick 表示包名,此指令的执行结果,即清空微信所有数据,恢复到第一次安装的状态
此指令等同于清空应用详情界面中的存储(Storage)-数据(Data)adb shell dumpsys window
dumpsys window 表示将当前界面转存成静态文件
adb shell dumpsys window|findStr mCurrentFocus
dumpsys window 表示将当前界面转存成静态文件
findStr mCurrentFocus 表示查找属性
获取当前界面的PackageName(包名)和ActivityName(活动名)adb shell pm uninstall com.gibb.easyclick
pm 表示Package Manager(包管理器)
uninstall 表示反向安装,即卸载
com.gibb.easyclick 表示需要卸载的包名,此指令的执行结果,即卸载微信adb shell pm uninstall --user 0 com.gibb.easyclick
pm 表示Package Manager(包管理器)
uninstall 表示反向安装,即卸载
--user 0 表示管理员权限
com.gibb.easyclick 表示需要卸载的包名
此指令可以卸载大部分系统自带的应用,适用于强迫症,极端完美主义玩家.需要谨慎使用,卸载后尽量不要关机或者重启设备,否则可能会出现无法开机的情况.或者开机时间很长很长(其实就是系统发现缺少了自带应用,努力恢复的一个过程),有变砖的可能性adb shell am force-stop com.gibb.easyclick
am 表示Activity Manager(活动管理器)
force-stop 表示强制停止
com.gibb.easyclick 表示需要强制停止的包名
此指令等同于应用详情界面中的强制停止adb shell monkey -p com.gibb.easyclick 1
monkey 表示压力测试
-p 表示指定包名
com.gibb.easyclick 表示需要测试的包名
1 表示时间,单位毫秒
大部分情况用来启动某个已知包名的应用,参考来源于Stack Overflowadb shell mkdir test
mkdir 表示创建文件夹
test 表示创建新文件夹的名称adb shell touch test.txt
touch 表示创建新文件,替代方案cat >test.txt
test.txt 表示创建新文件的名称adb shell cat test.txt
cat 表示打开文件
test.txt 表示要打开的文件adb shell cat >test.txt
创建一个test.txt的文件,并输入内容,ctrl+d退出编辑,enter结束操作如果test.txt存在,之前的内容会被覆盖
adb shell cat >>test.txt
编辑test.txt文件,追加内容,ctrl+d退出编辑,enter结束操作如果test.txt不存在,会自动创建
ctrl+d
退出编辑模式
adb shell cp /sdcard/1.txt /sdcard/Pictures/1.txt
cp 表示复制
/sdcard/1.txt 表示原路径位置
/sdcard/Pictures/1.txt 表示移动后的路径位置,支持重命名adb shell mv /sdcard/1.txt /sdcard/Pictures/1.txt
mv 表示移动
/sdcard/1.txt 表示原路径位置
/sdcard/Pictures/1.txt 表示移动后的路径位置,支持重命名adb shell rename oldf.txt newf.txt
rename 表示重命名
oldf.txt 表示原名称
newf.txt 表示修改后的名称,重命名adb shell rm test.txt
rm 表示删除文件
test.txt 表示需要删除的文件adb shell rmdir test
rmdir 表示删除文件夹
test 表示需要删除的文件夹
需要注意的是,当文件夹test中包含其他文件或文件夹的时候,会删除失败adb shell rm -r test
rm 表示删除
-r 表示递归到其子目录
test 表示需要删除的文件夹
该方法会删除整个test文件夹,包括其子目录中,请谨慎操作adb shell find -name uiauto*
find 表示查找匹配
-name 表示名称区分大小写
uiauto* 表示匹配规则,其中*表示匹配任意数量的任意字符adb shell find -iname pictures
find 表示查找匹配
-iname 表示不区分大小写
pictures 表示需要查找的名称adb shell find -name [ASP]ictures
find 表示查找匹配
-name 表示名称区分大小写
[ASP]ictures 表示匹配规则,会匹配Aictures和Sictures还有Picturesadb shell input keyevent 3
input 表示输入模式
keyevent 表示模拟按键
3 表示三大金刚中的主页Home,对应KeyCode码表adb shell input keyevent 4
input 表示输入模式
keyevent 表示模拟按键
4 表示三大金刚中的返回Back,对应KeyCode码表adb shell input keyevent 26
input 表示输入模式
keyevent 表示模拟按键
26 表示电源Power,对应KeyCode码表adb shell input keyevent 82
input 表示输入模式
keyevent 表示模拟按键
82 表示三大金刚中的菜单Menu,对应KeyCode码表adb shell input text 1234qwer
input 表示输入模式
text 表示输入字符/字符串
1234qwer 表示需要输入的字符/字符串
注意 : 因为编码的原因,故不支持输入中文adb shell ime扩展一下(对于编码和极端输入有用)
主要关注list和set,enable和disable仅作了解就行
ADB编码问题解决方案
方案参考:查看ADBKeyboard
adb shell am broadcast -a ADB_INPUT_TEXT --es msg '你好世界'
ADBKeyboard解决输入中文的编码问题
adb shell am broadcast -a ADB_CLEAR_TEXT
清空输入的文本
adb shell input tap x y
input 表示输入模式
tap 表示点击
x 表示需要点击的位置横坐标
y 表示需要点击的位置纵坐标adb shell input swipe x1 y1 x2 y2
input 表示输入模式
swipe 表示滑动
x1 表示起始位置的横坐标
y1 表示起始位置的纵坐标
x2 表示终点位置的横坐标
y2 表示重点位置的纵坐标adb shell screencap /sdcard/Pictures/now.png
screencap 表示截图
/sdcard/Pictures/now.png 表示截图保存的位置adb shell ps
ps 表示列出当前所有任务(包括name和pid)
adb shell kill pid
kill 表示杀死进程/服务
pid 表示任务的pid属性adb shell /system/bin/uiautomator dump /sdcard/now.xml
/system/bin/uiautomator 表示执行uiautomator
dump 表示将当前界面转存为静态文件
/sdcard/now.xml 转存位置
/system/bin/目录下为指令集合,亦可简写为adb shell uiautomator dump /sdcard/now.xmladb push .\1.txt /sdcard/1.txt
push 表示将PC端的指定文件推送到移动端
.\1.txt 表示文件在PC端的位置,一般都是用相对路径
/sdcard/1.txt 表示文件推送到移动端保存的位置
多个设备同时在线需要指定设备名称,如adb -s emulator-5554 push .\1.txt /sdcard/1.txtadb pull /sdcard/1.txt .\1.txt
pull 表示拉取移动端文件到PC端
/sdcard/1.txt 表示文件在移动端的位置
.\1.txt 表示拉取到PC端保存的位置
push和pull对应,记忆方法:pull中有两个L,可以联想到汉语中la,相反另外一个则为推送adb remount
remount 表示挂载为可读写
常用于Permission Denied(权限不足)的问题,优先考虑挂载,挂载失败再考虑chmod提权adb shell chmod -R 777 path
chmod 表示提权
-R 表示提权递归到该目录的子目录,注意大写
777 表示权限级别
path 表示需要提权的目录设备代理模式激活方式1
推送设备对应的二进制文件,adb push newagent-x86 /data/local/tmp/agent
cd到tmp,chmod -R 777 agent//提权
执行adb shell /data/local/tmp/agent -mode=runagent -dport=19901,19902,19903 --password=123设备代理模式激活方式2
路径提权,adb remount//remount succeeded
推送二进制文件到system目录 adb push newagent-x86 /system/bin/agent//直接推送会报错,但并不影响激活效果
执行二进制文件 adb shell /system/bin/agent -mode=runagent -dport=19901,19902,19903 --password=123设备代理模式激活方式3
exe程序批量激活
激活结果验证
查询指定端口号19901,19902,19903是否存在通讯 adb shell netstat -ant
Telegram : @Runtime7
QQ : 1446106355