linux命令pm linux命令ping

Android中AM、PM、dumpsys命令使用总结 am指令是 activity manager的缩写,可以启动Service、Broadcast , 杀进程,监控等功能,这些功能都非常便捷调试程序 。
可以通过adb shell 进入Android 的Linux命令界面,输入am -help查看详细命令,先介绍几个简单用法,
命令格式如下
命令列表:
原理分析:am命令实的实现方式在Am.java,最终几乎都是调用ActivityManagerService相应的方法来完成的,am monitor除外 。比如前面概述中介绍的命令am start -a android.intent.action.VIEW -d,启动Acitivty最终调用的是ActivityManagerService类的startActivityAsUser()方法来完成的 。再比如am kill-all命令,最终的实现工作是由ActivityManagerService的killBackgroundProcesses()方法完成的 。
下面说一下[options]和 INTENT参数的意义以及如何正确取值 。
主要是启动Activity命令am start [options] INTENT使用options参数,接下来列举Activity命令的[options]参数:
启动Activity的实现原理: 存在-W参数则调用startActivityAndWait()方法来运行,否则startActivityAsUser() 。
命令
例如: 向pid=12345的进程,发出level=RUNNING_LOW的收紧内存命令
level取值范围为: HIDDEN、RUNNING_MODERATE、BACKGROUND、RUNNING_LOW、MODERATE、RUNNING_CRITICAL、COMPLETE
am的子命令,startservice, stopservice, broadcast, kill, profile start, profile stop, dumpheap的可选参数都允许设置--user USER_ID 。目前市面上的绝大多数手机还是单用户模式,因此可以忽略该参数,默认为当前用户 。
例如:启动id=10001的用户的指定service 。
Intent的参数和flags较多,为了方便,这里分为3种类型参数,常用参数,Extra参数,Flags参数
实例
(1). 基本类型
参数es是Extra String首字母简称,实例:
(2). 数组类型
参数eia,是Extra int array首字母简称,多个value值之间以逗号隔开 , 实例:
(3). ArrayList类型
参数efal , 是Extra float Array List首字母简称,多个value值之间以逗号隔开 , 实例:
pm工具为包管理(package manager)的简称,可以使用pm工具来执行应用的安装和查询应用宝的信息、系统权限、控制应用 , pm工具是Android开发与测试过程中必不可少的工具,shell命令格式如下:
原理分析:pm命令实的实现方式在Pm.java , 最后大多数都是调用PackageManagerService相应的方法来完成的 。disbale之后,在桌面和应用程序列表里边都看到不该app 。
查看所有的package,
[options]参数:
disabled + enabled = 总应用个数; 系统 + 第三方 = 总应用个数 。
查看第3方应用:
查看已经被禁用的包名
FILTER参数
当FILTER为不为空时,则只会输出包名带有FILTER字段的应用;当FILTER为空时,则默认显示所有满足条件的应用 。
例如,查看包名带有weather字段的包名
[options]参数:
PATH参数:指的是需要安装的apk所在的路径
dumpsys是Android自带的强大debug工具,从名字就可以看出,主要是用于dump 当前android system的一些信息,是一项分析手机问题,运行状态,使用情况等十分有效的手段 。
实现原理
dumpsys的源码结构其实很简单,只有一个dumpsys.cpp
/frameworks/native/cmds/dumpsys/dumpsys.cpp
先通过defaultServiceManager()函数获得ServiceManager对象,然后根据dumpsys传进来的参数通过函数checkService来找到具体的service, 并执行该service的dump方法,达到dump service的目的 。
不同的Android系统版本支持的命令有所不同,可通过下面命令查看当前手机所支持的dump服务,先进入adb shell,再执行如下命令:dumpsys -l 。这些服务名可能并看不出其调用的哪个服务,可以通过下面指令:service list 。

推荐阅读