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 https://amberweather.com , 启动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。

服务列表有很多,这里简单介绍几种

通过下面命令可打印具体某一项服务:dumpsys <service>,其中service便是前面表格中的服务名

接下来主要说下dumpsys activity 用法

命令

options可选值

dumpsys activity等价于依次输出下面7条指令:

cmd可选值

命令

返回结果

上面的输出结果可以分为以下四个部分

也可以只输出某个pid或package的进程信息:

下面以AmberLocker作为实例进行分析

场景1:查询某个App所有的Service状态

解读:Service类名为com.amber.lockscreen.LockerHeartService,包名为mobi.infolife.ezweather.locker.locker_2,baseDir(apk路径)为/data/app/mobi.infolife.ezweather.locker.locker_2-2/base.apk,dataDir((apk数据路径)
运行在进程pid=1115,进程名为进程名为mobi.infolife.ezweather.locker.locker_2,,uid=10060,还有创建时间等信息

场景2:查询某个App所有的广播状态

场景3:查询某个App所有的Activity状态

场景4:查询某个App的进程状态

格式:ProcessRecord{Hashcode pid:进程名/uid},进程pid=941,进程名为mobi.infolife.ezweather.locker.locker_2:live,uid=10060.
该进程中还有Services,Connections, Providers, Receivers,

场景5:查询栈顶Activity

dumpsys 的命令还有很多,这里就不一一列举了。



  • adb shell am鍜pm鐨鍖哄埆
    绛旓細AM,琛ㄧず涓婂崍锛PM锛岃〃绀轰笅鍗堛 AM锛堟媺涓乤nte meridiem鐨勭缉鍐欙級鎸囩殑鏄粠闆舵櫒鍒颁笂鍗堟椂娈碉紝PM锛堟媺涓乤nte meridiem锛夋剰涓衡滀腑鍗堜箣鍓嶁濄傛槸鎸囦笅鍗13鍒0鐐逛箣闂淬
  • Android涓瑼M銆PM銆乨umpsys鍛戒护浣跨敤鎬荤粨
    绛旓細鍘熺悊鍒嗘瀽锛歛m鍛戒护瀹炵殑瀹炵幇鏂瑰紡鍦Am.java锛屾渶缁堝嚑涔庨兘鏄皟鐢ˋctivityManagerService鐩稿簲鐨勬柟娉曟潵瀹屾垚鐨勶紝am monitor闄ゅ銆傛瘮濡傚墠闈㈡杩颁腑浠嬬粛鐨勫懡浠m start -a android.intent.action.VIEW -d https://amberweather.com 锛 鍚姩Acitivty鏈缁堣皟鐢ㄧ殑鏄疉ctivityManagerService绫荤殑startActivityAsUser()鏂规硶鏉ュ畬...
  • android寰楀埌绯荤粺鏃堕棿濡備綍鍒ゆ柇鏄櫧澶╄繕鏄櫄涓
    绛旓細android寰楀埌鐨勭郴缁熸椂闂村垽鏂槸鐧藉ぉ杩樻槸鏅氫笂涓鑸敱涓ょ鏂规硶锛岀涓绉嶏紝濡傛灉鏄24灏忔椂鍒剁洿鎺ョ湅灏卞彲浠ヤ簡锛涚浜岀锛12灏忔椂鍒讹紝涓鑸郴缁熼兘浼氭爣绀am鍜pm锛鍏朵腑am涓轰笂鍗锛宲m涓轰笅鍗堛備簩鍗佸洓灏忔椂鍒讹紝鏄妸姣忔棩鐢卞崍澶滆嚦鍗堝鍏卞垎涓轰簩鍗佸洓涓皬鏃讹紝浠庢暟瀛0鑷23锛24鏄瘡鏃ュ畬缁撶殑鍗堝锛夈傝繖涓椂闂磋褰曠郴缁熸槸鐜颁粖鍏ㄤ笘鐣屾渶甯哥敤...
  • 甯哥敤鐨刟db鍛戒护
    绛旓細am鍏ㄧО涓篴ctivity manager,鍙娇鐢╝m鍛戒护妯℃嫙鍚勭绯荤粺鐨琛屼负,濡傚幓鍚姩涓涓猘ctivity,寮哄埗鍋滄杩涚▼,鍙戦佸箍鎾繘绋,淇敼璁惧灞忓箷灞炴х瓑銆 濡:adb shell am start <apk鍖呭悕>/<activityName>:鍚姩涓涓猘ctivity銆 pm鍏ㄧО涓簆ackage manager,鍒╃敤pm鍛戒护鍙ā鎷android琛屼负鎴栨煡璇㈣澶囦笂鐨勫簲鐢ㄧ瓑銆 濡:adb shell pm list packages ...
  • 缃戠粶am鍜pm鏄粈涔堟剰鎬
    绛旓細1. 浜掕仈缃鐨蹇熷彂灞曚娇寰楃綉缁淎M鍜PM杩欎袱涓湳璇湪鎴戜滑鐨勬棩甯哥敓娲讳腑瓒婃潵瓒婂父瑙併2. AM浠h〃Ante Meridiem锛屾剰涓轰笂鍗堬紱PM浠h〃Post Meridiem锛屾剰涓轰笅鍗堛傝繖涓や釜璇嶆眹涓昏鐢ㄤ簬鏃堕棿鎻忚堪锛屽湪缃戠粶鐜涓紝瀹冧滑鏈夌潃鐗规畩鐨勫惈涔夊拰鐢ㄦ硶銆3. 鍦ㄧ綉缁滅幆澧涓紝AM鍜孭M鍙敤浜庢寚浠h妭鐩挱鏀炬椂闂淬備緥濡傦紝缃戠粶鐢佃鍙扮殑涓妗h妭鐩...
  • 鎺у埗闈㈡澘鈥斺旀椂闂磋缃腑鐨凙M鍜PM绗﹀彿涓嶈兘杞崲涓烘眽瀛
    绛旓細鎺у埗闈㈡澘-鍖哄煙鍜岃瑷閫夐」-鍖哄煙閫夐」-鑷畾涔-鏃堕棿-鏃堕棿鏍煎紡 鍦ㄤ笅鎷夎彍鍗曢噷閫夋嫨tt h:mm:ss鎴杢t hh:mm:ss鍗冲彲锛
  • 鍦↖T琛屼笟涓,AM鍜PM鐨鑱屼綅,鍏蜂綋鍙粈涔
    绛旓細鍦↖T琛屼笟涓锛孉M鎸鐨鏄疉ccount Manager锛屽嵆瀹㈡埛缁忕悊銆備粬浠殑鑱岃矗鏄礋璐e叕鍙镐笟鍔★紝鍏ㄩ潰浜嗚В瀹㈡埛鐨勯渶姹傦紝骞堕拡瀵规у湴鎺ㄥ箍浜у搧鍜屽惛寮曚笟鍔°傚悓鏃讹紝浠栦滑闇瑕佷笌瀹㈡埛寤虹珛骞朵繚鎸佽壇濂界殑鑱旂郴銆傝PM鍒欎唬琛≒roject Manager锛屽嵆椤圭洰缁忕悊銆備粬浠殑涓昏鑱岃矗鏄礋璐i」鐩殑绠$悊鍜屽崗璋冿紝纭繚椤圭洰鎸夋椂銆佹寜璐ㄩ噺瀹屾垚銆
  • 缃戠粶am鍜pm鏄粈涔堟剰鎬
    绛旓細棣栧厛锛岀綉缁AM鍜PM鍙互鐢ㄦ潵琛ㄧず鑺傜洰鐨勬挱鏀炬椂闂淬傛瘮濡傦紝鏌愪釜缃戠粶鐢佃鍙版挱鍑虹殑涓妗h妭鐩紝鍙兘浼氬湪鏃╀笂鐨8鐐笰M寮濮嬫挱鏀撅紝鎴栬呮槸涓嬪崍鐨4鐐筆M寮濮嬫挱鏀俱傚叾娆★紝缃戠粶AM鍜孭M涔熷彲浠ョ敤浜庣ぞ浜ゅ獟浣撳拰鑱婂ぉ杞欢涓傚湪寰崥銆佸井淇°丵Q绛夌ぞ浜ゅ獟浣撳钩鍙颁笂锛屾垜浠父甯稿彲浠ョ湅鍒颁竴浜涘笘瀛愭垨鑰呮秷鎭槸鍦ㄦ煇涓椂闂寸偣鍙戝竷鐨勶紝杩欎釜鏃堕棿鐐瑰氨...
  • 鍦↖T琛屼笟涓,AM鍜PM鐨鑱屼綅,鍏蜂綋鍙粈涔
    绛旓細AM鍏ㄧОAccountManager锛屽嵆瀹㈡埛缁忕悊鐨勬剰鎬濓紝鎸囧叕鍙镐笟鍔$殑璐熻矗浜猴紝鍏ㄦ柟浣嶇殑浜嗚В瀹㈡埛鐨勯渶姹傚苟閽堝鎬ц惀閿鑷繁鐨勪骇鍝併佷簤鎻戒笟鍔★紝涓庡鎴峰缓绔嬪苟淇濇寔濂藉瘑鍒囩殑鑱旂郴銆侾M鏄疨roject Manager鐨勭缉鍐欍 PM鐨涓枃鎰忔濇槸椤圭洰缁忕悊銆
  • 杞欢寮鍙戝洟闃熶腑pm,sm,stm鍒嗗埆鏄粈涔堣亴浣
    绛旓細灞曞紑鍏ㄩ儴 pm:Project Manager 椤圭洰缁忕悊sm:Senior Manager 楂樼骇椤圭洰缁忕悊stm鍏蜂綋涓嶆竻妤,鍙兘鏄富绠,閮ㄩ暱涔嬬被,濂藉儚涓嶅ぇ鐢ㄥ惂 鏈洖绛旇鎻愰棶鑰呴噰绾 5 宸茶禐杩 宸茶俯杩< 浣犲杩欎釜鍥炵瓟鐨璇勪环鏄? 璇勮 鍒嗕韩 鏂版氮寰崥 QQ绌洪棿 涓炬姤 鏀惰捣 1鏉℃姌鍙犲洖绛 鍏朵粬绫讳技闂...
  • 扩展阅读:android免费下载网站 ... 苹果android怎么设置 ... android苹果版下载 ... android下载安装app ... android官方正版下载 ... android download ... android china ... 苹果android在哪里找 ... 100款免费软件网站大全 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网