Open huruji opened 5 years ago
这只是一篇笔记,如果想要了解详细内容,你应该看一手知识,也就是官方的文档,如果你只是想要简单了解,可以看这篇。
ADB 全称 Android Debug Bridge,即安卓调试桥,通过 ADB 能够与模拟器实例或者是连接的安卓设备进行通信,可以通过它来调试安卓应用,做应用的自动化测试,搭建云测试平台等。
brew cask install android-platform-tools
通过 USB 连接手机,打开手机的开发者选项(允许通过 USB 调试、通过 USB 安装应用),使用 adb devices 可以查看连接的设备
adb devices
输出格式为 [serialNumber] [state],serialNumber 就是序列号,state 有如下几种:
offline —— 表示设备未连接成功或无响应。
device —— 设备已连接。注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到 adb,但启动完毕后系统才处于可操作状态。
no device —— 没有设备/模拟器连接。
加上 -l 参数可以看到具体的设备信息:
-l
使用 adb help 查看帮助
adb help
与其他工具的命令行类似,ADB 命令有相应的 options,从上面的 adb help 中可以看到对应的全局 options ,最常用的 options 就是 -s 也就是在多设备连接的时候使用指定序列号的设备。大致命令格式可以总结为:
-s
adb [-d|-e|-s <serialNumber>] <command>
查看设备安装的应用
adb shell pm list packages
其中 pm 是 package manager 的缩写,abd shell 自然就是运行设备的终端 shell 的意思,因为 android 本身就是基于 unix 的。
pm
package manager
abd shell
android
unix
可以通过参数来过滤,如 '-3' 为只显示第三方应用,-s 为只显示系统应用,同样也可以通过管道和 grep 来过滤,如我想知道设备中安装了哪些腾讯的应用软件:
grep
adb shell pm list packages | grep tencent
可以看到安装的腾讯应用程序有 qq音乐(com.tencent.qqmusic)、qq邮箱(com.tencent.androidqqmail)、微信(com.tencent.mm)、手机QQ(com.tencent.mobileqq)、和平精英(com.tencent.tmgp.pubgmhd),而 com.tencent.androidqqmail 是系统应用,暂时不知道是哪个。
可以通过 ADB 给手机安装电脑上有的 apk ,如给手机装上微博:
adb install /Users/huruji/Downloads/weibo.apk
一段时间后终端显示 success 则表明安装成功。
success
类似于上面,使用 uninstall 命令加上包名即可,如卸载微博:
adb uninstall com.sina.weibo
一段时间后终端显示 success 则表明卸载成功。
如查看微博的安装路径
adb shell pm path com.sina.weibo
打开应用需要知道对应的包名和 Activity 名,可以先通过命令获取启动页,如获取微信的启动页:
adb shell dumpsys window windows | grep "Current"
获取到包名和 Activity 名是 com.tencent.mm/com.tencent.mm.ui.LauncherUI,使用 adb shell am start 命令打开
com.tencent.mm/com.tencent.mm.ui.LauncherUI
adb shell am start
adb shell am start com.tencent.mm/com.tencent.mm.ui.LauncherUI
其中 am 是 Activity Manager 的缩写
Activity Manager
眼睛盯着手机就可以看到手机 “自动” 打开了微信(这个不好记录演示,得自己尝试)
如退出微信:
adb shell am force-stop com.tencent.mm
将电脑的文件复制到设备上成为 push ,将设备上的文件复制到电脑上成为 pull
push
pull
adb pull <设备里的文件路径> [电脑上的目录]
adb push <电脑上的文件路径> <设备里的目录>
通过输入 adb shell input 可以看到对应的提示:
adb shell input
输入文字就是
adb shell input text
模拟按键就是
adb shell input keyevent
模拟点击就是
adb shell input tap
模拟滑动就是
adb shell input swipe
比较需要记忆的就是按键的keycode,截取 awesome adb 的总结:
还有就是 swipe 的坐标对应的是真实的屏幕分辨率,比如,我想让手机在抖音应用里自动切换视频就可以使用swipe:
adb shell input swipe 250 1000 250 100
窗口管理的命令是 wm,是 window manager 的缩写
wm
window manager
如上面提到的需要获取到屏幕的分辨率:
adb shell wm size
也可以通过这个命令修改窗口分辨率,如:
adb shell wm size 720x1280
同样可以通过 reset 还原回来
adb shell wm size reset
获取密度
adb shell wm density
同样可以修改和重置
adb shell wm density 500
adb shell wm density reset
设置内边距
adb shell wm overscan 50,100,0,200
重置
adb shell wm overscan reset
adb shell getprop ro.product.model
adb shell dumpsys battery
scale 表示最大电量,level 表示当前电量。
scale
adb shell getprop ro.build.version.release
还有其他的信息也可以通过 getprop 命令获取:
getprop
adb shell ifconfig | grep Mask
设备的 IP 地址就是 10.159.100.193
10.159.100.193
截屏可以将文件存在设备里也可以导出到电脑,如导出到电脑:
adb shell screencap -p > /Users/huruji/Downloads/cap/a.png
-p 的意思就是存储为 png 格式,> 表示存储在电脑里,如果去掉 > 将路径换成设备的路径就是存储在设备里。
-p
>
录屏保存在设备内,如果需要导出到电脑端可以使用之前提到的 pull 命令,录屏默认最长时间是180s:
shell screenrecord /sdcard/b.mp4
将文件导出
adb shell pull /sdcard/b.mp4
需要注意的是导出到的是当前文件夹,所以如果需要指定对应的文件夹,需要先 cd 到对应文件夹。
cd
以上大概就是常用的操作,如果你需要通过代码控制的话就需要封装相应的包,毕竟裸着拼接字符串很难受,我大概在 npm 上搜索了一下,目前这类包相对较少,比较流行的就是appium-adb,而这个也是服务于项目https://github.com/appium/appium
呼应下开头,开头提到的 ADB 用于云测试平台,目前我知道的开源的有stf 和阿里开源的macaca
这只是一篇笔记,如果想要了解详细内容,你应该看一手知识,也就是官方的文档,如果你只是想要简单了解,可以看这篇。
ADB 全称 Android Debug Bridge,即安卓调试桥,通过 ADB 能够与模拟器实例或者是连接的安卓设备进行通信,可以通过它来调试安卓应用,做应用的自动化测试,搭建云测试平台等。
安装
通过 USB 连接手机,打开手机的开发者选项(允许通过 USB 调试、通过 USB 安装应用),使用
adb devices
可以查看连接的设备输出格式为 [serialNumber] [state],serialNumber 就是序列号,state 有如下几种:
offline —— 表示设备未连接成功或无响应。
device —— 设备已连接。注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到 adb,但启动完毕后系统才处于可操作状态。
no device —— 没有设备/模拟器连接。
加上
-l
参数可以看到具体的设备信息:使用
adb help
查看帮助命令语法
与其他工具的命令行类似,ADB 命令有相应的 options,从上面的
adb help
中可以看到对应的全局 options ,最常用的 options 就是-s
也就是在多设备连接的时候使用指定序列号的设备。大致命令格式可以总结为:查看应用
查看设备安装的应用
其中
pm
是package manager
的缩写,abd shell
自然就是运行设备的终端 shell 的意思,因为android
本身就是基于unix
的。可以通过参数来过滤,如 '-3' 为只显示第三方应用,
-s
为只显示系统应用,同样也可以通过管道和grep
来过滤,如我想知道设备中安装了哪些腾讯的应用软件:可以看到安装的腾讯应用程序有 qq音乐(com.tencent.qqmusic)、qq邮箱(com.tencent.androidqqmail)、微信(com.tencent.mm)、手机QQ(com.tencent.mobileqq)、和平精英(com.tencent.tmgp.pubgmhd),而 com.tencent.androidqqmail 是系统应用,暂时不知道是哪个。
安装应用
可以通过 ADB 给手机安装电脑上有的 apk ,如给手机装上微博:
一段时间后终端显示
success
则表明安装成功。卸载应用
类似于上面,使用 uninstall 命令加上包名即可,如卸载微博:
一段时间后终端显示
success
则表明卸载成功。查看应用安装路径
如查看微博的安装路径
打开应用
打开应用需要知道对应的包名和 Activity 名,可以先通过命令获取启动页,如获取微信的启动页:
获取到包名和 Activity 名是
com.tencent.mm/com.tencent.mm.ui.LauncherUI
,使用adb shell am start
命令打开其中 am 是
Activity Manager
的缩写眼睛盯着手机就可以看到手机 “自动” 打开了微信(这个不好记录演示,得自己尝试)
退出应用
如退出微信:
复制文件
将电脑的文件复制到设备上成为
push
,将设备上的文件复制到电脑上成为pull
模拟按键、输入
通过输入
adb shell input
可以看到对应的提示:输入文字就是
模拟按键就是
模拟点击就是
模拟滑动就是
比较需要记忆的就是按键的keycode,截取 awesome adb 的总结:
还有就是 swipe 的坐标对应的是真实的屏幕分辨率,比如,我想让手机在抖音应用里自动切换视频就可以使用swipe:
窗口管理
窗口管理的命令是
wm
,是window manager
的缩写如上面提到的需要获取到屏幕的分辨率:
也可以通过这个命令修改窗口分辨率,如:
同样可以通过 reset 还原回来
获取密度
同样可以修改和重置
设置内边距
重置
设备信息
获取手机型号
获取电池状况
scale
表示最大电量,level 表示当前电量。获取 Android 版本
还有其他的信息也可以通过
getprop
命令获取:获取设备 IP 地址
设备的 IP 地址就是
10.159.100.193
截屏和录屏
截屏
截屏可以将文件存在设备里也可以导出到电脑,如导出到电脑:
-p
的意思就是存储为 png 格式,>
表示存储在电脑里,如果去掉>
将路径换成设备的路径就是存储在设备里。录屏
录屏保存在设备内,如果需要导出到电脑端可以使用之前提到的
pull
命令,录屏默认最长时间是180s:将文件导出
需要注意的是导出到的是当前文件夹,所以如果需要指定对应的文件夹,需要先
cd
到对应文件夹。以上大概就是常用的操作,如果你需要通过代码控制的话就需要封装相应的包,毕竟裸着拼接字符串很难受,我大概在 npm 上搜索了一下,目前这类包相对较少,比较流行的就是appium-adb,而这个也是服务于项目https://github.com/appium/appium
呼应下开头,开头提到的 ADB 用于云测试平台,目前我知道的开源的有stf 和阿里开源的macaca