android ams调试指令介绍
ams提供了很多调试指令,包括组件管理、状态等,分为两大类:
1).am指令,形如 am xxx
2).dump指令,形如dumpsys activity xxx
源码位于:ActivityManagerShellCommand和ActivityManagerService
大家可以通过am -h
和dumpsys activity -h
来查看命令用法,支持的命令很多的,下面介绍一些常用的命令。
组件管理
启动activity
通过am start/am start-activity来启动activity
eg1: 通过component启动
am start -n am start -n com.android.settings/.Settings
eg2: 通过action启动
am start -a com.android.intent.action.SHOW_BRIGHTNESS_DIALOG
eg2: 通过url启动
am start -d "http://www.bing.com" [-a android.intent.action.VIEW]
eg2: 带参数
- 通过url启动,参数加在url中,key1=value2&=key2=value2,如"https://cn.bing.com/search?q=hello"
am start -d "https://cn.bing.com/search?q=hello" -a android.intent.action.VIEW
- 不通过url启动,参数加在后面,如string类型参数–es key=value
启动service/停止service
通过am start-service/am startservice/am start-foreground-service/来启动service和foregroundservice,一般是通过component和action来启动
eg1:启动服务
am start-service com.example.myapp/.MyService
am start-service -a "example.intent.action.MY_SERVICE"
eg2:停止服务
am stop-service com.example.myapp/.MyService
am stop-service -a "example.intent.action.MY_SERVICE"
发送broadcast
通过am broadcast来发送广播
eg1:发送广播
am broadcast -a "android.intent.action.BOOT_COMPLETED"
eg2:只给某个应用发送广播
am broadcast -a "android.intent.action.BOOT_COMPLETED" -n com.android.deskclock/.AlarmInitReceiver
进程管理
抓取进程java heap
am dumpheap <进程名>
停止进程
am force-stop <包名>
am stop-app <包名>
模拟crash
am crash <包名或进程id>
kill后台进程
am kill <包名>
系统
挂起系统
am hang
重启系统
不进行bootloader、kernerl阶段
am restart
获取当前user
am get-current-user
切换user
am switch-user <用户id>
获取系统配置
am get-config
dumpsys
查看当前activity stack
可以当前Focus的activity
dumpsys activity a
查看最近任务的activity stack
同导航栏的多任务按键
dumpsys activity r
查看应用退出的原因
dumpsys activity exit-info <包名>