adb的构成和工作原理
ADB,Android Debug Bridge,是一个调试工具
adb构成:
- Client端:运行在开发机器中,即你的开发电脑,用来发送adb命令;
- Daemon守护进程:运行在调试设备中,手机或模拟机,用来接收并执行adb命令
- Server端:同样运行在开发机器中,用来管理Client端和手机的Daemon之间的通信
adb工作原理
- client端将命令发送给server端
- server端会将命令发送给daemon端
- daemon端执行命令,并将执行结果返回给server端
- server端将结果再返回给client端
【小结】adb工具可以在电脑通过终端命令操作安卓手机/模拟器
adb常用命令
获取包名和界面名
- 包名和页面名的概念
- 包名(package):决定程序的唯一性(不是应用的名字)
- 界面名(activity):目前可以理解为,一个界面名对应一个界面
- 如何获取包名和应用名
Mac/Linux:
adb she1l dumpsys window windows | grep mFocusedApp
Windows:
adb she1l dumpsys window windows | findstr mFocusedApp
- 应用场景:
自动化测试需要通过代码的形式告诉手机测试哪个应用程序的哪一个界面,所以需要通过这个命令进行获取
示例:
1. 现在模拟机或手机中打开《设置》应用程序
2. 输入对应平台的命令
结果如下:
mFocusedApp=AppwindowToken{5B309da token=Token{2e2fa785ActivityRecord{2928d4fc u0 com.android.settings/.Settings t1127}}}
其中:
包名为:com.android.settings
界面名为:.Settings
文件传输
- 从电脑发送文件到手机
adb push 电脑的文件路径 手机的文件夹路径
- 从手机中拉取文件到电脑
adb pull 手机的文件路径 电脑的文件夹路径
- 应用场景
- 如果希望将电脑的某个文件,发送到手机,使用 adb push 命令
- 如果希望将手机上的某个文件,发送到电脑,使用 adb pull 命令
获取app启动时间
- 命令格式
adb shell am start -W 包名/启动名
1. ThisTime:该界面(activity)启动耗时(毫秒)
2. TotalTime:应用自身启动耗时 = ThisTime + 应用application等资源启动时间(毫秒)
3. WaitTime:系统启动应用耗时 = TotalTime + 系统资源启动时间(毫秒)
- 应用场景
- 如果企业对应用程序的启动速度有要求,则需要使用这个命令进行测试
- 测试标准:参照同类软件,启动时间不能超出一倍即可
获取手机日志
- 如何获取
adb logcat
- 使用步骤
- 打开需要测试的应用程序
- 找到触发bug 的位置
- 使用查看日志命令
- 触发bug
- 获取日志信息
- 应用场景
- 将bug的日志信息发送给开发人员,便于开发人员定位bug
其他命令【了解】
序号 | 命令 | 说明 |
01 | adb install 路径/xx.apk | 安装app到手机 |
02 | adb uninstall 包名 | 卸载手机上的app,需要指定包名 |
03 | adb devices | 获取当前电脑已经连接设备和对应的设备号 |
04 | adb shell | 进入到安卓手机内部的linux系统命令行中 |
05 | adb start-server | 启动adb客户端,出bug时使用可以重启服务器,先关闭再启动 |
06 | adb kill-server | 停止adb客户端,出bug时使用可以重启服务器,先关闭再启动 |
07 | adb --help | 查看adb帮助,命令记不清楚时有用 |