【Android】ADB命令高频使用场景(二)

389 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情

接着上一章【Android】ADB命令高频使用场景(一),本章将继续演示ADB命令在测试工作中高频的使用场景。

注意:下面演示的均是当前只有一个设备连接到电脑的情况,如果当前有多个设备,需要在adb命令增加-s参数,指定具体设备的序列号。
adb [-s serial_number] command

调用 activity 管理器 (am)

am命令很多,这里介绍高频使用功能——启动指定的应用程序,想了解更多功能可以查看官方文档

例如上一章安装的微信,如何在电脑端直接启动,主要分为以下几步:

第一步:获取应用程序的包名和启动入口Activity。

主要有两种方式:

第一种方式

如果可以拿到安装包,则可以使用appt dump badging path/to/apk > output_file命令(这个命令在/SDK 安装目录/build-tools/下,如果想要直接使用,可参考Android SDK安装指南中配置adb命令的步骤)

打开对应的输出文件,在文件中的首行就可以看到包名

然后在文件中搜索关键字launchable-activity就可以看到启动入口Activity

第二种方式

如果拿不到对应的安装包,则可以采用第二种方式。

  • 将移动端设备的指定应用启动起来
  • 通过命令adb shell dumpsys activity|grep mLastResumedActivity就可以获取对应的包名和启动入口Activity

第二步:通过包名和启动入口Activity启动应用程序。

拿到对应的应用程序的包明和启动入口Activity后,就可以使用命令adb shell am start 包名/入口Activity类名启动应用了。

先将移动端的应用程序关闭,在电脑终端输入命令adb shell am start com.tencent.mm/.ui.LauncherUI,可以看到手机端微信被成功启动。

调用软件包管理器 (pm)

pm命令很多,这里介绍高频使用的几种,想了解更多功能可以查看官方文档

  • 通过adb shell pm list packages命令可以查询当前设备上安装了哪些应用程序。如下图:查看设备上安装的所有应用程序,然后通过微信包名进行过滤,这样就可以判断出设备上是否安装了某个软件包,避免再次安装时报错。

  • 如果已经安装某个应用程序,可以使用adb shell pm uninstall package命令进行软件删除。(如果想要移除软件包后保留数据和缓存目录,则可以增加-k参数),通常这一步是需要在移动端进行授权的。

  • 删除完成后就可以使用命令adb shell pm install path/to/apk再次安装应用(该命令可以简写为之前提到的adb install path/to/apk,这里就不再演示)。

  • 如果不需要重装应用,只是想删除应用相关的数据,可以使用命令adb shell pm clear package

Logcat 获取日志信息

很多时候移动端定位问题都需要进行日志获取,比如说应用崩溃,闪退等等,这个时候就可以通过adb logcat > log_filename将日志输入到文件,然后打开文件进行日志分析。

  • 在电脑终端输入命令adb logcat > phone.log
  • 在移动端设备上进行操作
  • 操作完后,在电脑终端输入 Ctrl + C中止,这样日志就保存到电脑的phone.log文件中了。