當前位置:成語大全網 - 漢語詞典 - Android中AM、PM和dumpsys命令的使用總結

Android中AM、PM和dumpsys命令的使用總結

Am指令是activity manager的縮寫,可以啟動服務、廣播、殺死進程、監控等功能。這些函數對於調試程序非常方便。

可以通過adb shell進入Android的Linux命令界面,輸入am -help查看詳細的命令。先介紹幾個簡單的用法。

命令格式如下

命令列表:

原理分析:在Am.java,am命令現實的實現幾乎都是通過調用ActivityManagerService的對應方法來完成的,am monitor除外。比如前面概述中介紹的命令am start-a Android . intention . action . view-d,最後通過調用ActivityManagerService類的startActivityAsUser()方法啟動activityis。再比如am kill-all命令,最終的實現是由ActivityManagerService的killBackgroundProcesses()方法完成的。

我們來談談[選項]和

主要啟動活動命令amstart[選項]

啟動Activity的實現原理:如果有-W參數,調用startActivityAndWait運行,否則startActivityAsUser()。

命令

例如,對pid=12345的進程,發出level=RUNNING_LOW的內存緊縮命令。

level的取值範圍為:隱藏、running _ modern、後臺、RUNNING_LOW、modern、RUNNING_CRITICAL、完整。

am子命令的可選參數start service、stop service、broadcast、kill、profile start、profile stop和dump heap都允許設置為-user

例如,啟動id=10001的用戶的指定服務。

有許多意圖和標誌的參數。為了方便起見,這裏有三種類型的參數:公共參數、額外參數和標誌參數。

例子

(1).基本類型

參數es是額外字符串的首字母縮寫。示例:

(2).數組類型

參數eia是Extra int array的首字母縮寫,多個value值之間用逗號分隔。示例:

(3).數組列表類型

參數efal是Extra float數組列表的首字母,多個值之間用逗號分隔。示例:

Pm工具是包管理器的簡稱。可以使用pm工具安裝應用,查詢應用寶信息,系統權限,控制應用。pm工具是Android開發和測試過程中不可或缺的工具。shell命令格式如下:

原理分析:pm命令的實現在Pm.java,最後大部分都是通過調用PackageManagerService的相應方法來完成的。disbale之後,我在桌面和應用列表中看到了錯誤的應用。

看看所有的包裹,

[選項]參數:

禁用+啟用=應用程序總數;系統+第三方=應用總數。

要查看第三方應用程序:

查看已禁用的包名。

& lt過濾器& gt參數

當FILTER不為空時,只輸出包名中有FILTER字段的應用;當FILTER為空時,默認情況下將顯示所有符合條件的應用程序。

例如,查看帶有天氣字段的包名稱。

[選項]參數:

& lt路徑& gt參數:apk需要安裝的路徑。

Dumpsys是Android自帶的壹個強大的調試工具。從名字就可以看出,主要是用來轉儲當前android系統的壹些信息,是分析手機問題、運行狀態、使用情況的壹種非常有效的手段。

實現原則

dumpsys的源代碼結構其實很簡單,只有壹個dumpsys.cpp。

/frameworks/native/cmds/dump sys/dump sys . CPP

首先通過defaultServiceManager()函數獲取ServiceManager對象,然後通過函數checkService根據dumpsys傳入的參數找到具體的服務,執行服務的dump方法,達到轉儲服務的目的。

不同的Android系統版本支持的命令是不壹樣的。可以通過下面的命令檢查當前手機支持的轉儲服務,先進入adb shell,然後執行下面的命令:dumpsys -l l .這些服務名可能不知道調用的是哪個服務,但是可以通過下面的指令得到指示:服務列表。

有許多服務列表。以下是其中的幾個。

可以通過以下命令打印特定的服務:dumpsys

接下來我主要講壹下dumpsys activity的用法。

命令

選項可選值

Dumpsys活動相當於順序輸出以下七條指令:

Cmd可選值

命令

返回結果

以上輸出結果可以分為以下四個部分。

您也可以只輸出pid或包的過程信息:

以AmberLocker為例進行分析。

場景1:查詢壹個App的所有服務狀態。

解釋:服務類的名字是com。amber . lock screen . locker heartservice,包名是mobi . info life . ez weather . locker . locker _ 2,baseDir(apk路徑)是/data/app/mobi . info life . ez weather . locker . locker _ 2-2/base . apk。

它運行在進程pid=1115中,進程名為mobi . info life . ez weather . locker _ 2,uid=10060,以及創建時間等信息。

場景二:查詢壹個App的所有播放狀態。

場景三:查詢壹個App的所有活動狀態。

場景4:查詢壹個App的流程狀態。

格式:ProcessRecord{Hashcode pid:進程名/uid},進程pid=941,進程名mobi . info life . ez weather . locker . locker _ 2:live,uid=10060。

還有服務、連接、提供者、接收者,

場景5:查詢堆棧的頂層活動

dumpsys的訂單還有很多,這裏就不壹壹列舉了。