如何使用ADB命令检测正在运行的应用程序

Rin*_*eri 51 shell android adb

我有一个运行Jelly Bean OS的Android设备.

ADB如果我知道包名称,有没有办法检测进程是否正在运行?

Ale*_* P. 66

不需要使用grep.ps在Android中可以按COMM值过滤(在Java应用程序的情况下,包名称的最后15个字符)

假设我们要检查是否com.android.phone正在运行:

adb shell ps m.android.phone
USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
radio     1389  277   515960 33964 ffffffff 4024c270 S com.android.phone
Run Code Online (Sandbox Code Playgroud)

通过筛选COMM值选项已被删除psAndroid中7.0.要在Android 7.0中按名称检查正在运行的进程,可以使用pidof命令:

adb shell pidof com.android.phone
Run Code Online (Sandbox Code Playgroud)

如果找到此类进程,则返回PID,否则返回空字符串.

  • 请注意,如果包名称的最后15个字符以数字开头,则会失败.(例如:com.number13.example.debug,其中最后15个字符是"3.example.debug").原因?如果第一个字符是数字,则命令按pid而不是进程名称进行过滤:https://github.com/android/platform_system_core/blob/master/toolbox/ps.c#L295 (4认同)

o0r*_*s0o 32

您可以使用

adb shell ps | grep apps | awk '{print $9}'
Run Code Online (Sandbox Code Playgroud)

产生如下输出:

com.google.process.gapps
com.google.android.apps.uploader
com.google.android.apps.plus
com.google.android.apps.maps
com.google.android.apps.maps:GoogleLocationService
com.google.android.apps.maps:FriendService
com.google.android.apps.maps:LocationFriendService
Run Code Online (Sandbox Code Playgroud)

adb shell ps返回Android设备上所有正在运行的进程的列表,grep apps搜索包含"apps"的任何行,如上所示,它们都是com.google.android.APPS.或者GAPPS,awk提取第9列,在这种情况下是包名.

搜索特定包使用

adb shell ps | grep PACKAGE.NAME.HERE | awk '{print $9}'
Run Code Online (Sandbox Code Playgroud)

adb shell ps | grep com.we7.player | awk '{print $9}'

如果它正在运行,则会出现名称,否则将不会返回结果.


abh*_*ank 14

如果要直接获取当前应用程序的包名称,请使用此adb命令 -

adb shell dumpsys window windows | grep -E 'mFocusedApp'| cut -d / -f 1 | cut -d " " -f 7
Run Code Online (Sandbox Code Playgroud)

使用cut命令删除adb命令结果中的额外信息.这里的原始解决方案.


Ste*_*anQ 10

我只注意到顶部是可用的亚行,所以你可以做这样的事情

  adb shell
  top -m 5
Run Code Online (Sandbox Code Playgroud)

监控前五个CPU占用过程.

要么

  adb shell top -m 5 -s cpu -n 20 |tee top.log
Run Code Online (Sandbox Code Playgroud)

记录一分钟并将输出收集到计算机上的文件中.


小智 5

尝试:

adb shell pidof <myPackageName>
Run Code Online (Sandbox Code Playgroud)

如果应用程序未运行,则标准输出将为空。否则,它将输出PID。