adb下载安装及使⽤
adb介绍:
Android Debug Bridge(安卓调试桥) tools。它就是⼀个命令⾏窗⼝,⽤于通过电脑端与模拟器或者是设备之间的交互。
安卓下载ADB是⼀个C/S架构的应⽤程序,由三部分组成:
运⾏在pc端的adb client:
命令⾏程序”adb”⽤于从shell或脚本中运⾏adb命令。⾸先,“adb”程序尝试定位主机上的ADB服务器,如果不到ADB服务
器,“adb”程序⾃动启动⼀个ADB服务器。接下来,当设备的adbd和pc端的adb server建⽴连接后,adb client就可以向ADB servcer 发送服务请求;
运⾏在pc端的adb server:
ADB Server是运⾏在主机上的⼀个后台进程。它的作⽤在于检测USB端⼝感知设备的连接和拔除,以及
模拟器实例的启动或停⽌,ADB Server还需要将adb client的请求通过usb或者tcp的⽅式发送到对应的adbd上;
运⾏在设备端的常驻进程adb demon (adbd):
程序“adbd”作为⼀个后台进程在Android设备或模拟器系统中运⾏。它的作⽤是连接ADB服务器,并且为运⾏在主机上的客户端提供⼀些服务。
卸载apk:adb shell pm uninstall -k “packagename”
“packagename”:表⽰应⽤的包名,以下相同;
-k 参数可选,表⽰卸载应⽤但保留数据和缓存⽬录。
⽰例卸载 ⼿机淘宝:adb uninstall com.taobao.taobao
清除应⽤数据与缓存命令:adb shell pm clear “packagename”
相当于在设置⾥的应⽤信息界⾯点击「清除缓存」和「清除数据」。
⽰例:adb shell pm clear com.taobao.taobao 表⽰清除 ⼿机淘宝数据和缓存。
Android四⼤组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver⼴播接收器,具体不做多讲,常⽤的有以下:
查看前台 Activity命令:adb shell dumpsys activity activities | findstr “packagename”
查看正在运⾏的 Services命令:adb shell dumpsys activity services “packagename” 其中参数不是必须的,指定“packagename” 表⽰查看与某个包名相关的 Services,不指定表⽰查看所有 Services。
查看应⽤详细信息命令:adb shell dumpsys package “packagename”
调起 Activity命令格式:adb shell am start [options]
例如:adb shell am start -t.mm/.ui.LauncherUI表⽰调起主界⾯
调起 Service命令格式:adb shell am startservice [options]
例如:adb shell am startservice -n
强制停⽌应⽤命令:adb shell am force-stop “packagename”
例如强制停⽌淘宝:adb shell am force-stop com.taobao.taobao
模拟按键指令:adb shell input keyevent keycode 不同的 keycode有不同的功能:
keycode含义
3HOME 键
4返回键
5打开拨号应⽤
6挂断电话
26电源键
27拍照(需要在相机应⽤⾥)
61Tab键
keycode含义
64打开浏览器
67退格键
80拍照对焦键
82菜单键
85播放/暂停
86停⽌播放
92向上翻页键
93向下翻页键
111ESC键
112删除键
122移动光标到⾏⾸或列表顶部
123移动光标到⾏末或列表底部
124插⼊键
164静⾳
176打开系统设置
207打开联系⼈
208打开⽇历
209打开⾳乐
220降低屏幕亮度
221提⾼屏幕亮度
223系统休眠
224点亮屏幕
224点亮屏幕
224点亮屏幕
231打开语⾳助⼿
276如果没有 wakelock 则让系统休眠
滑动解锁:如果锁屏没有密码,是通过滑动⼿势解锁,那么可以通过 input swipe 来解锁。
命令:adb shell input swipe 300 1000 300 500
(其中参数 300 1000 300 500 分别表⽰起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标。)
点击内容
adb shell input tap
该命令是⽤于向设备发送⼀个点击操作的指令,参数是 坐标
adbshell input tap 100 100
输⼊⽂本:在焦点处于某⽂本框时,可以通过 input 命令来输⼊⽂本。
命令:adb shell input text *** (***即为输⼊内容)
打印⽇志:
Android 的⽇志分为如下⼏个优先级(priority):
V —— Verbose(最低,输出得最多)
D —— Debug I —— Info
W —— Warning
E —— Error
F—— Fatal
S —— Silent(最⾼,啥也不输出)
按某级别过滤⽇志则会将该级别及以上的⽇志输出。
⽐如,命令:adb logcat *:W 会将 Warning、Error、Fatal 和 Silent ⽇志输出。
(注: 在 macOS 下需要给 :W 这样以 作为 tag 的参数加双引号,如 adb logcat “:W”,不然会报错 no matches found: :W。)
adb logcat打印当前设备上所有⽇志
adb logcat *:W过滤打印严重级别W及以上的⽇志
adb logcat l findstr ***> F:\把仅含***的⽇志保存到F盘的⽂件中
adb logcat -c清除屏幕上的⽇志记录adb logcat -c && adb logcat -s ActivityManager l grep "Displayed”客户端程序启动时间获取⽇志
adb logcat > F:\打印当前设备上所有⽇志保存到F盘的⽂件中
adb logcat l findstr ***打印过滤仅含***的⽇志
adb logcat l findstr ***> F:\把仅含***的⽇志保存到F盘的⽂件中
按 tag 和级别过滤⽇志:命令:adb logcat ActivityManager:I MyApp:D *:S
表⽰输出 tag ActivityManager 的 Info 以上级别⽇志,输出 tag MyApp 的 Debug 以上级别⽇志,及其它 tag 的 Silent 级别⽇志(即屏蔽其它 tag ⽇志)。
⽇志格式可以⽤:adb logcat -v 选项指定⽇志输出格式。
⽇志⽀持按以下⼏种 :默认格式brief、process、tag、raw、time、long
指定格式可与上⾯的过滤同时使⽤。⽐如:adb logcat -v long ActivityManager:I *:S
清空⽇志:adb logcat -c
内核⽇志:adb shell dmesg
查看设备情况:
查看设备信息型号命令:adb shell getprop del
电池状况命令:adb shell dumpsys battery
屏幕分辨率命令:adb shell wm size
如果使⽤命令修改过,那输出可能是:
Physical size: 1080x1920
Override size: 480x1024
表明设备的屏幕分辨率原本是 1080px * 1920px,当前被修改为 480px * 1024px。
屏幕密度命令:adb shell wm density
如果使⽤命令修改过,那输出可能是:
Physical density: 480
Override density: 160
表明设备的屏幕密度原来是 480dpi,当前被修改为 160dpi。
显⽰屏参数:adb shell dumpsys window displays
输出⽰例:
WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays)
Display: mDisplayId=0
init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731
deferred=false layoutNeeded=false
其中 mDisplayId 为 显⽰屏编号,init 是初始分辨率和屏幕密度,app 的⾼度⽐ init ⾥的要⼩,表⽰屏幕底部有虚拟按键,⾼度为 1920 -1794 = 126px 合 42dp。
android_id查看命令:adb shell settings get secure android_id
查看Android 系统版本:adb shell getprop ro.lease
查看设备ip地址:adb shell ifconfig | grep Mask或者adb shell netcfg
查看CPU 信息命令:adb shell cat /proc/cpuinfo
查看内存信息命令:adb shell cat /proc/meminfo
更多硬件与系统属性:
设备的更多硬件与系统属性可以通过如下命令查看:adb shell cat /system/build.prop
单独查看某⼀硬件或系统属性:adb shell getprop <;属性名>
属性名含义
ro.build.version.sdk SDK 版本
ro.lease Android 系统版本
del型号
ro.product.brand品牌
ro.product.name设备名
ro.product.board处理器型号
persist.sys.isUsbOtgEnabled是否⽀持 OTG
dalvik.vm.heapsize每个应⽤程序的内存上限
ro.sf.lcd_density屏幕密度
rro.build.version.security_patch Android 安全补丁程序级别
修改设置:
修改设置之后,运⾏恢复命令有可能显⽰仍然不太正常,可以运⾏ adb reboot 重启设备,或⼿动重启。
修改设置的原理主要是通过 settings 命令修改 /data/data/com.android.providers.settings/databases/settings.db ⾥存放的设置值。
修改分辨率命令:adb shell wm size 480x1024 恢复原分辨率命令:adb shell wm size reset
修改屏幕密度命令:adb shell wm density 160 表⽰将屏幕密度修改为 160dpi;恢复原屏幕密度命令:adb shell wm density reset
修改显⽰区域命令:adb shell wm overscan 0,0,0,200 四个数字分别表⽰距离左、上、右、下边缘的
留⽩像素,以上命令表⽰将屏幕底部 200px 留⽩。恢复原显⽰区域命令:adb shell wm overscan reset
关闭 USB 调试模式命令:adb shell settings put global adb_enabled 0 需要⼿动恢复:「设置」-「开发者选项」-「Android 调试」
状态栏和导航栏的显⽰隐藏:adb shell settings put global policy_control
可由如下⼏种键及其对应的值组成,格式为 =:=。
key含义
immersive.full同时隐藏
immersive.status隐藏状态栏
immersive.navigation隐藏导航栏
immersive.preconfirms?
这些键对应的值可则如下值⽤逗号组合:
value含义
apps所有应⽤
*所有界⾯
packagename指定应⽤
-packagename排除指定应⽤
举例:adb shell settings put global policy_control immersive.full=* 表⽰设置在所有界⾯下都同时隐藏状态栏和导航栏。
举例:adb shell settings put global policy_control
immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3 表⽰设置在包名为 com.package1和 com.package2 的应⽤⾥隐藏状态栏,在除了包名为 com.package3 的所有应⽤⾥隐藏导航栏。
恢复正常模式:adb shell settings put global policy_control null
实⽤功能:
截图保存到电脑:adb exec-out screencap -p > sc.png
然后将 png ⽂件导出到电脑:adb pull /sdcard/sc.png
录制屏幕:录制屏幕以 mp4 格式保存到 /sdcard:adb shell screenrecord /sdcard/filename.mp4 需要停⽌时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。
如果需要导出到电脑:adb pull /sdcard/filename.mp4
挂载、查看连接过的 WiFi 密码、开启/关闭 WiFi、设置系统⽇期和时间都需要root权限,不做多说。
使⽤ Monkey 进⾏压⼒测试:Monkey 可以⽣成伪随机⽤户事件来模拟单击、触摸、⼿势等操作,可以对正在开发中的程序进⾏随机压⼒测试。
简单⽤法:adb shell monkey -p < packagename > -v 500 表⽰向 指定的应⽤程序发送 500 个伪随机事件。
查看进程:adb shell ps
查看实时资源占⽤情况:adb shell top
查看进程 UID:adb shell dumpsys package | grep userId=
欢迎添加软件测试技术交流:189126020 ,⼀起交流分享知识,共同进步

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。