adb常用命令:<二>am命令集

am全称Activity Manager,即活动管理器,在进行安卓应用调试、测试等工作时可以通过该命令集去调用各种系统操作。本文旨在对一些日常工作中常用的am命令进行收集和整理。

一、package name 与activity name的获取

am命令通常需要对包或者指定活动进行操作,因此我们需要做的第一步就是获取到目标包名和activity。

#获取launcher activity,当需要通过am来启动应用时,通常需要拿到启动活动,可以通过pm命令查询包信息的方式来查询
adb shell pm dump packageName

在这里插入图片描述
通过查询启动分类,可以得到这个launcher activity 所属的intent类型名,然后可以通过这个分类名去定位到dump输出里面的launcher activity,如下图所示。(PS:这个dump输出指的是 adb shell pm dump packageName 命令执行的输出内容,上图中的输出只会定位到分类名。)
在这里插入图片描述
另外通过图中的信息,我们还会发现一个其他定位的方式,标记的Actions下应用启动的action通用是MAIN标志,比如上图的android.intent.action.Main,也可以通过这个查找这个参数来定位launcher activity。当然查询的方式并不只是这一种,其他方式请自行查询。

#通过cmd定位当前窗口运行的应用包和活动名
adb shell dumpsys window | findstr Current

在这里插入图片描述
图中蓝色部分为package name,红色部分为 activity name

#也可以选择更为精准的参数获取,在上图中我们会发现有一个指向性的参数mCurrentFocus,我们可以通过这个参数做到更为准确的获取
adb shell dumpsys window | findstr mCurrentFocus

在这里插入图片描述

二、常用的参数

am命令基本都是基于intent来实现行为操作,这里列举一些较常见的的参数和使用说明。

#通用的命令格式
adb shell  am [options] intent
常用options参数说明
  • -a:指定intent action,调用指定的操作行为,比如广播、拨号、网页打开等等
  • -n < COMPONENT>: 指定组件名,格式为{包名}/.{主Activity名}
  • -d < DATA_URI>: 指定Intent data URI,主要作为动作的传参用途
  • -t < MIME_TYPE>: 指定Intent MIME Type
  • -c < CATEGORY> [-c < CATEGORY>] …]:指定Intent category
  • -p < PACKAGE>: 指定包名
  • -f < FLAGS>: 添加flags,后续参数必须是int型
常用的intent参数(action)说明

启动应用程序或 Activity:

  • android.intent.action.MAIN: 通常与 Category.LAUNCHER 结合使用来启动应用的主入口。
  • android.intent.action.VIEW: 用于查看特定类型的数据,常用于网页链接或文件。
  • android.intent.action.DIAL: 显示拨号界面。
  • android.intent.action.CALL: 直接拨打号码(需要权限)。
  • android.intent.action.SEND: 发送文本或数据

系统设置相关

  • android.settings.WIFI_SETTINGS: 打开 WiFi 设置。
  • android.settings.BLUETOOTH_SETTINGS: 打开蓝牙设置。
  • android.settings.ACTION_DATA_ROAMING_SETTINGS: 打开数据漫游设置。
  • android.settings.ACTION_DATE_SETTINGS: 打开日期和时间设置。

设备管理

  • android.intent.action.REBOOT: 重启设备
  • android.intent.action.POWER_OFF: 关闭设备。
  • android.intent.action.MASTER_CLEAR: 恢复出厂设置。

媒体控制

  • android.media.action.MEDIA_PLAY: 开始播放媒体。
  • android.media.action.MEDIA_PAUSE: 暂停播放媒体。

位置和地图

  • android.intent.action.VIEW 结合地理坐标 URI (geo:,) 可以打开地图应用并定位到特定地点。

浏览器动作

  • android.intent.action.VIEW 结合 URL 数据 URI (http:// 或 https://) 可以打开网页。
#启动网页并打开指定的网站
adb shell am start -a android.intent.action.VIEW -d http://www.example.com

广播通知

  • android.intent.action.BOOT_COMPLETED: 当系统启动完成后发送。
  • android.net.conn.CONNECTIVITY_CHANGE: 网络连接状态改变时发送。
  • android.intent.action.SCREEN_ON 和 android.intent.action.SCREEN_OFF: 屏幕开启或关闭时发送。
  • android.intent.action.LOW_MEMORY: 系统内存低时发送。
  • android.intent.action.NETWORK_TRAFFIC: 当网络流量达到一定阈值时发送。
  • android.intent.action.PHONE_STATE: 电话状态改变时发送。
#可以通过broadcast模拟发送系统广播,比如开机完成的广播
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
#同时也支持自定义的广播,但需要注意的是,自定义的广播同样需要自定义的广播接收和触发,通常需要增加额外参数比如数据(-d),类型(-t),类别(-c)或者额外参数(--es)(--ei)等
adb shell am broadcast -a com.example.MY_CUSTOM_BROADCAST --es message "hello world"

三、常用指令

启动:start

当想要启动 Android 设备上的一个特定应用或应用内的特定活动(Activity)时,可以使用以下格式的命令

#这里的<package>/<activity>请参考第一部分的内容,如果是需要启动应用的话,这里的activity需要用到launcher activity
adb shell am start -n <package>/<activity>
#另外还可以通过补充参数来满足应用需求
#-W:等待启动完成,启动过程为点击应用图标到应用

另外还可以通过补充参数来满足应用需求:
-W:等待启动完成,启动过程为点击应用图标到应用加载完成,会输出应用启动相关的信息,可用于查看启动耗时。

adb shell am start -n com.alipay.hulu/.activity.SplashActivity -W

在这里插入图片描述
-S:在启动 activity 前,强行停止目标应用

adb shell am start -S com.alipay.hulu/.activity.SplashActivity 

-D:启用调试功能
-R count:重复启动 activity count 次。在每次重复前,将完成顶层 activity。

进程停止:force-stop、kill、kill-all
#强行停止与package相关的所有进程
adb shell am force-stop package
#终止与package关联的所有进程,仅限于可安全终止的进程,提供option选项,可指定目标进程,未指定则终止所有
adb shell am kill [options] package
#终止所有后台进程,无差别杀死
adb shell am kill-all
进程监控:monitor
#监控crash和ANR,提供一个选项 --gdb:在崩溃/ANR 时,在给定的端口上启动 gdbserver,可通过ctrl+c停止监控
adb shell am monitor [option]
性能分析:profile start、profile stop
#启动 process 的性能分析器,将结果写入 file
profile start process file
#停止 process 的性能分析器
profile stop process	 	

更多adb命令详情可点击这里前往官网

Android Debug Bridge version 1.0.39 Revision 3db08f2c6889-android Installed as D:\adb\adb.exe global options: -a listen on all network interfaces, not just localhost -d use USB device (error if multiple devices connected) -e use TCP/IP device (error if multiple TCP/IP devices available) -s SERIAL use device with given serial number (overrides $ANDROID_SERIAL) -p PRODUCT name or path ('angler'/'out/target/product/angler'); default $ANDROID_PRODUCT_OUT -H name of adb server host [default=localhost] -P port of adb server [default=5037] -L SOCKET listen on given socket for adb server [default=tcp:localhost:5037] general commands: devices [-l] list connected devices (-l for long output) help show this help message version show version num networking: connect HOST[:PORT] connect to a device via TCP/IP [default port=5555] disconnect [HOST[:PORT]] disconnect from given TCP/IP device [default port=5555], or all forward --list list all forward socket connections forward [--no-rebind] LOCAL REMOTE forward socket connection using: tcp:<port> (<local> may be "tcp:0" to pick any open port) localabstract:<unix domain socket name> localreserved:<unix domain socket name> localfilesystem:<unix domain socket name> dev:<character device name> jdwp:<process pid> (remote only) forward --remove LOCAL remove specific forward socket connection forward --remove-all remove all forward socket connections ppp TTY [PARAMETER...] run PPP over USB reverse --list list all reverse socket connections from device reverse [--no-rebind] REMOTE LOCAL reverse socket connection using: tcp:<port> (<remote> may be "tcp:0" to pick any open port) localabstract:<unix domain socket name> localreserved:<unix domain socket name> localfilesystem:<unix domain socket name> r
07-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值