2025年4月1日 星期二 乙巳(蛇)年 正月初二 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

ADB 实用笔记

时间:12-14来源:作者:点击数:4
CDSY,CDSY.XYZ

这只是一篇笔记,如果想要了解详细内容,你应该看一手知识,也就是官方的文档,如果你只是想要简单了解,可以看这篇。

ADB 全称 Android Debug Bridge,即安卓调试桥,通过 ADB 能够与模拟器实例或者是连接的安卓设备进行通信,可以通过它来调试安卓应用,做应用的自动化测试,搭建云测试平台等。

安装

  • brew cask install android-platform-tools

通过 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 也就是在多设备连接的时候使用指定序列号的设备。大致命令格式可以总结为:

  • adb [-d|-e|-s <serialNumber>] <command>

查看应用

查看设备安装的应用

  • adb shell pm list packages

其中 pm 是 package manager 的缩写,abd shell 自然就是运行设备的终端 shell 的意思,因为 android 本身就是基于 unix 的。

可以通过参数来过滤,如 '-3' 为只显示第三方应用,-s 为只显示系统应用,同样也可以通过管道和 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 则表明安装成功。

卸载应用

类似于上面,使用 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 命令打开

  • adb shell am start com.tencent.mm/com.tencent.mm.ui.LauncherUI

其中 am 是 Activity Manager 的缩写

眼睛盯着手机就可以看到手机 “自动” 打开了微信(这个不好记录演示,得自己尝试)

退出应用

如退出微信:

  • adb shell am force-stop com.tencent.mm

复制文件

将电脑的文件复制到设备上成为 push ,将设备上的文件复制到电脑上成为 pull

  • adb pull <设备里的文件路径> [电脑上的目录]
  • adb push <电脑上的文件路径> <设备里的目录>

模拟按键、输入

通过输入 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 的缩写

如上面提到的需要获取到屏幕的分辨率:

  • 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 表示当前电量。

获取 Android 版本

  • adb shell getprop ro.build.version.release

还有其他的信息也可以通过 getprop 命令获取

获取设备 IP 地址

  • adb shell ifconfig | grep Mask

设备的 IP 地址就是 10.159.100.193

截屏和录屏

截屏

截屏可以将文件存在设备里也可以导出到电脑,如导出到电脑:

  • adb shell screencap -p > /Users/huruji/Downloads/cap/a.png

-p 的意思就是存储为 png 格式,> 表示存储在电脑里,如果去掉 > 将路径换成设备的路径就是存储在设备里。

录屏

录屏保存在设备内,如果需要导出到电脑端可以使用之前提到的 pull 命令,录屏默认最长时间是180s:

  • shell screenrecord /sdcard/b.mp4

将文件导出

  • adb shell pull /sdcard/b.mp4

需要注意的是导出到的是当前文件夹,所以如果需要指定对应的文件夹,需要先 cd 到对应文件夹。

以上大概就是常用的操作,如果你需要通过代码控制的话就需要封装相应的包,毕竟裸着拼接字符串很难受,我大概在 npm 上搜索了一下,目前这类包相对较少,比较流行的就是 appium-adb,而这个也是服务于项目 https://github.com/appium/appium

呼应下开头,开头提到的 ADB 用于云测试平台,目前我知道的开源的有 stf 和阿里开源的 macaca

CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐