Android Debug Bridge是我们比较常用的命令行工具,该工具可以在Android 设备上执行不同的操作,例如安装或卸载应用程序、输入文本、捕获屏幕截图等,下面是一些常用的adb命令及使用场景。
列出连接的设备
上面的命令可以列出设备的序列号和状态,如果连接了许多设备并且我们想将它们区分开来,我们可以运行带有-l
选项的命令以列出有关设备的更多详细信息。
此命令向我们显示设备、型号等。
安装应用程序
通过提供.apk
文件的路径,可以在设备上安装应用程序
1
|
adb install <path_to_apk>.apk
|
如果连接了多个设备,直接运行上面的命令是会报错的,这时应使用-s
选项指定目标设备的序列号。
1
|
adb -s <serial_number> install <path_to_apk>.apk
|
这里的-s
是一个常用选项,用于指定具体的设备,会在adb命令中大量使用到。
列出package
adb shell
中的包管理器(package manager)工具可用于列出设备上安装的所有包
1
|
adb shell pm list packages
|
后面接grep
命令可以实现更为精确的过滤
1
|
adb shell pm list package | grep what_you_want
|
启动Activity
可以用下面的命令来找到指定的package中的某个activity
1
|
adb shell dumpsys package | grep <package_name> | grep Activity
|
然后下面的命令可以启动activity
1
|
adb shell am start <package_name>/<activity_name>
|
比如下面的命令可以启动google map
1
|
adb shell am start com.google.android.apps.maps/com.google.android.maps.MapsActivity
|
在浏览器中打开URL
这里要用到工具是活动管理器am,activity manager
1
|
adb shell am start -a android.intent.action.VIEW -d "<some_url>"
|
比如下面的例子
1
|
adb shell am start -a android.intent.action.VIEW -d "https://developer.android.com/docs"
|
输入文字
在文本框中输入并focus文本
1
|
adb shell input text "<some_input>"
|
一些特殊字符!
, &
, (
,是需要用反斜杠(\
)转义的
1
|
adb shell input text "\!\&\(\)\<\>\*\|"
|
点击Home按钮
KEYCODE_HOME
事件可以用来模拟点击Home按钮的效果
1
|
adb shell input keyevent KEYCODE_HOME
|
干掉应用
可以通过模拟按钮的方式来终止应用
1
2
3
|
adb shell input keyevent KEYCODE_APP_SWITCH
adb shell input keyevent KEYCODE_DPAD_DOWN
adb shell input keyevent DEL
|
清除应用数据
1
|
adb shell pm clear <package_name>
|
在这个例子里Google Chrome 浏览器打开了 4 个tab。当应用数据被清除并再次启动Activity时,显示Terms of Service
页面(首次启动时显示的页面)并表明应用缓存和数据被清除。
屏幕截图
截图并拉回本地
1
2
|
adb shell screencap /sdcard/<screenshot_name>.png
adb pull /sdcard/<screenshot_name>.png
|
录屏
1
|
adb shell screenrecord /sdcard/<some_video_name>.mp4
|
注意: 命令执行之后,需要按下ctrl+c
来停止录屏
最后把视频拉回到本地
1
|
adb pull /sdcard/<some_video_name>.mp4
|
查看应用程序日志
访问应用程序的data目录
这时候需要用到adb shell
1
2
|
adb shell
run-as <package_name>
|
卸载应用
1
|
adb uninstall <package_name>
|
https://lavanyamohan.hashnode.dev/common-adb-commands-i-use-while-testing?utm_campaign=Software%2BTesting%2BWeekly&utm_medium=email&utm_source=Software_Testing_Weekly_114